
17 марта 2026 года в сети Ethereum зафиксированы два инцидента с суммарным ущербом около $2.01 млн. Природа у них разная: один — классический фишинг, второй — тонкая ошибка в математике протокола. Объединяет их то, что атакующему не потребовалось взламывать инфраструктуру.
Фишинг Permit — $1.76 млн
Ход инцидента
TX: 0xfd7417af8433e3d9bcbed3f965307c800a24eb4e98f42cebfab6ca6064f5a642
Пользователь подписал вредоносный Permit — стандартный механизм одобрения расходования токенов без отдельной on-chain транзакции. После получения подписи злоумышленник немедленно списал около $1.76 млн в USDC, распределив похищенные средства по трём адресам.
Движение средств
Похищенные USDC были обменяны на ETH на всех трёх адресах.
- Адрес 0x6fE314fD4CF845f35fc461eD98e2FB8d9356B566 — 88,315 USDC, конвертированы в ETH, остаются на балансе.
- Адрес 0xf1A50bbebA19a85dB20432c6c201aa89604dfd2B — 264,946 USDC, конвертированы в ETH, остаются на балансе.
-Адрес 0x9F6f1ac48E4c7E53495A99ce49974Cd1914fE17E — около $1.4 млн USDC, конвертированы в ETH через NEAR Intents, далее средства разошлись ещё по трём адресам, где остаются на момент расследования.
dTRINITY dLEND — $254k
Ход инцидента
TX: 0xbec4c8ae19c44990984fd41dc7dd1c9a22894adccf31ca6b61b5aa084fc33260
Атакующий получил flash loan из Morpho и зашёл в dTRINITY dLEND — протокол, где под залог cbBTC и других активов можно занимать dUSD. Далее он многократно выполнял операции deposit и withdraw с dcbBTC aToken. При каждом цикле протокол списывал слишком мало внутренних долей, но отдавал больше реального cbBTC, чем должен.
После накопленного дисбаланса атакующий занял dUSD под оставшийся «на бумаге» залог, а резерв cbBTC оказался недообеспечен. На адрес 0x08CfDfF8DEd5f1326628077F38D4f90DF6417fD9 поступило 257,328.63 dUSD, которые были конвертированы в ETH.
Почему это стало возможным
Причина — ошибка округления в dcbBTC aToken. При операциях mint и burn протокол конвертировал суммы в scaled units через функцию rayDiv с округлением half-up. При определённых значениях liquidityIndex меньший депозит и более крупный вывод могли округляться к одному и тому же числу долей. В итоге при каждом выводе атакующий сжигал слишком мало долей и извлекал из резерва больше cbBTC, чем позволял честный баланс.
Flash loan и полностью публичные функции deposit, borrow и withdraw позволили провести всю атаку в одной транзакции.
Движение средств
После конвертации dUSD в ETH большая часть средств ушла в миксер Tornado Cash, меньшая часть — на обменник FixedFloat.
Заключение
Наиболее уязвимыми точками нередко оказываются не core-контракты, а детали реализации. Алгоритм округления в одном случае и доверие пользователя к подписываемому разрешению — в другом.
Подпись Permit не требует подтверждения on-chain транзакции и на первый взгляд выглядит безобидно. Ошибка округления в rayDiv не бросается в глаза при аудите. Оба вектора эксплуатируются именно потому, что остаются вне зоны основного внимания.
Команда КоинКит продолжает мониторинг адресов, связанных с инцидентами.


