
13 мая 2026 года атакующий вывел около $137 тыс. из контрактов ShapeShift FOX Colony в сети Arbitrum. Для этого не понадобилось взламывать никакие пароли или ключи — достаточно было найти логическую ошибку в том, как контракт обрабатывает особый вид операций. Атака прошла в одной транзакции.
Что произошло
ShapeShift FOX Colony — это набор смарт-контрактов (программ в блокчейне), которые управляют токеном FOX и связанными финансовыми функциями протокола ShapeShift.
Внутри этих контрактов использовался механизм мета-транзакций. Мета-транзакция — это особый вид операции, когда кто-то другой оплачивает комиссию за вас, но действие всё равно совершается от вашего имени. Это удобно для пользователей, у которых нет ETH на комиссии, но они хотят что-то сделать в сети.
Внутри контракта также был компонент под названием resolver — это своего рода «адресная книга», которая говорит контракту, к каким другим программам обращаться при тех или иных операциях.
Атакующий заметил: контракт позволял выполнять мета-транзакцию как вызов от самого себя — то есть как будто сам контракт обращается к себе. При этом система авторизации воспринимала такие self-call вызовы как заведомо доверенные и не проверяла, кто на самом деле стоит за операцией.
Воспользовавшись этим, атакующий легально подписал свою мета-транзакцию и через неё подменил resolver на свой вредоносный контракт. После подмены он вызвал функцию через delegatecall — механизм, при котором чужой код выполняется внутри контракта-жертвы с доступом к его хранилищу и токенам. Так из контракта ушли 132 704 USDC и 841 086 FOX.
FOX — это токен протокола ShapeShift. После кражи атакующий обменял его примерно на 1.95 WETH (токенизированный эфир, Wrapped Ether — версия ETH, которую можно использовать в DeFi-протоколах).
Транзакция атаки: 0xdda5bcab8eb28458de171ad3780bd1b1028e9231192d73522b0cda36ab46207d
Почему это стало возможным
Представьте: в компании есть внутренний чат, где сообщения от «системы» выполняются автоматически без проверки. Сотрудник обнаружил, что может отправить сообщение, которое система воспримет как своё собственное — и изменить внутренние правила компании. Именно это и произошло здесь.
Контракт не проверял, действительно ли self-call (вызов от самого себя) пришёл изнутри системы или был инициирован посторонним. Это позволило атакующему:
1️⃣ Подписать мета-транзакцию от своего адреса.
2️⃣ Убедить контракт, что этот вызов — его собственный, доверенный.
3️⃣ Подменить resolver на вредоносный контракт.
4️⃣ Через delegatecall выполнить свой код внутри хранилища контракта-жертвы и вывести токены.
Никакого взлома паролей или ключей — только эксплуатация логической ошибки в системе авторизации.
Детали расследования: движение средств
1️⃣ 132 704 USDC и ~$4 тыс. в WETH поступили на адрес атакующего 0xeed236Afb6967f74099a0a6bf078BC6b865fbf28 в сети Arbitrum.
2️⃣ Оттуда средства были переброшены на тот же адрес, но уже в сети Ethereum.
3️⃣ Там атакующий обменял средства на токены spUSDC (это депозитный токен протокола Spark, который представляет USDC, размещённый на депозите для получения процентов).
4️⃣ На момент расследования средства остаются на адресе атакующего в сети Ethereum без движения.
Заключение
Атака на ShapeShift FOX Colony — пример того, как одна недостаточно строгая проверка в системе авторизации открывает путь к полному контролю над контрактом. Атакующий не взломал ни одного ключа: он воспользовался тем, что контракт слепо доверял собственным self-call операциям.
Средства на момент расследования остаются у злоумышленника и никуда не перемещались после конвертации в spUSDC. Команда КоинКит продолжает мониторинг адреса.


