Wintermute
- Техника
- Phishing
- Классификация
- Social Engineering
- Тип цели
- Other
- Затронутые сети
- Ethereum
- Источник
- Нет публичной ссылки на источник
20 сентября 2022 года маркет-мейкер Wintermute сообщил, что злоумышленник вывел около $160 млн в стейблкоинах и других токенах из одного из его DeFi-хранилищ на Ethereum. Основатель компании Евгений Гаевой уточнил, что причина — не баг в смарт-контракте, а компрометация приватного ключа (The Hacker News).
Как устроена атака
Админ-адрес хранилища — кошелёк, которому контракт разрешал выводить средства, — был сгенерирован инструментом Profanity: популярным open-source генератором «вэнити»-адресов с заданным префиксом (Wintermute использовала адреса вида 0x000000..., чтобы экономить газ на частых транзакциях). За неделю до взлома исследователи 1inch раскрыли уязвимость в самом Profanity: инструмент генерировал приватный ключ не из полного пространства значений, а из значительно урезанного и предсказуемого для GPU seed — поэтому при достаточной вычислительной мощности можно было восстановить приватный ключ по любому публичному адресу, когда-либо созданному этим инструментом (Forbes). Формально это ближе к атаке на слабую энтропию и предвычислению, чем к перебору по всему 256-битному пространству ключей — но по факту это та же категория, что и в нашей базе: ключ не украли и не выудили фишингом, а вычислили.
У Wintermute было десять кошельков, сгенерированных Profanity, и компания утверждает, что после публикации уязвимости начала выводить их из обращения. Один кошелёк «по человеческой ошибке» остался незащищённым, по словам Гаевого, — и это оказался именно админ-кошелёк хранилища. Атакующий вычислил его приватный ключ, вызвал административные функции контракта напрямую и вывел средства. Глава безопасности Polygon Мудит Гупта отметил, что сам контракт отработал ровно так, как задумано: уязвимость была не в коде, а в скомпрометированном ключе (The Block).
Что было дальше
Wintermute заявила, что инцидент затронул только DeFi-операции; централизованные и OTC-направления не пострадали. Гаевой сообщил, что компания осталась платёжеспособной — капитал заметно превышал размер потерь, — и публично предложил атакующему 10%-й «white hat»-бонус (около $16 млн) за возврат остального, предупредив, что окно для переговоров быстро закрывается. Атакующий на связь не вышел и вместо этого провёл средства через Curve и Tornado Cash. Средства так и не были возвращены, о задержаниях не сообщалось. Wintermute продолжила работу без остановки, включая своевременное погашение существующих долговых обязательств.
Что из этого следует
- Генераторы вэнити-адресов без аудированного источника энтропии — структурный риск для любого кошелька, который держит реальные средства: проблема невидима, пока кто-то не реверс-инжинирит генератор, — а после этого задним числом скомпрометированными оказываются все адреса, когда-либо им созданные.
- Привилегированный «админ»-кошелёк смарт-контракта несёт тот же радиус поражения, что и кошелёк, держащий средства напрямую, — модель доступа и план реагирования на инцидент должны закладывать это заранее, а не постфактум.
- Частичное устранение уязвимости после публичного раскрытия почти равносильно его отсутствию: Wintermute знала о проблеме Profanity и вывела из обращения девять кошельков из десяти — но хватило и одного пропущенного. Как только генератор ключей признан скомпрометированным, каждый когда-либо созданный им адрес нужно считать скомпрометированным и переносить средства, а не «вносить в блэклист».
- Разделение DeFi-, CeFi- и OTC-контуров на отдельные пути кастодиального хранения ограничило ущерб одним звеном и позволило компании абсорбировать девятизначный убыток без банкротства — довод в пользу операционной изоляции независимо от безопасности отдельно взятого контракта.
On-chain DeFi несёт риск смарт-контрактов. Держите основные средства на регулируемой бирже.