Классная задача от Immunefi
Уже в первых числах января Immunefi выложила еще одну задачу, которая меня очень впечатлила.
Для того, чтобы понять всю идею, откройте скрин на весь экран и внимательно прочитайте код строчка за строчкой.
Я напишу ответ не закрытый, как обычно, так как большинство участников точно не знает, в чем тут может быть проблема.
С кодом все ок. По крайней мере, если не знать особенностей работы контрактов токенов и разных EIP.
В случае с ERC20 - все будет ок. Однако проблемы могут начаться, если хакер захочет использовать токены ERC777.
Если кто не знает, то такие токены стандарта ERC777 при трансфере имеют не одну, а целых две callback функции:
_callTokensToSend() - которая вызывается до фактической отправки токенов;
_callTokensReceived() - которая вызывается после отправки токенов.
Обе они в рамках функции transfer(). Поняли теперь, в чем дело в задаче?
Используя _callTokensToSend() токена, хакер может заходить в функцию deposit() несколько раз (reentrancy), и спровоцировать увеличенное количество shares!
Лично я не знал этого момента. Пришлось покопаться в сети, чтобы понять принципы работы.
Интересно, да?
#task #security #erc777
Post #600
304
- 👍 2