Вчерашний взлом Binance связан с EIP-7702 — очень опасной функцией, которая мне давно не нравится. Заодно воспользуюсь случаем и предупрежу вас.
Обычно многие думают: если держать приватный ключ в секрете и никому его не показывать, то всё будет нормально. Особенно если пользуешься холодным кошельком: каждый раз, чтобы перевести деньги, нужно подключить устройство и физически нажать кнопку подтверждения. Поэтому кажется, что как бы ни старался хакер, он всё равно не сможет нажать кнопку за тебя.
Но на деле с этим EIP-7702 даже холодный кошелёк не спасёт. Примерно это работает так: заходишь в dapp, а там появляется запрос на подпись — мол, нужно обновить кошелёк или активировать какую-то функцию. Подключаешь кошелёк, на экране зачастую просто куча непонятных hex-кодов, и ты, чтобы поскорее закончить, подтверждаешь запрос. А эта подпись авторизации может позволить адресу твоего кошелька выполнять код контракта.
Если контракт вредоносный, хакер сможет использовать твой же кошелёк для переводов — и тебе не придётся подписывать какие-либо дополнительные транзакции.
То есть ты по-прежнему хранишь холодный кошелёк в сейфе, сид-фраза защищена настолько, что даже ты сам её не знаешь, а деньги всё равно уходят в закат. Это как запереть дверь на сто замков, а потом подписать кому-то доверенность с полным правом распоряжаться твоим домом.
Опасность ещё и в том, что это разрешение может действовать долго. Раньше, если подписал что-то не то, терял один токен — заходил на сайты для отзыва разрешений, отменял его, и дело с концом. А здесь права выдаются на уровне аккаунта: из кошелька можно перевести вообще что угодно, а обычные сайты для отзыва разрешений с этим не справляются. Чтобы отменить разрешение, нужно подписать новую авторизацию EIP-7702, указав в ней адрес 0, а затем отправить её в блокчейн. Короче, большинство людей понятия не имеют, как это сделать.
Вот почему мне не нравится эта конструкция.
$NEAR $BTC $ETH
Обычно многие думают: если держать приватный ключ в секрете и никому его не показывать, то всё будет нормально. Особенно если пользуешься холодным кошельком: каждый раз, чтобы перевести деньги, нужно подключить устройство и физически нажать кнопку подтверждения. Поэтому кажется, что как бы ни старался хакер, он всё равно не сможет нажать кнопку за тебя.
Но на деле с этим EIP-7702 даже холодный кошелёк не спасёт. Примерно это работает так: заходишь в dapp, а там появляется запрос на подпись — мол, нужно обновить кошелёк или активировать какую-то функцию. Подключаешь кошелёк, на экране зачастую просто куча непонятных hex-кодов, и ты, чтобы поскорее закончить, подтверждаешь запрос. А эта подпись авторизации может позволить адресу твоего кошелька выполнять код контракта.
Если контракт вредоносный, хакер сможет использовать твой же кошелёк для переводов — и тебе не придётся подписывать какие-либо дополнительные транзакции.
То есть ты по-прежнему хранишь холодный кошелёк в сейфе, сид-фраза защищена настолько, что даже ты сам её не знаешь, а деньги всё равно уходят в закат. Это как запереть дверь на сто замков, а потом подписать кому-то доверенность с полным правом распоряжаться твоим домом.
Опасность ещё и в том, что это разрешение может действовать долго. Раньше, если подписал что-то не то, терял один токен — заходил на сайты для отзыва разрешений, отменял его, и дело с концом. А здесь права выдаются на уровне аккаунта: из кошелька можно перевести вообще что угодно, а обычные сайты для отзыва разрешений с этим не справляются. Чтобы отменить разрешение, нужно подписать новую авторизацию EIP-7702, указав в ней адрес 0, а затем отправить её в блокчейн. Короче, большинство людей понятия не имеют, как это сделать.
Вот почему мне не нравится эта конструкция.
$NEAR $BTC $ETH
