Патч для уязвимого контракта

in eos •  6 years ago  (edited)

Оригинал: https://medium.com/@eoscafeblock/contract-vulnerability-patch-57b948cacc3a

Уязвимость была обнаружена в нескольких контрактах использующих уведомления от других контрактов. Все параметры должны быть четко проверенны. Проверка только лишь contract name и action name не являеться достаточной.

Для всех контрактов полагающихся на уведомления при переводе из eosio.token следует сделать эту проверку незамедлительно:

if (transfer.to != _self) return;

Если вы выполняете бизнес-логику только для входящих трансферов, но повторно передаете действие как для входящих так и для исходящих трансферов, пожалуйста используйте:

if (transfer.from == _self || transfer.to != _self ) return;

Обратите внимание: Эта уязвимость на контрактном уровне, а не на системном уровне. Проверки упомянутые в этой статье есть также в примере кода от B1 здесь: https://gist.github.com/tbfleming/d230f3ab2998e8858d3e51af7e4d9aeb

Обновление: EOS Bet и многие другие контракты уже исправили эту уязвимость. Обязательно поделитесь данным патчем с разработчиками которые этого не знают.

Код для распространения будет выпущен позже чтобы обеспечить безопасность для неисправленных dApps.

Особая благодарность Кедару из LibertyBlock и Бену из shEOS за тестирование уязвимости.

Telegram — @eoscafeblock
Twitter — @eoscafeblock
Medium — @eoscafeblock
Steemit — @eoscafeblock
Website — www.eoscafeblock.com

Переведено CryptoLions

photo_122x122.jpg

Website

Telegram

Steemit

Twitter

GitHub

Meetup

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!