Одна ошибка в коде: как хакер вывел $7.8 млн из кошелька Gnosis Safe

15 сентября 2026 года стало известно, что простая ошибка кодирования в helper-контракте позволила атакующему вывести около $7.8 млн из кошелька Gnosis Safe в сети Ethereum. Жертвой стал владелец leveraged-позиции в rsETH — ликвидном стейкинг-токене протокола Kelp DAO. Злоумышленник эксплуатировал уязвимость в кастомном Safe-модуле, связанном с Uniswap, и получил несанкционированный доступ к управлению средствами кошелька.

По оценке CertiK, первопричиной стала именно coding error в helper-контракте, а не компрометация ключей владельца. При этом хакер не смог реализовать весь замысел: быстрая реакция команды Kelp DAO заблокировала повторную попытку вывести еще $95 млн в rsETH и вынудила протокол приостановить депозиты и выводы средств до стабилизации ситуации.

Ключевые цифры инцидента: $7.8 млн выведено из Gnosis Safe через баг кастомного модуля; повторная атака на $95 млн rsETH заблокирована; Kelp DAO приостановила депозиты и выводы; уязвимость находилась в helper-контракте интеграции с Uniswap, а не в базовой логике Safe.

⚙️ Механика инцидента: ошибка в кастомном Safe-модуле

Gnosis Safe (ныне Safe) — стандарт мультисиг-кошельков в Ethereum, которым пользуются DAO, казначейства и крупные держатели. Архитектура Safe позволяет подключать кастомные модули — внешние контракты, способные исполнять транзакции от имени кошелька в рамках заданных прав. Именно эта гибкость стала вектором атаки: у пострадавшего кошелька был установлен модуль для управления leveraged-позицией rsETH через Uniswap.

Helper-контракт модуля содержал ошибку кодирования, которая позволяла внешнему актору проходить проверки и выдавать команды от имени кошелька. Получив несанкционированный доступ к перемещению средств, атакующий вывел около $7.8 млн активов. Leverage-позиция усилила ущерб: кошелек держал залоговый rsETH и заемные активы, поэтому манипуляция позицией через модуль привела к потере, превышающей номинальный свободный баланс кошелька.

🕐 Хронология атаки

  • До атаки: установка кастомного Safe-модуля для управления leveraged-позицией rsETH через Uniswap
  • Эксплойт: использование ошибки helper-контракта для исполнения транзакций от имени кошелька
  • Вывод средств: drenаж около $7.8 млн активов из Gnosis Safe
  • Повторная попытка: атака на дополнительные $95 млн в rsETH
  • Реакция: пауза контрактов Kelp DAO, приостановка депозитов и выводов, блокировка второй волны

🛑 Реакция Kelp DAO: как удалось спасти $95 млн

Kelp DAO, эмитент rsETH, отреагировала на инцидент практически мгновенно. Команда подтвердила, что быстрая реакция заблокировала повторную попытку вывести еще $95 млн в rsETH. В качестве превентивной меры протокол приостановил депозиты и выводы, что ограничило пространство для маневра атакующего и не позволило развернуть leveraged-позиции по манипулятивным ценам.

Заморозка дала двойной эффект. С одной стороны, она заперла часть украденных активов внутри периметра протокола и усложнила их обналичивание через пулы ликвидности. С другой — временно ограничила легитимных пользователей, что является стандартным trade-off incident response: скорость сдерживания против доступности сервиса. Кейс Kelp DAO показал, что pause-механизмы, заложенные в контракты на этапе деплоя, сегодня не менее важны, чем аудиты кода.

Этап инцидента Сумма Итог
Первичный дренаж Gnosis Safe $7.8 млн Средства выведены атакующим
Повторная атака на rsETH $95 млн Заблокирована Kelp DAO
Ответ протокола Депозиты и выводы приостановлены

🔍 Почему helper-контракты и модули становятся слабым звеном

Модули — официальный механизм расширения Gnosis Safe: они могут держать ключи, задавать лимиты и исполнять транзакции без многостороннего подписания каждой операции. Это удобно для автоматизации управления DeFi-позициями, но любая ошибка в логике модуля фактически превращается в бэкдор в кошелек. В отличие от мультисиг-порога, модуль с широкими правами не требует подтверждения нескольких владельцев: достаточно одной уязвимой функции.

  • Отсутствие проверок вызывающего: нет валидации msg.sender и прав операции
  • Ошибки валидации: некорректная логика проверки подписей и разрешений
  • Delegatecall-риски: вызовы непроверенных адресов из helper-контрактов
  • Избыточные права: модуль может двигать все активы вместо одной позиции
  • Нет лимитов: отсутствие timelock и ограничений на разовые операции

Инцидент 15 сентября продолжает серию атак 2026 года на инфраструктуру Safe: в мае взлом SquidRouterModule позволил похитить около $3.2 млн у 86 кошельков Gnosis Safe за две волны, также через уязвимость модуля. Паттерн очевиден: атакующие сместили фокус с базовой мультисиг-логики, которая хорошо аудирована, на периферийный кастомный код, который команды пишут и подключают самостоятельно, часто без полноценного аудита и тестирования edge-кейсов.

🛡️ Уроки для DeFi: что менять после инцидента

Первый урок: кастомные модули и helper-контракты должны проходить тот же цикл аудитов, что и ядро протокола. Одна непроверенная функция способна обнулить надежность мультисига стоимостью в миллионы долларов. Второй урок: скорость incident response определяет масштаб потерь. Kelp DAO ограничила ущерб $7.8 млн вместо потенциальных $100+ млн исключительно за счет быстрой паузы контрактов и заморозки средств.

  • Аудиты: проверять все кастомные Safe-модули, helper-контракты и интеграции
  • Минимальные права: модули с узким scope и лимитами на разовые операции
  • Паузы из коробки: pause-механизмы и blacklist в контрактах с первого деплоя
  • Мониторинг: алерты на аномальные транзакции и крупные движения средств
  • План реагирования: заранее определенные роли для паузы и заморозки

Для пользователей инцидент — напоминание: мультисиг не является абсолютной гарантией, если к нему подключены сторонние модули. Перед установкой внешних интеграций стоит проверять статус их аудитов и объем выдаваемых прав. Для индустрии кейс 15 сентября усиливает тренд на обязательный мониторинг модульных рисков и страхование кастомных интеграций: цена ошибки в несколько строк кода вновь измерена миллионами долларов, а граница между «удобной автоматизацией» и «бэкдором в казначейство» оказалась тоньше, чем предполагали многие команды.

«Тестирование программ может использоваться для демонстрации наличия ошибок, но никогда — для демонстрации их отсутствия».

— Эдсгер Дейкстра, ученый-информатик, о цене непроверенного кода

16.09.2026, 01:34