OLPC/LABUBU, Edel Finance, Royalties, AIDC: $1.9M Lost to Four Preventable Bugs
Four exploits this week, $1.9M gone — and every dollar of it was preventable.
All four were textbook code-level bugs: a burn that let public skim and sync calls rewrite pool reserves, collateral priced off a spot rate an attacker can move in one transaction, a balance check that minted tokens out of nothing on zero-value transfers, a burn charged to the pool instead of the seller. None of them are novel. They're the same classes we watch drain funds week after week, and every one surfaces the moment you run proactive security tools against the contract, before it ever reaches mainnet.
That's the whole idea behind Olympix: catch the preventable class in the dev loop, so this kind of loss stays a line in a report instead of a headline.
In Brief
OLPC/LABUBU lost $1.12M due to a pair-originated amplified burn that let public skim and sync calls rewrite pool reserves and drain the opposite side.
Edel Finance lost $403K due to collateral priced off a flash-loan-manipulable spot exchange rate, with no TWAP or manipulation guard.
Royalties (Royal1155LD) lost $263K due to a broken balance-conservation check that minted free balance on zero-value transfers.
AIDC Token lost $120.9K due to a misattributed burn that charged the pool instead of the seller, deflating reserves on every sell.
OLPC/LABUBU | Amount Lost: $1.12M
On June 20, the OLPC/LABUBU exploit on BNB Chain drained 1,115,903.66 USDT (~$1.12M) from the LABUBU/OLPC PancakeSwap V2 pool. The root cause was a token-side flaw in OLPC: when the AMM pair is the transfer sender, OLPC’s `_updateTransfer()` treats the transfer as a buy, computes an amplified burn (`amount * _decimalsValue`), moves that amount from the pair to the dead address, and sets the delivered amount to 0.
Because PancakeSwap V2 `skim()` is public and forces the pair to transfer its surplus, the attacker looped dust transfers plus `skim(helper)` and `sync()`. Each skim made the pair send OLPC; OLPC then burned an amplified amount from the pair while delivering 0 to the recipient. Twenty `skim` and twenty-one `sync` calls moved ~51.93M OLPC from the pair to the dead address, collapsing the OLPC reserve to ~0.375 while LABUBU remained nearly unchanged.
The attacker then used the distorted fee-on-transfer swap path to release ~688,381 LABUBU, sold ~564,128 (after LABUBU’s sell tax) through LABUBU/WBNB and WBNB/USDT into ~2,041 WBNB, and ultimately cashed out to 1,115,903.66 USDT. This matches the DIP and LittleBoyPlus family: a token-side burn that lets pair-originated transfers rewrite reserves and drain the opposite side.
On July 1st, the Edel Finance exploit on Ethereum created approximately $403K in protocol bad debt across its lending markets. The root cause was manipulable collateral pricing. wGOOGLx collateral was valued off the wrapped xStocks exchange rate between wGOOGLx and GOOGLx, a spot read with no TWAP and no manipulation guard, so the attacker opened a 180,000 USDC flash loan from Morpho, manipulated that rate to value wGOOGLx at roughly 78x its correct value within a single transaction, and borrowed against the inflated collateral, leaving the protocol with bad debt.
The attacker consolidated the extracted tokens into 224 ETH and deposited into Tornado Cash. This is the oracle and spot-price manipulation family: a lending market that trusts a manipulable exchange rate instead of a manipulation-resistant feed.
On June 24th, the Royalties contract exploit on Polygon drained roughly $263K. The root cause was a balance-conservation flaw in the Royal1155LD.beforeLdaTransfer() hook.
When _IS_OWNED_TOKENS_BACKFILL_COMPLETE_ was true and the transferred balance == 0, the hook skipped the from balance update while still incrementing the to balance by 1, so a zero-value transfer that should net to nothing instead credited the receiver free balance out of the accounting gap. The attacker sent 100 zero-value transfers, each one adding balance with no corresponding debit, stacking the position and the reward records that key off it, then claimed the inflated claimable and drained $263K. A transfer must conserve total balance, and the balance == 0 branch updated only one side of the move.
On June 28th, the AIDC token exploit on BSC drained 220.12 WBNB (about $120.9K) from the AIDC/WBNB PancakeSwap V2 pair. The root cause was a burn-accounting flaw in AIDC's own contract that charged the burn to the wrong account.
On a sell, `_sellTransfer()` accrued a 30% burn amount but never deducted it from the seller, creating a burn debt with no source. Any following non-Pair transfer then triggered `_executeAccumulatedBurn()`, which burned that accrued amount from the `uniswapPair` balance rather than the seller, and called `sync()`. Burning the pair's tokens and syncing deflated the AIDC reserve in the AMM, and the attacker repeated that sequence to manipulate the reserve, then swapped to drain the WBNB. The seller incurred the debt and the pool paid it, which is the token-side flaw that broke the pair's accounting. This is the reserve-manipulation-via-token-logic family, alongside DIP, LittleBoyPlus, and OLPC.
The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
Follow-up: Conduct a follow-up review to ensure that the remediation steps were effective and that the smart contract is now secure.
Follow-up: Conduct a follow-up review to ensure that the remediation steps were effective and that the smart contract is now secure.
In Brief
Remitano suffered a $2.7M loss due to a private key compromise.
GAMBL’s recommendation system was exploited.
DAppSocial lost $530K due to a logic vulnerability.
Rocketswap’s private keys were inadvertently deployed on the server.
Hacks
Hacks Analysis
Huobi | Amount Lost: $8M
On September 24th, the Huobi Global exploit on the Ethereum Mainnet resulted in a $8 million loss due to the compromise of private keys. The attacker executed the attack in a single transaction by sending 4,999 ETH to a malicious contract. The attacker then created a second malicious contract and transferred 1,001 ETH to this new contract. Huobi has since confirmed that they have identified the attacker and has extended an offer of a 5% white hat bounty reward if the funds are returned to the exchange.