От лекарства к яду: Почему пермит стал источником риска
1. Что такое разрешение?
Давайте начнем с небольшой истории о том, как занять деньги:
Представьте, что я хочу занять 1 миллион у своего друга, Джека Ма. Не раздумывая, Джек берет трубку и звонит в банк, подтверждая свою личность и давая указание разрешить мне снять 1 миллион. Банк регистрирует это разрешение, и все, что мне нужно сделать, — это посетить банк, представиться и снять разрешенную сумму. Если банк не сможет найти разрешение, мой запрос будет отклонен.
Теперь давайте посмотрим, как изменится этот процесс при использовании другого метода — «Разрешение». В этом сценарии, когда я прошу у Джека 1 миллион, он случайно достает чек, вписывает сумму, подписывает его и передает мне. Я отношу чек в банк, и даже без записи об авторизации банк обналичивает его на основании подписи Джека.
Это иллюстрирует разницу между Approve и Permit. Approve, неотъемлемая функция ERC-20, широко используется с момента запуска Ethereum. Но почему для достижения того же эффекта позже была введена функция Permit через ERC-2612?
2. Почему потребовалось разрешение?
Предложение ERC-2612 было представлено в марте 2019 года и окончательно оформлено в октябре 2022 года. Его разработка совпала с несколькими скачками цен на газ Ethereum. Ажиотаж на рынке во время «бычьих бегов» заставлял пользователей тратить больше средств на оплату газа для ускорения транзакций, когда даже преимущество в один блок могло означать существенную прибыль.
Однако это явление создавало дополнительные трудности для пользователей, так как процесс двух транзакций, необходимый для Approve, становился дорогостоящим, особенно для тех, кто располагал небольшими средствами. Внедрение Permit позволило подписывать сделки в автономном режиме, устранив необходимость в немедленной авторизации на цепи. Это изменение означало, что авторизация может быть предоставлена одновременно с передачей токена, подобно обналичиванию чека, не требующего предварительного одобрения банка.
Хотя это казалось выгодным — экономия Джеку на телефонных звонках и снижение комиссии за транзакции — это нечаянно открыло ящик Пандоры.
3. Стремительный рост рисков
До появления Permit хакеры часто прибегали к фишинговым методам, требующим от пользователей подписывать транзакции Approve, что влекло за собой плату за газ и вызывало тревогу. Даже если пользователь случайно нажимал на кнопку, временная задержка транзакций на цепочке позволяла ему отменить действие новой транзакцией.
Разрешение, однако, изменило игру. Он избавляет от платы за газ, требуя только подпись, что снижает бдительность пользователя. Поскольку подписание происходит в автономном режиме, хакеры могут взять ситуацию под свой контроль и использовать ее в любой момент, извлекая максимальную выгоду.
Последствия этого изменения очевидны по растущему числу жертв фишинга и похищенным суммам. По данным @ScamSniffer:
- В 2023 году потери от фишинга составят 295 миллионов долларов.
- К середине 2024 года эта цифра уже превысила 314 миллионов долларов.
- В третьем квартале 2024 года произошел значительный инцидент, когда один из кошельков стал жертвой фишинговой атаки в Перми, в результате чего было потеряно 12 000 $spWETH на сумму около 30 миллионов долларов.
Разработчики, предложившие Permit, скорее всего, не ожидали такого исхода, изначально нацеленного на снижение затрат на газ и повышение удобства работы пользователей. То, что задумывалось как обоюдоострый меч, оказалось острым ножом, разрезающим защитные барьеры вокруг активов пользователей.
Появились похожие методы автономной подписи, например Permit2 от Uniswap, что увеличивает зависимость от автономной подписи и повышает фишинговые риски.
4. Как защитить себя
Перед лицом этой надвигающейся угрозы пользователи могут предпринять ряд мер предосторожности, чтобы уменьшить потери:
1. Повысить осведомленность
- Остерегайтесь соблазнов, связанных с авиаперевозками: Десанты могут быть заманчивыми, но многие из них являются попыткой фишинга. Всегда проверяйте легитимность рассылки через несколько источников, прежде чем участвовать в ней.
- Избегайте слепых подписей: Если вы случайно зашли на фишинговый сайт и появилось окно транзакции, внимательно изучите ее детали. Такие термины, как Permit, Permit2, Approve или IncreaseAllowance, указывают на потенциальные проблемы с авторизацией и требуют осторожности. Аппаратные кошельки, такие как Keystone, могут помочь, анализируя и отображая детали транзакции, предотвращая импульсивные действия.
2. Используйте инструменты
- ScamSniffer: Это расширение для браузера предупреждает пользователей перед вводом подозрительных URL-адресов, позволяя им своевременно прекратить взаимодействие.
- Отменить: Revoke.cash отображает записи авторизации токенов в вашем кошельке, советуя пользователям отозвать все подозрительные или неограниченные авторизации. Регулярная очистка авторизаций минимизирует риски.
3. Изоляция активов и кошельки с несколькими подписями
Поговорка «не кладите все яйца в одну корзину» применима и к криптоактивам. Храните значительные активы в холодных кошельках, таких как Keystone, а для ежедневных транзакций используйте небольшие горячие кошельки. Таким образом, даже если один кошелек будет взломан, не все активы окажутся под угрозой.
Дополнительную защиту могут обеспечить кошельки с несколькими подписями. Доступ к активам возможен только при наличии заранее определенного количества одобрений кошелька, что гарантирует, что один скомпрометированный кошелек не приведет к полной потере.
5. Заключение
Хотя мы не можем отрицать ценность, которую приносит Permit, растущее число краж говорит о том, что риски, связанные с ним, могут перевесить его преимущества. Подобно некогда распространенному методу ethsign, от которого в итоге отказались из-за проблем с безопасностью, Permit сейчас переживает критический момент. Разработчики должны вдумчиво подумать, стоит ли совершенствовать этот метод или отказаться от него в дальнейшем.