Согласно отчету проекта LI.FI и Twitter-аккаунту Дэниела фон Фанге, мы зафиксировали атаку на LI.FI 20 марта 2022 года. Поскольку подробного технического анализа этой уязвимости не представлено, далее мы проанализируем саму атаку. Мы установили, что первопричиной этой атаки является непроверенный внешний вызов (unchecked external call).
Транзакция атаки
Мы начали с транзакции атаки, чтобы проиллюстрировать процесс нападения. На скриншоте ниже показан результат работы нашей системы визуализации транзакций.

Как видно на изображении выше, весь процесс атаки довольно прост: злоумышленники не использовали вредоносные смарт-контракты и не прибегали к мгновенным займам (flashloan). Единственный шаг, который выполнил атакующий, — вызов функции swapAndStartBridgeTokensViaCBridge(0x01c0a31a) в контракте CBridgeFacet, что привело к переводу различных токенов (например, USDC, MATIC, RPL, GNO, USDT, MVI, AUDIO, AAVE, JRT и DAI) от разных отправителей на EOA-адрес, контролируемый атакующим.
Анализ кода
Затем мы углубились в код целевого логического контракта.


Согласно приведенному выше коду, swapAndStartBridgeTokensViaCBridge является точкой входа для кроссчейн-транзакции в исходной сети.

Проект LIFI заявляет, что может находить лучшие маршруты для пользователей с помощью системы Smart Routing, которая работает вне сети (off-chain). В частности, веб-интерфейс вычисляет лучший маршрут и кодирует параметры (включая адрес контракта обмена и путь маршрутизации) в параметры функции swapAndStartBridgeTokensViaCBridge.
Очевидно, что проект LIFI не учел, что эта функция может быть вызвана любым аккаунтом в блокчейне, поскольку она не выполняет никаких проверок параметров, таких как «белый список» или допустимое проскальзывание (slippage). Самое серьезное заключается в том, что контракт CBridgeFacet требует от пользователей предварительного одобрения (approve) токенов, что и поставило средства пользователей под угрозу.
Ущерб
В результате атакующий украл средства пользователей LIFI, которые ранее дали одобрение на использование своих токенов контракту CBridgeFacet, вызвав функцию swapAnStartBridgeTokensViaCBridge, которая, в свою очередь, активировала функции transferFrom для различных токенов. Статистика потерь приведена в таблице ниже. Общие убытки составили около 596 тысяч долларов, что практически совпадает со статистикой от проекта LIFI.
| Токен | Количество | Цена |
|---|---|---|
| GNO | 0.94 | 310.22 |
| USDC | 202,012.28 | 0.999655 |
| MATIC | 3,144.89 | 1.46 |
| AUDIO | 1,202.37 | 1.10 |
| AAVE | 8.99 | 149.99 |
| RPL | 44.86 | 31.2 |
| MVI | 22.95 | 131.82 |
| USDT | 368,745.29 | 1 |
| DAI | 8,421.49 | 0.999847 |
| JRT | 136,805.06 | 0.03789613 |
Уроки
LIFI — это агрегатор кроссчейн-мостов, а данный контракт является входом для кроссчейн-переводов. Уязвимость не связана со сложной кроссчейн-логикой, которая становилась причиной предыдущих инцидентов безопасности в данной сфере. Первопричиной этой атаки является непроверенный внешний вызов — одна из 10 самых распространенных проблем в Solidity.
Поскольку проекты DeFi становятся всё более сложными, разработчикам необходимо уделять больше внимания написанию безопасного кода в дополнение к реализации бизнес-логики. Мы настоятельно рекомендуем проектам НЕ развертывать в блокчейне контракты, не прошедшие аудит.
О компании BlockSec
BlockSec — передовая компания в области безопасности блокчейна, основанная в 2021 году группой всемирно признанных экспертов по безопасности. Компания стремится повысить уровень безопасности и удобства использования для развивающегося мира Web3, чтобы способствовать его массовому внедрению. Для этого BlockSec предоставляет услуги аудита безопасности смарт-контрактов и EVM-сетей, платформу Phalcon для безопасной разработки и проактивного предотвращения угроз, платформу MetaSleuth для отслеживания и расследования транзакций, а также расширение MetaDock для эффективной навигации разработчиков Web3 в криптомире.
На сегодняшний день компания обслужила более 300 уважаемых клиентов, таких как MetaMask, Uniswap Foundation, Compound, Forta и PancakeSwap, и получила десятки миллионов долларов США в двух раундах финансирования от выдающихся инвесторов, включая Matrix Partners, Vitalbridge Capital и Fenbushi Capital.
Официальный сайт: https://blocksec.com/
Официальный аккаунт в Twitter: https://twitter.com/BlockSecTeam



