Worked example · 2026-06
Namada — an IBC transfer-logic flaw drains the Multi-Asset Shielded Pool while a stale indexer masks the loss — Namada (Cosmos / IBC) — 2026-06-19
Summary
Namada is a Cosmos-ecosystem, IBC-connected privacy protocol whose Multi-Asset Shielded Pool (MASP) holds many assets (ATOM, USDC, OSMO, TIA, NYM, …) in a single Zcash-derived shielded pool, with assets entering and leaving over IBC. On 2026-06-19, an attacker exploited a flaw in Namada's IBC transfer logic to sweep shielded IBC assets cross-chain, draining roughly $600,000 and dropping the affected tokens' on-chain balances to zero.
The loss was masked: a stale indexer continued to serve pre-exploit balances, so explorers and front-ends showed the funds as still present even though live RPC queries returned zero. The divergence is what delayed recognition of the incident. DefiLlama classified it as a Protocol-Logic exploit (IBC transfer logic), and Namada confirmed it and began investigating. As of writing, the precise defective check has not been published, so the technique mapping below is preliminary.
Timeline (UTC)
| When | Event | OAK ref |
|---|---|---|
| Pre-2026-06-19 | Namada MASP holds multi-asset shielded balances entering/leaving over IBC; the IBC transfer path carries a value-conservation flaw | (standing T10-class surface) |
| 2026-06-19 | Attacker exploits the IBC transfer logic to sweep shielded ATOM/USDC/OSMO/TIA/NYM cross-chain; on-chain balances fall to zero (~$600K) | T10.002-adjacent execution |
| 2026-06-19/20 | Loss masked by a stale indexer still serving pre-exploit balances; researchers spot RPC-vs-indexer divergence; DefiLlama logs $600K Protocol-Logic incident | (detection failure → discovery) |
| 2026-06-20 | Namada confirms the exploit and opens an investigation | (operator response) |
What defenders observed
- At-event (RPC-vs-indexer divergence — the primary signal). The decisive observable was that live RPC balances hit zero while the indexer/front-end still showed funds. Reconciling the two and alerting on divergence is the highest-leverage control here and is independent of the underlying bug class — it would catch any loss that an indexer lags behind.
- At-event (shielded value-conservation break). Component MASP balances dropping to zero is a violation of the pool's per-asset "value in ≥ value out" invariant; an explicit shielded-pool conservation monitor is the protocol-level confirmation signal.
- At-event (IBC transfer path). The vector was the IBC transfer logic, i.e., the cross-chain boundary of the shielded pool — the layer where backing must be enforced as assets move between chains. Pre-deployment formal verification / fuzzing of the shielded-IBC transfer path is the pre-event control (mechanism pending Namada's disclosure).
- Detection lesson (generalisable). The case stands primarily as a monitoring anti-pattern: dashboards and explorers that read from an indexer can show a healthy balance over a drained pool. Loss-of-funds alerting must be wired to live chain state and invariants, not to the same indexer users see.
Public references
[cryptotimesnamada2026]— Crypto Times, 2026-06-20, "Namada's $600K MASP Drain Goes Unnoticed as Stale Indexer Masks the Loss" (MASP drain ~$600K; ATOM/USDC/OSMO/TIA/NYM balances to zero on RPC; stale indexer still showing funds; IBC transfer-logic vector): https://www.cryptotimes.io/2026/06/20/namadas-600k-masp-drain-goes-unnoticed-as-stale-indexer-masks-the-loss/[cointrustnamada2026]— Cointrust, "Namada Investigates Protocol Exploit Amid Security Review" (Namada confirms exploit; investigation/security review opened): https://www.cointrust.com/market-news/namada-investigates-protocol-exploit-amid-security-review[slowmistnamada2026]— SlowMist Hacked database — Namada (2026-06-19) (incident logging; ~$600K; IBC transfer logic): https://hacked.slowmist.io/
Discussion
Namada is a deliberately preliminary entry: the dollar figure is small (~$600K) and the precise IBC/MASP defect is not yet public, so its near-term value to OAK is the detection lesson rather than a fully-specified technique. The stale-indexer-masked loss is a clean, transferable anti-pattern — it is the data-layer analogue of "a tree falls in the forest": the funds were gone, but the systems everyone watched still reported them present. Contributors building OAK's detection/data-source guidance should treat indexer-vs-RPC reconciliation and shielded-pool value-conservation invariants as named controls, because both are bug-class-independent and would have surfaced this loss in real time.
On classification, the case should be revisited once Namada publishes its post-mortem. If the root cause is a verification/validation flaw in the shielded-IBC transfer path, it firms up as a T10.002 IBC-transfer sub-shape (the first shielded-pool instance in the family); if it is instead a pure accounting/precision flaw inside MASP independent of cross-chain verification, it may sit better under a T9.x logic subclass. Until then OAK records it as T10.002-adjacent (IBC transfer-logic) with the shielded-pool value-conservation bypass flagged as a forward candidate.