Функция с ошибками была предназначена для того, чтобы пользователи могли предоставлять свою собственную информацию о маршрутизации, но код не ограничивал маршрутизаторы предварительно утвержденным списком.
Согласно отчету о вскрытии, опубликованному командой на официальном сервере Discord от 17 февраля, мультичейн-агрегатор бирж Dexible подвергся эксплойту, в результате чего была потеряна криптовалюта на сумму 2 миллиона долларов.
По состоянию на 17 февраля интерфейс Dexible показывал всплывающее предупреждение о взломе всякий раз, когда пользователи переходят к нему.
В 6:17 утра по всемирному координированному времени команда сообщила, что обнаружила «потенциальный взлом контрактов Dexible v2» и расследует проблему. Примерно через девять часов она опубликовала второе заявление о том, что теперь известно, что «2 047 635,17 долларов США были украдены с 17 адресов трейдеров: с 4 в основной сети, и с 13 в сети Arbitrum».
Отчет о вскрытии был выпущен в 16:00 UTC в виде файла PDF и опубликован на Discord, и команда заявила, что «активно работает над планом исправления».
В отчете команда заявляет, что заметила что-то неладное, когда один из ее основателей по неизвестным в то время причинам вывел криптовалюту на сумму 50 000 долларов из своего кошелька. После расследования команда обнаружила, что злоумышленник использовал функцию selfSwap приложения для перемещения криптовалюты на сумму более 2 миллионов долларов от пользователей, которые ранее разрешили приложению перемещать свои токены.
Функция selfSwap позволяла пользователям указывать адрес маршрутизатора и связанные с ним данные вызовов для обмена одного токена на другой. Однако в коде не было прописано списка предварительно утвержденных маршрутизаторов. Итак, злоумышленник использовал эту функцию для маршрутизации транзакции от Dexible к каждому токен-контракту, перемещая токены пользователей из их кошельков в собственный смарт-контракт злоумышленника. Поскольку эти вредоносные транзакции исходили от Dexible, пользователи которого уже разрешили тратить свои токены, токен-контракты не блокировали транзакции.
Получив токены в собственный смарт-контракт, злоумышленник вывел монеты через Tornado Cash на неизвестные кошельки BNB.
Dexible приостановила свои контракты и призвала пользователей отозвать для них авторизацию токенов.
Обычная практика утверждения токенов на большие суммы иногда приводила к потерям для пользователей криптовалюты из-за ошибочных или откровенно злонамеренных контрактов, в результате чего некоторые эксперты предупреждали пользователей о необходимости отзывать одобрения на регулярной основе. Внешние интерфейсы для большинства приложений Web3 не позволяют пользователям напрямую редактировать количество утвержденных токенов, поэтому пользователи часто теряют весь баланс своих токенов, если в приложении обнаруживается брешь в безопасности. MetaMask и другие кошельки пытались решить эту проблему, позволяя пользователям редактировать утверждения токенов на этапе подтверждения кошелька, но многие пользователи криптовалюты до сих пор не осознают риск неиспользования этой функции.