Back to Blog

Как Coin98 молча исправила уязвимость

Code Auditing
January 16, 2022
3 min read

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

Транзакция атаки и первопричина

Транзакция, выявленная нашей внутренней системой мониторинга, привлекла наше внимание. После тщательного расследования мы подтвердили, что причиной является отсутствие контроля доступа к параметру route (то есть фактически к маршрутизатору) в функции swapExactTokensForTokens, как показано ниже:

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

Ниже представлена одна из транзакций атаки.

Скрытое устранение уязвимости

В прошлую пятницу мы написали владельцу проекта в Twitter, однако не получили ответа. Сегодня мы повторно проверили контракт и обнаружили, что был развёрнут новый смарт-контракт (0x83f25d16bdf91f51120032f264dad0e1ab1c8227). В этом новом контракте для параметра 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

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit