
В прошлую пятницу наша система мониторинга обнаружила атаку на смарт-контракт coin98 (0x8aaf408e06feed6a6a6182ea3c464035748b9b31 — контракт-жертва) в сети BSC. Мы немедленно связались с владельцем проекта через личные сообщения в Twitter, но не получили ответа. Поскольку на тот момент уязвимость все еще существовала, мы не стали предавать ее огласке. Спустя пару часов мы обнаружили, что владелец проекта создал новый контракт, в котором эта уязвимость была исправлена. Таким образом, теперь можно безопасно описать суть уязвимости и способ ее устранения.
Атакующая транзакция и первопричина
Транзакция, выявленная нашей внутренней системой мониторинга, привлекла наше внимание. После тщательного расследования мы подтвердили, что проблема заключается в отсутствии контроля доступа к параметру route (фактически, роутеру) в функции swapExactTokensForTokens:

Этот контракт слепо доверял параметру route, после чего вызывал функцию swapExactTokensForTokens роутера. Перед этим он одобрял (approve) использование всех токенов, принадлежащих контракту-жертве, для данного route. Однако параметр route мог быть передан злоумышленником. В этом случае атакующий мог перевести все токены жертвы на свой адрес, а затем обменять их на WBNB для получения прибыли.
Ниже представлена одна из атакующих транзакций.

Скрытое исправление уязвимости
Мы отправили владельцу проекта личное сообщение в Twitter в прошлую пятницу, но ответа не получили. Сегодня мы повторно проверили контракт и обнаружили, что был развернут новый смарт-контракт (0x83f25d16bdf91f51120032f264dad0e1ab1c8227). В этом новом контракте предусмотрен «белый список» (whitelist) для параметра route:

Заключение
Мы часто сталкиваемся со случаями, когда смарт-контракты слепо доверяют входящим параметрам. Это ДЕЙСТВИТЕЛЬНО создает критическую дыру в безопасности.
НЕ ДОВЕРЯЙТЕ НИКАКИМ ПАРАМЕТРАМ, КОТОРЫЕ НАХОДЯТСЯ ВНЕ ВАШЕГО КОНТРОЛЯ!
О компании BlockSec
BlockSec — передовая компания в сфере безопасности блокчейна, основанная в 2021 году группой всемирно признанных экспертов по безопасности. Компания стремится повысить уровень безопасности и удобства использования развивающегося мира Web3, чтобы способствовать его массовому внедрению. Для этого BlockSec предоставляет услуги аудита безопасности смарт-контрактов и EVM-совместимых сетей, платформу Phalcon для безопасной разработки и проактивного блокирования угроз, платформу MetaSleuth для отслеживания и расследования транзакций, а также расширение MetaSuites для эффективной работы в сфере Web3.
На сегодняшний день компания обслужила более 300 уважаемых клиентов, таких как MetaMask, Uniswap Foundation, Compound, Forta и PancakeSwap, а также привлекла десятки миллионов долларов США в ходе двух раундов финансирования от ведущих инвесторов, включая Matrix Partners, Vitalbridge Capital и Fenbushi Capital.
Официальный сайт: https://blocksec.com/
Официальный аккаунт в Twitter: https://twitter.com/BlockSecTeam



