Log in
For business
KYT office
Compliance solution to monitor risks, detect sanctions and ensure AML rules.
KYT office
Compliance solution to monitor risks, detect sanctions and ensure AML rules.
AML certification
How industry players can get up-to-date knowledge and professional certification.
AML certification
How industry players can get up-to-date knowledge and professional certification.
Comprehensive transaction analytics that helps to build graphs and trace funds.
Graph
Travel rule
(soon)
For personal use
Telegram bot
Bot for checking crypto for risks, providing AML reports.
Telegram bot
Bot for checking crypto for risks, providing AML reports.
Getting money back
Services are focused on tracking
and recovering crypto assets.
Getting money back
Services are focused on tracking
and recovering crypto assets.
Docs and reports
All types of documents related
to cryptocurrency.
Docs and reports
All types of documents related
to cryptocurrency.
Portfolio tracker
Information about all assets and risk assessment in one place.
Portfolio tracker
Information about all assets and risk assessment in one place.
AML checks
Сhecking wallets and transactions
for illicit funds.
AML checks
Сhecking wallets and transactions
for illicit funds.
ES
FR
中文
Вход
AML-сертификация
Актуальные знания в области AML/KYT от ведущих экспертов отрасли.
AML-сертификация
Актуальные знания в области AML/KYT от ведущих экспертов отрасли.
Graph
Визуализация перемещения активов
и связей между кошельками.
Graph
Визуализация перемещения активов
и связей между кошельками.
KYT Office
Мониторинг транзакций и кошельков для вашего отдела комплаенса.
KYT Office
Мониторинг транзакций и кошельков для вашего отдела комплаенса.
Для себя
Для Бизнеса
Travel rule
(Cкоро)
Телеграм-бот
Бот для проверки кошельков и транзакций с выдачей отчётов.
Телеграм-бот
Бот для проверки кошельков и транзакций с выдачей отчётов.
Возврат средств
Услуги по отслеживанию и возврату украденных криптоактивов.
Возврат средств
Услуги по отслеживанию и возврату украденных криптоактивов.
AML-проверки
Проверка кошельков и транзакций на наличие "грязной" криптовалюты.
AML-проверки
Проверка кошельков и транзакций на наличие "грязной" криптовалюты.
Портфолио трекер
Информация о всех активах и оценка рисков в одном месте.
Портфолио трекер
Информация о всех активах и оценка рисков в одном месте.
Отчёты
Все типы документов связанные
с криптовалютой.
Отчёты
Все типы документов связанные
с криптовалютой.
PRIVATE
Financial institutions
Exchanges
PSP's
Wallets
Gambling platforms
Investment platforms
Stablecoin issuers
Investigators
Regulators
Law enforcement
Government
Для бизнеса
Финансовые организации
Биржи
Платежные провайдеры
Кошельки
Игровые платформы
Инвестиционные платформы
Эмитенты стейблкоинов
Расследователи
Регуляторы
Правоохранительные органы
Госсектор
ES
FR
中文
05.03.2026

Настоящая история взлома Solv Protocol: что было дальше

Содержание:

Резюме

1. Уязвимость

2. Извлечение реальных активов

3. Конвертация

4. Отмывание: layering, RailGun и Tornado Cash

5. Поведенческий профиль атакующего

Заключение

Резюме

5 марта 2026 года хакер вывел из Solv Protocol 38,0474 SolvBTC — около $ 2,73 млн. По меркам DeFi-эксплойтов сумма средняя. Но этот кейс интересен не деньгами.

Интересно то, что произошло после. Атакующий действовал методично: конвертировал активы через несколько слоев, раздробил средства по промежуточным адресам и вышел на финальный этап сокрытия. Там его ждало кое-что неожиданное — и именно этот момент меняет привычное представление о том, как работает отмывание в крипте.

Технически атака построена на логической ошибке в смарт-контракте. Пострадали менее 10 пользователей. Остальные vault’ы — смарт-контракты, которые хранят активы пользователей по заданным правилам, аналог сейфа на блокчейне — не затронуты.

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

Разберем по порядку: сначала — как работала уязвимость, затем — как атакующий превращал баланс в реальные деньги, и наконец — как он пытался их спрятать.

1. Уязвимость

Факты

Уязвимость находилась в контракте BitcoinReserveOffering (BRO). Чтобы понять механику атаки, важно разобраться в двух стандартных механизмах.

