EIP-712: Скрытая угроза
Сегодня мы разберемся с EIP-712
Что такое EIP-712
Данный EIP позволяет вам давать апрув токенов по подписи, то есть если вы уже привыкли, что все апрувы даются как отдельная транзакция, то не поверите, апрув можно организовать и при помощи простой подписи, что сэкономит вам некоторое количества газа
Данный EIP реализован у некоторых ERC20 токенов, среди них $USDC, $UNI и другие
В чем же опасность?
Все давно привыкли, что подпись не несет в себе никакой опасности, но потом я ТУТ продемонстрировал вам, как можно украсть все средства с вашего кошелька при помощи подписи. Но у того способа была одна особенность - большая красная предупредительная надпись от метамаска, которая предупреждала вас о рисках. В данном же случае, если злоумышленник подделает подпись для EIP-712, то метамаск вас никак не предупреждит и вы даже не узнаете, что вас заскамили!
Как это работает?
Для начала вам надо понять как работают сигнатуры, но я уже это объяснял + это легко гуглится, поэтому пропустим этот момент
Теперь, когда мы уже понимаем как примерно работают сигнатуры, нам надо составить эту самую сигнатуру. От токена к токену может отличаться тип EIP-712, так что в идеале к каждому токену надо искать свой подход в составлении сигнатуры
Далее нам надо достать v, r и s из нашей сигнатуры и передать их и еще несколько параметров в функцию permit на контракте токена, к которому мы и хотим получить доступ
Как мы можем увидеть, в самом конце функции после прохождения всех проверок у нас идет вызов функции allowance, которая и отвечает за апрув
Для тех кто хочет более подробно разобраться с работой всего этого механизма - я подготовил концепт скам сайта, вот ссылка на него: https://github.com/ortomich/scam_with_sign_2
Надеюсь статья была интересной и понятной!