Автор: angelilu, Foresight News
25 июня 2026 года, в 6:18 утра, на странице голосования Tornado Cash DAO появилось предложение № 67.

Заголовок был написан очень формально: «Установление стандарта комиссии 0.5% и схемы динамического сжигания 90%». В тексте, написанном витиеватым языком, утверждалось, что необходимо обновить реестр ретрансляторов до архитектуры «V5 Strategy A», чтобы 90% комиссий протокола навсегда сжигались, а 10% распределялись среди стейкеров, и была приведена экономическая модель под названием «положительный цикл благосостояния».
Автор предложения также запросил из казны 50 TORN в качестве компенсации за оплату газа при развертывании контракта — эта деталь делала всё предложение похожим на работу ответственного и вкладывающего собственные средства участника сообщества.
Но код контракта этого предложения не прошел никакой проверки. То есть логика исполнения предложения (Calldata) не была верифицирована в блок-эксплорере (например, Etherscan). Без верификации сообщество видело лишь машинный код, который нельзя было напрямую проанализировать. Вся обычная практика Tornado Cash включала этот шаг, но данное предложение его пропустило.
Исследователь L2BEAT Сергей Шемяков первым обратил на это внимание. Примерно через 8 часов после публикации предложения он обратился к исследователю безопасности Паскалю Каверасчио: «Логика этого предложения необычайно сложна, пожалуйста, помогите провести независимый аудит.»

Исследователь Security Alliance Паскаль Каверасчио быстро пришел к выводу.
Истинная цель предложения: тайная смена адреса администратора протокола
Каверасчио с помощью инструментов декомпиляции восстановил байт-код контракта предложения и определил, что предложение является злонамеренным.
В коде была функция под названием «governance(правитель)», имевшая только одну цель: возвращать адрес, сообщая протоколу «кто является администратором». И адрес, жестко прописанный в этой функции, принадлежал кошельку самого атакующего.

В архитектуре Tornado Cash различные части протокола вызывают эту функцию, чтобы определить, кому принадлежат высшие полномочия. Если бы предложение было принято и исполнено, исходный адрес, указывающий на контракт управления сообществом, был бы тихо заменен на этот адрес атакующего.
Настоящий адрес управления: 0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce;
Поддельный адрес атакующего: 0x5efda50f22d34f272c7077689d6abc42f15e285f.
Первые 15 символов двух адресов полностью совпадают, различия начинаются только с 16-го символа. Обычному человеку сложно заметить это невооруженным глазом.
Если бы это предложение было принято, последствия были бы следующими: адрес «высшего администратора», признаваемый протоколом, был бы тайно заменен на адрес атакующего. Затем атакующий смог бы использовать эту роль, чтобы вывести около 23 миллионов долларов в токенах TORN, которые сейчас заблокированы в контракте управления — эти деньги были внесены участниками сообщества для стейкинга и участия в голосовании. Кроме того, атакующий мог бы принудительно обнулить балансы всех ретрансляторов в протоколе (сервисов, ответственных за пересылку транзакций пользователей), полностью парализовав весь протокол.
Кто атакующий и откуда деньги
Адрес кошелька создателя предложения: 0xd4eca8c9242b9f9faa3cf19a78defc21dc97a925.
Каверасчио отследил происхождение средств для этого адреса и обнаружил, что всего за 4 дня до подачи предложения он получил перевод. Отправителем был Railgun — другой протокол для приватного смешивания монет в блокчейне, прямой конкурент Tornado Cash. Перевод через Railgun означает, что происхождение средств было замаскировано, и отследить реальную личность невозможно.

После обнаружения сообществом, каково текущее состояние голосования
На данный момент результаты голосования по этому предложению следующие: голосов «За» — 0, голосов «Против» — 27 163 TORN, что составляет 100%. Голосование закроется 30 июня.
Правила управления Tornado Cash требуют участия как минимум 100 000 TORN для достижения кворума, в настоящее время достигнуто только 27%. Если только в течение следующих 4 дней не появится массовое количество аномальных голосов «За», которые поднимут кворум и перевернут результат. В противном случае, предложение не будет исполнено — результатом будет его истечение срока или отклонение. Однако эта ситуация несет в себе больше предупреждающего значения.
Это уже вторая подобная атака, с которой столкнулся Tornado Cash. В мае 2023 года злоумышленник с помощью предложения, содержащего скрытую функцию selfdestruct, получил контроль над 1,2 миллиона голосов, в то время как весь DAO имел лишь 70 000 легитимных голосов. В той атаке злоумышленник вывел около 2,17 миллиона долларов в TORN, используя для отмывания средств сам Tornado Cash, а затем подал предложение о «восстановлении управления», уйдя с чистой прибылью около 900 000 долларов. После этого никто не исправил фундаментально эту структуру управления.
Атаки на управление DAO: как защититься обычному пользователю
Атаки на управление уже стали обычным риском в Web3, а не исключительной проблемой какого-либо отдельного протокола. В апреле 2022 года на Beanstalk атакующий, используя flash-займ, занял на время права голоса на 1 миллиард долларов, в рамках одной транзакции принял предложение, перевел 182 миллиона долларов и погасил заем — весь процесс занял менее минуты. В феврале того же года на Build Finance DAO атакующий, используя поддельные токены управления, получил контроль и опустошил казну на 11 миллионов долларов.
Формы атак эволюционируют: от захвата голосов с помощью flash-займов до скрытых функций selfdestruct, и до нынешней замены символов адреса. Но базовая логика остается прежней — власть в DAO исходит от токенов, а токены можно брать в займ, подделывать, маскировать. Любой механизм управления, который можно контролировать с помощью кода, может быть атакован.
Для обычных пользователей, владеющих токенами управления, есть несколько реально применимых путей. Во-первых, следить за оперативными предупреждениями исследователей безопасности, именно на эту атаку первым поднял тревогу исследователь L2BEAT. Во-вторых, предложения, указывающие на непроверенные контракты, с высокой вероятностью требуют прямого голосования «Против». В-третьих, если вы владеете токенами управления протокола, но не планируете активно участвовать, делегирование права голоса активным членам сообщества безопаснее, чем оставлять токены бездействующими в кошельке; молчащие токены лишь усложняют достижение кворума.
Для разработчиков протоколов более фундаментальной защитой является внедрение временной блокировки (timelock) на уровне управления — предложение не исполняется немедленно после принятия, а оставляется окно от 48 до 72 часов, чтобы у сообщества и исследователей безопасности была возможность провести аудит и запустить аварийную остановку. Такие протоколы, как Compound и Aave, уже давно имеют этот механизм по умолчанию. Tornado Cash до сих пор не имеет его, что также является частью его экстремального выбора в пользу конфиденциальности и сопротивления цензуре.





