Атака была направлена на стык между логикой проверки доказательств с нулевым разглашением (ZK-proofs) и финальным расчетом на уровне Ethereum (L1). Как сообщили в CertiK, одна из функций верификации контракта проверяла только начало переданного доказательства . Это означало, что параметры, использовавшиеся для авторизации вывода токенов, так и не проходили полную валидацию. Атакующий смог подать доказательство, которое успешно проходило первичные проверки, но содержало вредоносные инструкции на вывод средств в глубине своего массива данных.
Последующий анализ от SlowMist указал на первопричину в ограничениях обхода в цикле обработки расчетов L1 внутри контракта RollupV3. Злоумышленник использовал расхождение между параметрами numRealTxs и decoded_slots, что позволило ему отправить 31 пустой слот в корень состояния L2 через ZK-доказательство, минуя полную проверку на уровне контракта L1 . В общей сложности атакующий сгенерировал 14 ZK-rollup-доказательств; последние семь из них в отдельных транзакциях опустошали контракт от разных активов
.
Уникальность этого инцидента в том, что атака была структурно неостановимой — и так было задумано. Проект Aztec Connect был выведен из эксплуатации в марте 2023 года, и пользователям дали больше года на вывод средств . В 2024 году Aztec Labs пошла еще дальше, сознательно отказавшись от всех административных ключей и контроля над системой. Контракты стали полностью неизменяемыми: никаких механизмов обновления, никакого владельца и, что критично, никакой возможности поставить систему на паузу
.
«Aztec Connect был закрыт три года назад. Aztec Labs не владеет административными ключами и не контролирует систему; ее нельзя ни приостановить, ни обновить», — заявила команда в соцсети X через несколько часов после взлома, подтвердив, что из неизменяемого контракта ушло около $2,1 млн . Они также подчеркнули, что текущая сеть Aztec Network и ее токен AZTEC ERC-20 не пострадали, но признали: механизма для возврата потерянных средств не существует
.
Несмотря на длительное окно вывода активов и предупреждения о закрытии, на момент атаки внутри старых контрактов оставались запертыми около $2,1 млн . Средства оказались в своеобразном цифровом лимбе: легитимно забрать их без взаимодействия с устаревшим rollup было невозможно, и когда сработала уязвимость, вмешаться не мог никто.
Взлом Aztec Connect — это хрестоматийная иллюстрация проблемы «зомби-контрактов» в децентрализованных финансах. Неизменяемые смарт-контракты не исчезают просто так, когда проект закрывается. Они остаются в блокчейне со всей своей логикой и ценностями, часто бессрочно удерживая пользовательские активы. Если в погоне за полной децентрализацией команда отзывает административные ключи, такой контракт становится вечной, не поддающейся исправлению приманкой для хакеров. Любая необнаруженная уязвимость превращается в бомбу замедленного действия, которая может взорваться спустя годы без какой-либо возможности вмешательства .
Риск здесь асимметричен: проекты, отказывающиеся от контроля, зарабатывают репутационные очки за отсутствие «черного хода», но пользователи, которые не успели вывести средства во время миграции, несут все риски. Случай с Aztec показывает, что даже через три года миллионы долларов могут лежать в контракте, который все считали мертвым.
Для DeFi-команд, которые планируют отключение протокола, урок суров. Прежде чем отзывать административные ключи, проекты обязаны либо принудительно завершить все процессы вывода средств, либо внедрить экстренный механизм с временной задержкой (timelock), который не требует постоянного административного контроля. Без этих предохранителей заброшенная, но неизменяемая инфраструктура неизбежно привлечет злоумышленников, готовых искать дефекты, которые уже никогда не исправить .
Comments
0 comments