Минт — это создание новых токенов. В данном случае пользователь вызывает функцию mint(), чтобы получить BRO-токены в обмен на внесенные средства.

safeTransfer и callback. При переводе токена на адрес контракта стандарт требует, чтобы контракт-получатель подтвердил прием через специальную функцию — onERC721Received(). Это называется callback, то есть функция обратного вызова: протокол автоматически «уведомляет» получателя и ждет подтверждения.

Уязвимость возникала из некорректного взаимодействия этих двух механизмов. Во время исполнения mint() контракт выполнял безопасный перевод токена, который запускал callback onERC721Received(). Этот callback срабатывал до завершения основного учета в mint() — и самостоятельно выпускал токены. После того как callback завершался, основной поток mint() доходил до своего собственного выпуска токенов и выпускал их снова. Один и тот же депозит учитывался дважды в рамках одного сценария исполнения.

Это callback-driven double mint — баг двойного учета: не два независимых вызова и не взлом защиты, два участка кода внутри одного выполнения функции, каждый из которых добросовестно делает свою работу, не зная о том, что другой уже сделал то же самое.

Представьте: вы сдаете чемодан в багаж в аэропорту. Сотрудник на стойке регистрации выдает вам квитанцию — и в этот момент его коллега из подсобки, не зная об этом, выдает вторую квитанцию на тот же чемодан. Багаж один, а квитанций две. Обе настоящие. Обе действительные. Именно это произошло с контрактом BRO — один депозит порождал два подтверждения выпуска токенов.

Атакующий повторил этот цикл 22 раза внутри одной транзакции. Поскольку все итерации происходили в рамках одной транзакции, внутренний обменный курс между ними не обновлялся. EVM (виртуальная машина Ethereum, среда исполнения смарт-контрактов) фиксирует изменения состояния только после завершения транзакции целиком. Стартовый баланс в ~135 BRO был искусственно раздут до ~567 млн BRO.

Интерпретация

Раздутые 567 млн BRO — это не прямой ущерб протоколу. Это промежуточный артефакт атаки: необеспеченная масса токенов, существующая только внутри уязвимой логики контракта. Реальный ущерб возникает только на следующем этапе — в момент конвертации в ликвидные активы.

Это различие принципиально. Называть «похищенными» 567 млн BRO — значит вводить аудиторию в заблуждение. Фактический ущерб фиксируется в тот момент, когда бумажная инфляция превращается в реальную стоимость.

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

2. Извлечение реальных активов

Факты

Из ~567 млн BRO атакующий использовал около 165 млн BRO (≈29% от раздутого баланса) и обменял их на SolvBTC через внутренний пул протокола. Результат — 38,0474 SolvBTC — это и есть подтвержденный ущерб.
Этап
  • Стартовый капитал
  • Цикл ×22
  • Частичная конвертация
  • Остаток
Действие
  • ~135 BRO (легитимные)
  • Двойной минт
  • ~165 млн BRO → SolvBTC
  • ~402 млн BRO (расчетная величина: 567 − 165)
Результат
  • ~567 млн BRO
  • 38.0474 SolvBTC (~$2.73 млн )
  • Не конвертированы

Интерпретация

Атакующий конвертировал только 29% от раздутого баланса. Оставшиеся ~402 млн BRO конвертированы не были — раздутый баланс существовал лишь внутри уязвимой логики контракта и реальной стоимостью не обладал.

Заметка инвестигейтора. Раздутые 567 млн BRO — это не деньги, которые можно было забрать. Это артефакт бухгалтерской ошибки контракта. Реальная стоимость извлекается только через конвертацию — и ровно столько, сколько позволяет пул на другой стороне обмена.

3. Конвертация

Факты

После получения SolvBTC атакующий последовательно конвертировал активы:

SolvBTC в WBTC в WETH

WBTC и WETH — это «обернутые» версии биткоина и Ethereum: токены стандарта ERC-20, привязанные к цене оригинального актива 1:1, но совместимые с инфраструктурой ETH.

Интерпретация

Каждый шаг конвертации преследует две цели: уход от низколиквидного протокольного токена к доминирующим сетевым активам и создание дополнительных транзакционных слоев, каждый из которых требует отдельной трассировки.

