Взлом BadgerDAO / Посмертное вскрытие.
@Ghost_In_The_Block
Следователи считают, что неавторизованный ключ API позволил вредоносному коду установить пользователю разрешение Web3 на перевод на кошелек хакера.
Краткие выводы.
После взлома инженеры Badger работали с фирмой по кибербезопасности Mandiant, чтобы расследовать инцидент и подготовили следующий первоначальный отчет.
Согласно публичным сообщениям, в настоящее время Badger считает, что инцидент с фишингом, произошедший 2 декабря, был результатом вредоносного кода, предоставленного Cloudflare Workers.
Cloudflare Workers - это интерфейс для запуска скриптов, которые работают с веб-трафиком и изменяют его по мере прохождения через прокси Cloudflare.
Злоумышленник запустил рабочий скрипт с помощью скомпрометированного ключа API, который был создан без ведома или авторизации инженеров Badger.
Хакер использовал этот доступ к API для периодического внедрения вредоносного кода в приложение Badger таким образом, чтобы он воздействовал только на часть пользовательской базы.
Badger ценит терпение нашего сообщества, пока мы пытаемся найти баланс между нашей приверженностью прозрачности и тем фактом, что это все еще продолжающееся расследование с быстро меняющейся информацией.
В настоящее время мы рассказываем о следующей последовательности событий, чтобы помочь защитить наше сообщество и помочь другим, кто может стать жертвами аналогичных атак.
- В конце сентября пользователи на форуме поддержки сообщества Cloudflare сообщили, что неавторизованные пользователи могут создавать учетные записи, а также создавать и просматривать (глобальные) ключи API (которые нельзя удалить или деактивировать) до завершения проверки электронной почты (см. Форум Cloudflare).
Было отмечено, что злоумышленник может дождаться проверки электронной почты и завершения создания учетной записи, после чего у него будет доступ к API.
- Изучив журналы Cloudflare после эксплойта, Badger обнаружил несанкционированное создание учетной записи и генерацию ключей API для трех учетных записей Badger: два в конце августа, один в начале сентября.
- В середине сентября Badger по незнанию завершил создание аккаунта для одной из этих трех взломанных учетных записей, которые использовались для законных действий по управлению Cloudflare.
Пользовательский интерфейс не делал очевидным тот факт, что учетная запись уже была создана, и соответственно был сгенерирован ключ API.
- 10 ноября злоумышленник начал использовать свой API-доступ для внедрения вредоносных скриптов через Cloudflare Workers в HTML-код app.badger.com . Скрипт перехватывает транзакции web3 и предлагает пользователям разрешить подтверждение внешнего адреса для работы с токенами ERC-20 в их кошельке. 20 ноября было получено первое вредоносное одобрение для кошелька эксплуататора.
- В своей атаке мошенник использовал несколько методов защиты от обнаружения. Он применял и удалял сценарий периодически в течение ноября, часто на очень короткие периоды времени. Хакер также нацелился на кошельки только с определенным балансом и явно избегал нацеливания на кошельки лиц, подписавших Dev Multisig.
Наконец, взломщик получил доступ к API с нескольких IP-адресов прокси и VPN, и изменил сценарий при каждом развертывании, чтобы каждый из них имел уникальный хэш, отображая статические индикаторы ограниченной ценности.
- Сообщество Badger через Discord объявило о крупной подозрительной транзакции 2 декабря.
- Badger немедленно приостановил большую часть работы хранилища в течение 30 минут после получения предупреждения.
Несколько старых контрактов с одним недоступным хранителем были приостановлены примерно через 15 часов. - После этого проишествия были заменены ключи API Cloudflare, изменены пароли, а MFA был передан после обнаружения инцидента.
Поскольку этот эксплойт задействовал векторы Web 2.0, которые необычны для атак DeFi, мы предоставим краткое вскрытие произошедших событий Web 2.0 и полное вскрытие Web 3.0, которое соответствует стандартам отчетности в DeFi.
Badger предоставляет следующие сведения, чтобы помочь другим людям выявить похожий взлом Web2.
Самым ранним свидетельством того, что злоумышленник пытался завладеть учетной записью, является 20 августа 2021 года.
Согласно ответам на форуме Cloudflare, уязвимость была устранена примерно 29 сентября.
Вот как выглядело приложение Badger с внедренным кодом:
Архивная версия приложения Badger с внедренным кодом
В настоящее время Badger редактирует вредоносные скрипты из приведенного ниже резюме, пока продолжается расследование.

Шаги по смягчению последствий
2 декабря 2021 года, примерно в 2:05 по Гринвичу Badger был предупрежден о подозрительной активности на платформе.
Атаку заметил член сообщества, когда из хранилища Yearn wBTC были изьяты около 900 BTC .
После быстрого расследования проблема была отмечена как неотложная и наиболее приоритетная.
В 3:14 Badger начал приостанавливать выполнение всех контрактов на хранилище и стратегические контракты.
Согласно BIP-33 , адреса, утвержденные в контракте хранителя, имеют возможность приостанавливать контракты.
Функция приостановки этих контрактов действует таким образом, что блокирует любой перевод, пополнение или снятие средств для хранилищ ERC20, а также вывод средств со стратегий и любой выпуск / погашение ibBTC до тех пор, пока для них не будет вызвана функция возобновления.
Снятие с паузы ограничено Dev Multisig и должно быть одобрено руководством. Восемь старых стратегий и одно хранилище, опять же, требуют временной блокировки для возобновления.
Большинство контрактов было приостановлено к 3:30 утра.
Некоторые старые хранилища (а именно bcrvRenBTC, bcrvSBTC, bcrvTBTC, bBADGER, bharvestcrvRenBTC и buniWbtcBadger) не имеют функции приостановки в контракте хранилища.
Тем не менее их стратегии были приостановлены, чтобы предотвратить снятие средств.
В то время инженеры Badger не могли получить доступ к учетной записи-хранителю стратегий bBADGER, bharvestcrvRenBTC и buniWbtcBadger.
Дальнейшее расследование показало, что стратег, который помог придумать эту идею смарт-контракта, также имел возможность приостановить стратегию.
В итоге это было сделано с помощью его учетной записи.
Список всех приостановленных txs можно найти здесь .
На графиках ниже показано, как движение токенов Badger Sett останавливается после паузы.
[Ось Y показывает необработанное количество токенов Badger Sett]

Стоит отметить, что последний злонамеренный выход из непостоянных хранилищ произошел в 4:57 (UTC+0).
Все выводы средств, которые произошли после этого и до момента приостановки последней стратегии, проводились обычными пользователями.
Также стоит упомянуть, что хакер скомпрометировал не-сетевые токены, такие как BADGER, wBTC, CVX и cvxCRV, и смог ликвидировать их после того, как Badger установил паузы.
To be continued...
Финальная часть с описанием атаки и шагов, которые предпринимает Badger, чтобы нивелировать ее последствия.
Оригинал статьи здесь.
Перевод подготовлен командой Telegram-канала
@Ghost_In_The_Block
