Helio Protocol aBNBc Stale-BNB-Oracle Bad-Debt Exploit (2022-12-02)
- Name: Helio Protocol aBNBc stale-BNB-oracle bad-debt exploit
- Date: 2022-12-02
- Protocol: Helio Protocol / HAY stablecoin
- Chain: BNB Chain
- Category: stale-price exploitation / wrapped-collateral identity failure / upstream-token-compromise contagion / stablecoin bad debt
- Loss: about
$15.5Mwas extracted through the main borrow-and-dump path; Helio later reported total protocol bad debt of19,046,819 HAYacross the broader incident - Summary: Hours after Ankr’s
aBNBcupgrade-key compromise made the liquid-staking receipt token effectively attacker-mintable and crashed its market price by about99%, a second attacker used Helio as the downstream cash-out venue. They spent only10 BNBto buy about183,884.918 aBNBc, then routed that depegged wrapper into Helio’s BNB-denominated collateral path. Helio’s oracle logic still treated the collateral as if BNB parity held because Chainlink was monitoringBNB, not the now-brokenaBNBcwrapper. With that stale collateral truth still live, the attacker borrowed16M HAYin transaction0x391a665e8efad14cd63d5caed10f53881ebb8eab1c5ae14648db2d06cdd00cdd, dumped about15.5M HAYfor BUSD through Wombat in transaction0x9b4d0eb8df95ac6d5548c6abed0e90ceccebcf2560ef41bdc514d74746c0dd8e, and left Helio with system-wide bad debt that later totaled about19.05M HAY. - Trigger / entry point:
- Ankr’s upstream
aBNBccompromise had already destroyed the wrapper’s supply integrity and market price before the Helio leg began. - Helio still allowed the attacker to use cheap
aBNBcinside its collateral flow even though the wrapper no longer tracked BNB economically. - Helio’s collateral oracle relied on Chainlink’s BNB pricing rather than an independent live price for
aBNBc, and Helio itself later said Chainlink did not support directaBNBcmonitoring. - Public incident writeups also noted that the attacker could bypass the Helio front-end UI and interact with contracts directly, so any UI-side restriction on the path was not a real onchain boundary.
- Ankr’s upstream
- Root cause:
- Helio treated a compromised wrapped asset as if it still inherited the solvency meaning of its underlying asset.
- The protocol’s oracle boundary failed open: once
aBNBcstopped behaving like BNB, Helio still priced it through BNB assumptions and kept minting / borrowing paths open. - The deeper failure was not ordinary market volatility. An upstream privileged-upgrade incident had already broken the wrapper’s authenticity, but Helio’s collateral system had no fast way to de-recognize that wrapper before borrowers monetized the stale mark.
- The front end was not the security boundary. Direct contract access meant any offchain or UI-level intent not to support the path was irrelevant once onchain collateral logic still honored it.
- Exploit path:
- Ankr’s
aBNBcexploit inflated wrapper supply and collapsedaBNBcmarket price to a tiny fraction of BNB parity. - In transaction
0xaab2611b70f69cf79324c9bc5d0fcda5c95cabf713c74901a9613f212043dfc3, the Helio attacker spent10 BNBthrough 1inch to buy about183,884.918118284222488297 aBNBc. - They routed that cheap
aBNBcinto Helio’s collateral flow, receiving roughly191,130 hBNBof protocol-recognized collateral credit according to public incident analysis. - Because Helio still treated the wrapper through BNB oracle truth, the attacker borrowed
16M HAYin transaction0x391a665e8efad14cd63d5caed10f53881ebb8eab1c5ae14648db2d06cdd00cdd. - In transaction
0x9b4d0eb8df95ac6d5548c6abed0e90ceccebcf2560ef41bdc514d74746c0dd8e, they swapped about15.5M HAYinto BUSD through Wombat’s HAY/BUSD liquidity, dragging HAY off peg and converting bad collateral into realizable stablecoin value. - The BUSD proceeds were then dispersed across several transfers, with public writeups highlighting address
0x4c7f5513894a99260bbfcf88311b544d6ca12757as a key recipient. - Helio later said several smaller arbitrageurs copied the same opportunity, which is why total bad debt rose beyond the main
15.5Mextraction path to19,046,819 HAY.
- Ankr’s
- What the attacker needed to be true:
- The upstream
aBNBccompromise had to happen first, so the attacker could source large nominal wrapper balances for almost no economic cost. - Helio needed to keep treating
aBNBcas BNB-equivalent collateral long enough for one borrow-and-dump cycle to clear. - The protocol’s oracle path had to keep underwriting collateral from stale or semantically wrong price truth rather than quarantining the wrapper when parity broke.
- There had to be enough HAY mint / borrow capacity and HAY/BUSD exit liquidity to monetize the false collateral immediately.
- Direct contract access had to remain open so the attacker could avoid any front-end restrictions.
- The upstream
- Technical anatomy worth remembering:
- Helio was not exploited because Chainlink published a fake BNB price. The downstream protocol instead asked the wrong question: it kept asking what BNB was worth after
aBNBchad stopped being trustworthy BNB-equivalent collateral. - This is a strong contagion case where one protocol’s privileged-upgrade failure became another protocol’s stale-price lending exploit. The important system boundary was not just Helio’s oracle, but whether Helio could revoke a wrapper once upstream issuance integrity failed.
- The stablecoin leg matters. Helio did not merely overvalue bad collateral on paper; it turned that paper value into newly borrowed
HAY, and the attacker then used Wombat liquidity to export the damage into dollar-like assets and an immediate depeg. - The UI-bypass detail is worth preserving because it keeps the incident from being misread as a front-end bug. The real failure was onchain collateral recognition, not website access control.
- Helio was not exploited because Chainlink published a fake BNB price. The downstream protocol instead asked the wrong question: it kept asking what BNB was worth after
- Representative transactions and addresses:
- Cheap
aBNBcpurchase tx:0xaab2611b70f69cf79324c9bc5d0fcda5c95cabf713c74901a9613f212043dfc3 - Main
HAYborrow tx:0x391a665e8efad14cd63d5caed10f53881ebb8eab1c5ae14648db2d06cdd00cdd - Main
HAY -> BUSDdump tx:0x9b4d0eb8df95ac6d5548c6abed0e90ceccebcf2560ef41bdc514d74746c0dd8e - Publicly highlighted proceeds address:
0x4c7f5513894a99260bbfcf88311b544d6ca12757 - Helio bad-debt burn address later used for remediation visibility:
0x192D4e2E19A01e49b30Fb3894A01B6e08947d9CA
- Cheap
- Response / mitigation:
- Helio said it immediately paused protocol functions once the issue was recognized.
- The team began buying back HAY, saying the first wave removed about
6.8M HAYfrom the market while they worked to stabilize the peg. - Helio also said it would replace
aBNBccollateral with the newankrBNBwrapper and tighten security assumptions around that migration. - Public follow-up messaging from Helio and third-party trackers centered on bad-debt repayment, burn-address transparency, and re-pegging HAY after the exploit-induced depeg.
Three wrapper-and-collateral promotions this incident collapsed
-
A broken wrapper still existed as a collateral-shaped object inside the system
- After the Ankr compromise,
aBNBcstill looked like a depositable receipt token onchain even though its supply integrity and market meaning had already failed. - The first dangerous promotion was not yet
borrow 16M HAY; it was that a counterfeit-mintable wrapper could still arrive at Helio’s collateral boundary looking enough like yesterday’s asset to enter the path at all.
- After the Ankr compromise,
-
That surviving wrapper object was still promoted into canonical BNB-equivalent collateral truth
- Helio’s own writeup said the protocol was monitoring
BNB, notaBNBc, so the system kept treating the wrapper as if a live BNB oracle still certified its solvency meaning. - In other words, Helio promoted
this wrapper can still be posted hereintothis wrapper still deserves fresh BNB-equivalent collateral semantics, even though the upstream compromise had already broken the identity that made such inheritance safe.
- Helio’s own writeup said the protocol was monitoring
-
That accepted collateral truth still inherited live stablecoin-printing and reserve-exit authority
- Once Helio still recognized the attacker-bought
aBNBcas money-good collateral, the protocol let it mint about16M HAY, and Wombat liquidity let that synthetic credit leave immediately asBUSD. - The decisive failure was therefore not only stale semantics at the oracle boundary, but that the stale semantics still carried ordinary balance-sheet power: fresh borrowing authority, immediate external exit liquidity, and later protocol-wide bad debt.
- Once Helio still recognized the attacker-bought
The durable lesson is that the wrapper still exists, the wrapper still deserves the old underlying price meaning, and that accepted meaning still deserves live credit authority are three different promotions. Helio failed all three during the same incident window.
Pattern tags
- stale-price-exploitation
- Upstream wrapper-integrity break became downstream stale-price credit because
aBNBcstopped deserving BNB collateral semantics before Helio stopped lending against it - Live underlying feed, semantically dead wrapper: Chainlink’s BNB price kept updating, but Helio still treated a counterfeit-mintable receipt token as if
fresh BNB priceimpliedfresh aBNBc collateral truth - UI policy did not matter because direct contract access stayed open: any intended front-end restriction was weaker than the onchain collateral path that still honored
aBNBc - Stablecoin export path turned wrapper misrecognition into immediate reserve loss: once
16M HAYwas minted, Wombat liquidity converted the bad-collateral accounting error into realizableBUSDand a visible HAY depeg
Why the exploit worked
- Helio’s own Dec. 2022 incident writeup states the critical semantic mismatch directly: the main arbitrageur bought depegged
aBNBccheaply, bypassed the front end, and minted HAY because Helio’s collateral path was pricing onlyBNB, notaBNBc. The exploit window therefore was notoracle published a fake BNB price; it wasthe protocol kept treating a broken wrapper as if it still inherited BNB's price meaning. - The Ankr incident had already destroyed the key assumption Helio needed. Once a privileged upgrade made
aBNBcinfinitely mintable and drained its market liquidity, the relevant question was no longerwhat is BNB worth?butdoes this wrapper still deserve BNB-equivalent collateral semantics at all?Helio continued answering that second question as if nothing upstream had changed. - The exploit also shows why
front-end supportandonchain supportare separate security states. Helio said the attacker could bypass the UI, which means the economically real control surface was the contract-level collateral path, not any offchain intention to avoid or hideaBNBcminting. - Stablecoin systems make this failure harsher than a paper overvaluation alone. Helio did not merely mis-mark bad collateral inside an internal accounting view; it minted
16M HAYthat could be dumped into Wombat’sHAY/BUSDliquidity immediately, exporting the wrapper-recognition mistake into reserve loss, peg damage, and later system-wide bad debt. - The preserved lesson is therefore slightly sharper than ordinary stale-feed handling: a protocol needs a way to say
the underlying feed is still live, but this wrapper no longer deserves that feed's solvency meaning, and then shut off new credit before arbitrageurs can monetize the semantic gap.
Detection and audit pivots
- Inventory every wrapper-specific condition that must remain true before an underlying feed may still underwrite collateral: mint authority, upgrade control, redemption path, bridge or staking semantics, supply integrity, and market liquidity. Helio shows that
BNB feed still worksis not a sufficient check foraBNBc still deserves BNB collateral meaning. - Treat upstream wrapper-integrity breaks as immediate downstream solvency events. A counterfeit-mint, depeg, or redemption failure should trigger asset-local collateral quarantine, borrow disablement, or semantic-price revocation faster than arbitrageurs can source the broken wrapper and route borrowed stablecoins out.
- Audit whether front-end restrictions are actually mirrored onchain. If users can still reach the mint or borrow path by calling contracts directly, the UI is not the effective control surface during a live wrapper incident.
- Compare wrapper market price and liquidity to the inherited underlying mark during stress, but ask the sharper question too: even if the underlying oracle is fresh, what exact evidence says this wrapper still deserves to inherit it?
- Test stablecoin cash-out paths explicitly. For wrapper-collateral systems that mint a protocol stablecoin, the danger is not only overvalued collateral but how quickly bad credit can be exported through the deepest external pool before the wrapper is de-recognized.
Failure-prevention checklist
- Define wrapper-specific collateral eligibility separately from underlying price freshness. A live
BNBfeed should never by itself certify thataBNBcstill deserves BNB-equivalent borrow power. - Treat upgrade-key compromise, unauthorized minting, redemption failure, or large wrapper depegs as immediate collateral-derecognition events with asset-local borrow disablement and, where necessary, liquidation or mint-path pause authority.
- Put onchain controls where the risk lives. If a wrapper is not meant to back minting during stress, the contract path itself must reject it; front-end hiding or offchain operator intent is not a security boundary.
- Bind stablecoin mint limits and per-collateral caps to executable exit liquidity, especially for wrappers whose failure can be monetized instantly through one deep stable swap pool.
- Maintain an emergency migration path for compromised wrappers that preserves user unwind options without letting the old asset retain fresh credit authority during the transition.
- Predefine who can revoke inherited oracle semantics, what onchain toggles freeze the dangerous actions first, and what evidence is required before a replacement wrapper regains borrow-side authority.
Audit prompts
- What exact condition lets this wrapper keep inheriting the underlying asset’s oracle meaning: supply integrity, redemption parity, bridge verifier health, upgrade-key safety, or merely historical convention?
- If this wrapper becomes infinitely mintable or sharply depegs while the underlying feed remains healthy, what concrete onchain step stops new minting or borrowing first?
- Can a user bypass the intended UI path and still post the wrapper as collateral or mint the protocol stablecoin directly?
- How large a stablecoin position can be printed and dumped through the deepest external pool before any guardian, cap, or semantic-price revocation intervenes?
- Is there a documented degraded mode for wrapper incidents that separates
users may unwind or migratefromusers may keep creating fresh protocol liabilities against this asset? - When the team replaces a broken wrapper with a successor asset, what proves the old wrapper’s credit authority is fully extinguished rather than merely hidden in the interface?
Lessons that should already be standard
- A fresh underlying oracle does not rescue a wrapper whose issuance integrity has already failed.
We do not support this in the UIis never the same thing asthe protocol cannot be reached this way.- Wrapper incidents are downstream lending incidents the moment the wrapper still has borrow-side authority anywhere.
- Stablecoin systems turn wrapper-recognition mistakes into exported reserve loss faster than protocols that only mark paper bad debt internally.
- A protocol needs a first-class way to say
this asset may still exist, but it no longer deserves the price meaning it inherited yesterday. - Migration to a replacement wrapper is not just an asset-ops task; it is a solvency-control exercise that must revoke the old wrapper before the new one is trusted.
Why this incident matters
- It is a clean wrapper-contagion cousin to Venus LUNA. In both cases the downstream protocol kept honoring collateral after its executable value had already collapsed, but Helio adds the sharper
upstream token integrity failed firstversion. - The note preserves a useful distinction from generic oracle manipulation: nobody had to push BNB’s market price. The profitable move was to feed a broken wrapper into a collateral path that still trusted the wrapper’s old BNB meaning.
- It also shows how stablecoin systems can export collateral mistakes faster than lenders with passive reserves. Once Helio minted HAY against bad collateral, external pool liquidity turned that accounting mistake into immediate peg damage and system-wide bad debt.
Internal linkages
- Core recurring pattern: stale-price-exploitation — Helio is the semantic-staleness / wrapper-meaning-invalidated cousin where the upstream feed could stay live but the wrapper no longer deserved BNB oracle semantics.
- Positive-design companion: wrapper-semantic-price-revocation-and-collateral-derecognition — the sharper design question here is how Helio should have revoked
aBNBc’s inherited BNB collateral meaning quickly once upstream wrapper integrity failed. - Positive-design downstream-solvency companion: collateral-admission-lag-and-borrow-side-quarantine — useful when the healthier-side question is why a wrapper that has just lost issuance integrity should not retain immediate borrow-side authority against deep stablecoin exit liquidity.
- Adjacent upstream incident: ankr-abnbc-deployer-key-compromise-malicious-token-upgrade-infinite-mint-2022-12-01 — the upstream privileged-upgrade compromise created the counterfeit wrapper inventory that Helio later mispriced.
- Adjacent family: oracle-configuration-failure — useful contrast because Helio did not mainly compose the BNB price incorrectly; it kept applying a once-plausible price meaning after the collateral object itself had changed.
- Useful comparison incident: venus-protocol-luna-stale-chainlink-price-exploit-2022-05-12 — Venus is the cleaner
feed froze above realitycase, while Helio is thewrapper stopped deserving the inherited feed meaningcousin.
Control surface
- The decisive leverage sat in Helio’s collateral-admission semantics for
aBNBc, the oracle mapping that still treated that wrapper through BNB price truth, the lack of an emergency de-recognition path for an upstream-compromised wrapper, direct-contract reachability of the mint path even if the UI tried to narrow it, and the external liquidity that let freshly mintedHAYleave the system immediately. - Helio did not merely suffer from a stale price. It kept lending against the old identity of a wrapper whose issuance integrity had already failed.
- The sharper operating question is not only
was the BNB feed fresh?butwhat exact signal would have made Helio stop treating aBNBc as BNB-equivalent collateral before the next borrow could clear?
Sources
- https://medium.com/@ListaDAO/helio-protocols-impact-in-the-abnbc-exploit-6954e0199096
- https://callisto-network.gitbook.io/callisto-network/hack-investigation-dept./helio-exploit
- https://bscscan.com/tx/0xaab2611b70f69cf79324c9bc5d0fcda5c95cabf713c74901a9613f212043dfc3
- https://bscscan.com/tx/0x391a665e8efad14cd63d5caed10f53881ebb8eab1c5ae14648db2d06cdd00cdd
- https://bscscan.com/tx/0x9b4d0eb8df95ac6d5548c6abed0e90ceccebcf2560ef41bdc514d74746c0dd8e
- https://bscscan.com/address/0x192D4e2E19A01e49b30Fb3894A01B6e08947d9CA
Last reviewed
- 2026-08-04 UTC