$9M Across Verus, 42DAO, LULA and Set Protocol — Every Dollar Preventable
Four exploits this week, $9M gone — and every dollar of it was preventable.
There's a common thread worth naming: in all four, the code performed a check that was real, and then acted on something the check didn't actually cover. A proof was verified but the value behind it wasn't. A price was written but never bounded. A balance was moved but the pool's accounting was rewritten around it. A quote was read but never re-read once someone else had a turn. Every check passed. None of them were sufficient.
Audits confirm the checks that exist. Invariant testing asks whether those checks are enough to hold the property you actually care about — payout never exceeds backing, price never moves more than it should, reserves always reflect real balances. Those are assertable before a line reaches mainnet.
That's the whole idea behind Olympix: catch the insufficient check in the dev loop, so it stays a line in a report instead of a headline.
In Brief
Verus Bridge lost $7.5M due to cross-chain import verification that proved an export was included in a block but never that it was backed by real value.
42DAO lost $912K due to a Maker-style fork deployed without price-deviation bounds or a liquidation delay, letting a fake price liquidate vaults in one transaction.
LULA lost $578K due to a privileged function that pulled tokens straight out of the pool and re-synced, rewriting reserves to drain the paired asset.
Index Coop lost $9.6K due to values read for quoting that were never re-checked after attacker code ran, so settlement paid out against inflated numbers.
Verus Bridge | Amount Lost: $7.5M
On July 21st, the 42DAO exploit on BNB Chain drained about $912K through an oracle-price and liquidation flaw in its Maker-style CDP system. The root cause was two compounding code-level gaps. The Spotter's poke() wrote an abnormally low BTCB price into the Vat with no price-deviation check, no max-drawdown limit, and no minimum-price floor, and the Dog's bark() then liquidated multiple BTCB vaults off that spot with no liquidation delay and no oracle validation.
In a single transaction, the attacker pushed the low BTCB price through the Spotter and instantly liquidated the BTCB vaults at the fake price, profiting from the arbitrage. No key or governance compromise, the contracts trusted a price and executed liquidations they should have guarded. This is a Maker-style fork deployed without the deviation checks and liquidation delays the pattern needs.
Fund Receiver: 0xcfd0a20703cd11e0b9f665e1c3f1ef989c142d54
42DAO | Amount Lost: $912K
On July 21st, the 42DAO exploit on BNB Chain drained about $912K through an oracle-price and liquidation flaw in its Maker-style CDP system. The root cause was two compounding code-level gaps. The Spotter's poke() wrote an abnormally low BTCB price into the Vat with no price-deviation check, no max-drawdown limit, and no minimum-price floor, and the Dog's bark() then liquidated multiple BTCB vaults off that spot with no liquidation delay and no oracle validation.
In a single transaction, the attacker pushed the low BTCB price through the Spotter and instantly liquidated the BTCB vaults at the fake price, profiting from the arbitrage. No key or governance compromise, the contracts trusted a price and executed liquidations they should have guarded. This is a Maker-style fork deployed without the deviation checks and liquidation delays the pattern needs.
On July 28th, the LULA token exploit on BSC drained about $578K from the PancakeSwap V2 pair through a reserve-manipulation flaw in the token's own contract. The root cause was a privileged `recycle()` function that let the Rental contract transfer LULA directly out of the pair using an internal `_basicTransfer()`, which only adjusts balances and emits a Transfer event while bypassing the checks a standard transfer applies, and then call `sync()`, forcing the pair's reserves to match the manipulated balances.
The attacker first swapped a large amount of USDT to LULA to inflate the USDT reserve, repeatedly triggered `recycle()` to shrink the LULA reserve, then swapped a small amount of LULA back to drain the pool at the skewed rate. Helper contracts deployed 12 days earlier accumulated referral and team rewards, and a Lista DAO flash loan of roughly $231.5M WBNB plus $4.4M BSC-USD, routed through Aave and Venus, amplified the swap size. This is the same reserve-manipulation pattern as OLPC/LABUBU: a privileged token-side function that pulls tokens from the pair and syncs, rewriting reserves to drain the opposite side.
On July 30th, the Set Protocol exploit on Ethereum drained about $9.6K through a TOCTOU flaw in Index Coop's ExchangeIssuance function. The root cause was that `issueSetForExactToken` read a SetToken's components and units to quote the issuance but never locked that state before using it for transfers.
The attacker created their own malicious SetToken (BHSET) with a manager, hook, and valuer they controlled, issued it with a small amount of WETH, then used a pre-issue hook to inflate the SetToken's `positionMultiplier` roughly 93.66x via a NAV `issue`/`redeem` with a fake valuation. When `BasicIssuanceModule.issue` then read the now-inflated units and pulled them from `ExchangeIssuance` via `transferFrom`, it transferred far more than it should have, draining real assets. The value checked at read time had been changed before it was used. No key or governance compromise, the malicious SetToken and manager are attacker-supplied inputs exploiting ExchangeIssuance's missing state lock, not the flaw itself.
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.