Статьи

By finding critical vulnerability missed in previos Beosin audit...

BugBlow предотвратил взлом DeFi приложения, обнаружив критическую уязвимость, пропущенную в предыдущем аудите от Beosin

Клиент: AquaProtocol
Aqua Protocol — децентрализованная платформа кредитования, основанная на Liquid Staking Tokens (LST) [1], с фокусом на TON Coin в сети Proof-of-Stake TON. Протокол предоставляет займ через выпуск AquaUSD — стейблкойна, обеспеченного избыточным залогом и привязанный 1:1 к доллару США.
Платформа ранее проходила аудит от компании Beosin, но обеспокоенная взломами похожих проектов в прошлом [2], команда AquaProtocol решила провести повторный аудит смарт-контрактов. Из всех возможных аудиторов, BugBlow, недавно сформировавшаяся команда, была выбрана за высокую квалификацию, большой опыт в индустрии и наличие специализированных сертификатов. Аудитором безопасности был Александр Долгавин, PhD в области кибербезопасности.
Аудит начался с изучения документации и анализа исходного кода. В течение первых нескольких дней Александр задавал уточняющие вопросы, чтобы глубже разобраться в логике работы и архитектуре платформы провел дополнительный аудит,
На следующем этапе Александр сосредоточился на выявлении критических секций - работы с балансами, покупка, продажа ассетов, внешние источники данных. Его задача состояла в том, чтобы понять неявные предположения разработчиков — какие действия ожидаются от пользователей и как эти предположения могут быть злоупотреблены. Хакеры, как правило, ищут слабые места, в которых система полагается на предсказуемое поведение, и пытаются нарушить эти предположения, используя платформу не по назначению.
Одним из таких найденных ключевых предположений было то, что протокол автоматически доверяет подписанным ценам на активы, которые приносят пользователи с каждой транзакцией. Александр обнаружил, что протокол может принимать устаревшие (протухшие) подписанные данные о ценах без проверки их актуальности в течении некоторого периода. Это позволяет хакерам воспользоваться ситуацией: приобрести активы по заниженной цене, а затем, отправив устаревшие данные с более высокой ценой, продать их по завышенной стоимости. Повторяя такие действия, атакующий может полностью истощить ресурсы протокола (Рисунок 1).
Эта уязвимость является классическим примером Replay-атаки, от которой в прошлом страдали многие протоколы [3].
Рисунок 1. Replay атака в Aqua Protocol
Этот сценарий был сымитирован на безопасном локальном окружении. Как только предположение Александра подтвердилось, команда разработчиков получила информацию об уязвимости и проконсультировавшись с Александром, начала работу над исправлением.
Повторяя анализ и проверку на протяжении двух недель, Александр продолжал изучать каждую строчку кода протокола. В результате были обнаружены ещё три уязвимости средней степени риска. После завершения этого этапа, Александр начал проверку протокола на наличие уязвимостей из списка прошлых уязвимостей, накопленных в смарт-контрактах за годы их использования в проектах.
Когда все обнаруженные уязвимости были устранены, Александр провёл финальный аудит, чтобы убедиться, что все проблемы успешно решены. Результаты аудита были опубликованы в публичном отчёте, доступном по ссылке в конце этой статьи.
AquaProtocol выразил благодарность BugBlow за профессионализм и глубокий технический анализ, отметив, Александр Долгавин сыграл ключевую роль в обеспечении безопасности их проекта.
Ссылка на полный отчет
[3] https://www.coindesk.com/markets/2016/07/29/rise-of-replay-attacks-intensifies-ethereum-divide