Nomic и allBTC на Osmosis: 40,65 BTC, которых 74 дня никто не замечал
PublicAML · Ончейн-расследование · 23 сентября 2026
25 июня 2026 года атакующий совместил две ошибки моста Nomic и выпустил на Osmosis 40,65 nBTC, за которыми не было ни одного биткоина. Заметили это только в сентябре. К тому времени около 18 BTC ушли через Axelar и Circle в Ethereum и — в первые три дня после взлома — в Tornado Cash: ровно 671,1 ETH. Остальные 22,65 так и лежат там, где их оставил атакующий, поэтому Osmosis и смогла их заморозить. Одна деталь без сомнений связывает адреса в Osmosis и Ethereum: за два дня до взлома адрес в Ethereum оплатил адресу в Osmosis газ.
40,65 nBTC
выпущено без биткоина за ними, 25 июня 2026
74 дня
никто не замечал — сеть остановилась 7 сентября
671,1 ETH
в Tornado Cash, 33 депозита, 25 и 28 июня
22,65 allBTC
до сих пор на адресе атакующего в Osmosis, заморожены
Что произошло
Nomic — сеть, выпускающая nBTC, биткоин-токен, который на Osmosis служит одним из резервов Alloyed BTC (allBTC). 25 июня атакующий совместил две ошибки механизма пересылки Nomic в одной транзакции и доставил на Osmosis 40,65 nBTC, под которыми не было заблокировано ни одного биткоина. Для любого пула такие nBTC ничем не отличались от настоящих. Osmosis обнаружила дыру только когда Nomic в начале сентября перестала выпускать чекпойнты, и 9 сентября заморозила allBTC. Оказалось, что около 36% allBTC ничем не обеспечены.
Один и тот же человек в обеих сетях
Адрес, получивший nBTC в Osmosis, — osmo1wq76r2mhqsa9yaygghuwyq4wy6dcsgf8vtzltn. Адрес в Ethereum, куда ушла выручка, — 0x8f36FD9FfC0a8cA373AA7A4787292536a489d2B5. В публикациях их просто ставят рядом; блокчейн говорит больше. 23 июня, за два дня до взлома, адрес в Ethereum отправил два небольших платежа в WETH через Squid, маршрутизатор Axelar, и оба пришли на адрес в Osmosis: газ, чтобы новый аккаунт мог делать транзакции. Через сорок минут адрес в Osmosis отправил пробный перевод на nomic1wq76r2mhqsa9yaygghuwyq4wy6dcsgf8cgz4wt — тот же ключ в сети Nomic. Атакующий заранее подготовил оба конца и ждал два дня.
| Когда (UTC, 2026) | Откуда | Куда | Сумма | Транзакция |
|---|---|---|---|---|
| 23 Jun 02:02 | 0x8f36FD…89d2B5 | osmo1wq7…vtzltn | 2 × 0.01 WETH газ для адреса в Osmosis, через Squid | 0xf18adb…0f183f |
| 23 Jun 03:01 | osmo1wq7…vtzltn | nomic1wq…cgz4wt | test transfer тот же ключ в Nomic | 9CDD3729…FC2D44 |
| 25 Jun 21:50 | nomic1wq…cgz4wt | osmo1wq7…vtzltn | 40.65 nBTC доставка необеспеченных nBTC | — |
| 25 Jun 22:11 | osmo1wq7…vtzltn | 0x8f36FD…89d2B5 | 8 WBTC → 303.01 ETH Axelar, обмен через Squid | 468D435D…37EE82 |
| 25 Jun 22:14 | osmo1wq7…vtzltn | 0x8f36FD…89d2B5 | 1.5 WBTC → 57.10 ETH Axelar, обмен через Squid | EF6FFD30…A30794 |
| 25 Jun 22:29 | osmo1wq7…vtzltn | 0x8f36FD…89d2B5 | 8.10 ETH Axelar, обмен через Squid | F879A157…A1D1D7 |
| 25 Jun 23:24 | osmo1wq7…vtzltn | 0x8f36FD…89d2B5 | 112,509 USDC → 71.15 ETH через Circle, обмен в Ethereum | 65BD688B…98BE8E |
| 25 Jun 22:56–23:46 | 0x8f36FD…89d2B5 | 0xd90e2f…24F31b | 439.1 ETH Tornado Cash, 26 депозитов | 0x2df204…9bfbb0 |
| 28 Jun 18:33 | osmo1wq7…vtzltn | 0x8f36FD…89d2B5 | 6.16 WBTC → 232.40 ETH Axelar, обмен через Squid | 70DFD62F…182904 |
| 28 Jun 18:41–18:46 | 0x8f36FD…89d2B5 | 0xd90e2f…24F31b | 232.0 ETH Tornado Cash, 7 депозитов | 0x1aab9a…b730c2 |
| 17 Jul 22:44 | osmo1wq7…vtzltn | osmo1wq7…vtzltn | 22.65 nBTC → 22.65 allBTC обменяно на allBTC; заморожено | 8305D3D4…1E8D7E |
От фальшивых nBTC до Tornado Cash за три часа
25 июня в 21:50 UTC необеспеченные nBTC пришли на Osmosis. За 25 минут атакующий продал 18 из них за биткоин в обёртке Axelar в пуле 1868 — в самом пуле allBTC — и начал выводить: 8 WBTC, потом 1,5 WBTC, потом 8,1 ETH через Axelar, и на адресе в Ethereum Squid сразу превращал каждый перевод в ETH. Последняя часть ушла как 112 509 USDC через мост Circle и была обменяна на 71,15 ETH.
Депозиты в Tornado начались в 22:56, ещё до того как пришёл последний перевод: 439,1 ETH в 26 депозитах к 23:46. 28 июня атакующий вывел ещё 6,16 WBTC, получил 232,4 ETH и за восемь минут положил 232 ETH в Tornado. Всего 671,1 ETH — та самая цифра из публикаций, теперь с каждым депозитом за ней. На адресе в Ethereum осталось 0,575 ETH.
Почему 22,65 удалось заморозить
17 июля атакующий обменял оставшиеся 22,65 nBTC на allBTC и оставил их на адресе в Osmosis. Это и есть вся замороженная сумма: выпущено 40,65, около 18 выведено, 22,65 так и не покинули адрес. Изъятие через обновление сети возвращает права требования к пулу, а не биткоины — nBTC за ними были фальшивыми, — поэтому покрывать на самом деле придётся те 18, что ушли.
Газ для адреса в Ethereum, 0,037 ETH 22 июня, пришёл с 0x37EaF2AD33160Aaae7bdd1C6902c4a2862e1270D. Ни по одному признаку это не личный кошелёк атакующего: он получает разовые платежи от сотен не связанных адресов и платит во все стороны — так выглядит небольшой обменный сервис. Мы его не помечали и не считаем частью атаки.
Адрес в Ethereum помечен в PublicAML. Адрес в Osmosis приведён здесь, но риск-балл ему пока не присвоить: PublicAML не покрывает Osmosis.
Источники: данные Osmosis (публичные REST-узлы), записи Axelar GMP (Axelarscan) и данные Ethereum (Blockscout), считаны 23 сентября 2026 года; механизм взлома и цифра 40,65 — по заявлениям Osmosis и Nomic; адрес в Ethereum — как впервые опубликован в прессе об инциденте. Это информационный материал о транзакциях между адресами, а не финансовый или юридический совет, и он никого не называет виновным.