ETH — стандартная валюта для миксеров. Именно к ней вела вся цепочка конвертаций. Финальный шаг — обмен WETH на нативный ETH — атакующий сделал уже на этапе сокрытия средств.

Заметка инвестигейтора. Именно здесь заканчивается эксплойт и начинается отмывание. Это две разные операции с разными целями, и анализировать их нужно раздельно. Дальше — самая показательная часть кейса.

4. Отмывание: layering, RailGun и Tornado Cash

Движение средства на фоне эксплойта. Сделано при помощи Graph от BitOK

Факты

Этап 1 — Layering (работа со слоями). Средства были распределены по нескольким промежуточным адресам. Layering — это этап отмывания, на котором средства дробятся и перебрасываются через множество адресов, чтобы разорвать прямую цепочку происхождения и затруднить трассировку.

Этап 2 — Попытка входа в RailGun. Атакующий направил средства в RailGun — протокол конфиденциальности на основе ZK-доказательств. ZK (zero-knowledge, доказательство с нулевым разглашением) — криптографический метод, который позволяет подтвердить факт транзакции, не раскрывая ее деталей: ни суммы, ни отправителя, ни получателя. Встроенные KYT/AML-фильтры RailGun отклонили депозит и вернули средства отправителю. KYT (Know Your Transaction) и AML (Anti-Money Laundering) — системы мониторинга транзакций, которые автоматически выявляют подозрительные операции и связи с известными адресами.

Этап 3 — Перераспределение. После возврата средств атакующий снова разбил их по нескольким адресам и конвертировал WETH в нативный ETH — итоговый результат составил около 1 211 ETH.

Этап 4 — Tornado Cash. Итоговый маршрут завершился в Tornado Cash — пул-миксере, который разрывает связь между адресом отправителя и получателя, перемешивая депозиты множества пользователей.

Полная цепочка отмывания ~1 211 ETH:

1. Промежуточные кошельки.
2. RailGun (отклонено, средства возвращены).
3. Перераспределение.
4. Tornado Cash.

Интерпретация

Отказ RailGun — один из наиболее значимых моментов этого кейса. Блокировка произошла не по требованию правоохранительных органов и не через биржевые комплаенс-процедуры. Встроенные фильтры самого инструмента конфиденциальности автономно отклонили транзакцию.

Для атакующего это означало необходимость перестраивать маршрут. Для аналитика — это момент, который раскрывает намерение: атакующий целенаправленно выбрал ZK-слой как первичный инструмент сокрытия, а Tornado Cash был запасным вариантом, а не основным планом.

Заметка инвестигейтора. Попытка использовать RailGun до Tornado Cash — значимый поведенческий маркер. Переход к Tornado Cash после отказа — не признак некомпетентности, а адаптация.

5. Поведенческий профиль атакующего

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

Техническая квалификация — высокая. Построение callback-driven double mint эксплойта с исполнением всех циклов внутри одной транзакции требует глубокого понимания механики EVM.

Операционная дисциплина — высокая. Атака выполнена в виде двух четко разделенных фаз. Каждая — дискретная операция со своей логикой. Столкнувшись с отказом RailGun, атакующий сменил тактику и продолжил.

Осведомленность об инструментах приватности — высокая. Первым был использован RailGun, а не Tornado Cash — протокол на основе ZK-доказательств с более высоким уровнем анонимизации. Tornado Cash стал запасным вариантом после отказа.

Эффективность монетизации — умеренная. Из раздутого баланса была конвертирована только часть — около 29%.

Заключение

Эксплойт Solv Protocol — показательный кейс не столько из-за суммы ущерба, сколько из-за архитектуры атаки. Технически точный callback-driven double mint, дисциплинированная операция по сокрытию средств после кражи, попытка использовать ZK-privacy как первичный инструмент сокрытия — все это вместе формирует профиль атакующего, который заслуживает отдельного внимания.

Для индустрии важен другой вывод: RailGun заблокировал транзакцию автономно, без участия регуляторов. Это прецедент, который меняет представление о том, как privacy-протоколы могут встраиваться в комплаенс-инфраструктуру — не вопреки своей природе, а за счет нее.

Расследование основано на данных on-chain транзакций и публичных реконструкциях инцидента. Все оценки стоимости активов приведены по курсу на момент инцидента.
Перейти

Чтобы узнать о тарифах, нажмите сюда

Попробуйте демо-версию AML-сервиса для вашего бизнеса