September 2, 2026
|

$76M Lost: Tectonic, Ajna Finance, Balancer V1

Three exploits in four days at the end of August, $76M lost. Nearly all of it was Tectonic, where the failure sat in the risk parameters rather than the code — a thinly traded token accepted as collateral with no borrow cap sized to what could actually be sold. The other two were different in kind. Both were defects in the math: liquidation accounting that mis-tracked collateral and debt, and join-path arithmetic that minted full pool shares for a rounded-to-dust input. Below is what broke in each.

In Brief

  • Tectonic — $75M. A thinly traded token accepted as collateral with no borrow cap or depth requirement, letting a 100x price move support $75M in borrowing. Not a code flaw — the oracle read correctly; the risk parameters were wrong.
  • Ajna Finance — $775K. Liquidation accounting that mis-tracked collateral and debt, drained repeatedly across eight separate pools.
  • Balancer V1 — $234K. Join-path fixed-point math that minted full BPT for a single satoshi once the WBTC reserve had been compressed to dust.

Tectonic — $75M, Cronos, August 30

The attacker pushed TONIC's price roughly 100x within about 20 minutes, supplied the inflated tokens to Tectonic as collateral, and borrowed assets with real liquidity against them. With TONIC at a 20% collateral factor, the ~364.6 trillion TONIC in the position needed a reported value near $375M to support the roughly $75M borrowed.

The distinction that matters: the oracle was not wrong. RedStone's co-founder states it accurately reported TONIC's price on the pool it was reading from. The failure was accepting that price as collateral without testing how much TONIC could actually be sold before its value collapsed — "Reporting a price and validating that a price is safe to lend against are two different jobs." The safeguards identified as missing are all risk parameters: borrow caps sized to executable liquidity, dynamic collateral factors, price-impact limits, minimum market-depth requirements. A 100x move in 20 minutes is described as a signal the asset shouldn't have been usable as collateral at any meaningful size, not something a wider TWAP window would have smoothed.

Cronos validators halted block production and later restored the chain to a pre-incident state. About $6M reached Ethereum before the halt; roughly $60M and a further $8M remained at Cronos addresses. Neither Tectonic nor Cronos has confirmed the loss figure or published a post-mortem, and the estimates are an independent researcher's.

Not a code-level defect. Collateral-listing and risk-configuration failure, so outside what code analysis owns.

Ajna Finance — $775K, Ethereum, August 28

The protocol's liquidation path mis-accounts collateral and debt, letting an attacker manipulate the liquidation logic to drain funds from multiple collateral pools. The loss spread across at least eight: syrupUSDC $173.7K, wstETH $159.8K, rETH $127.4K plus $15.6K, cbETH $124.8K plus $12.1K, WBTC $101.8K, WETH/USDC $42.0K, sDAI $18.0K. That distribution is the signature of a shared liquidation-accounting bug hit repeatedly across pools rather than a single-pool flaw. No key or governance compromise — the liquidation accounting itself was wrong.

Invariant broken: a liquidation must conserve collateral and debt across every pool that shares the accounting path.

Balancer V1 — $234K, Ethereum, August 31

A fixed-point rounding flaw on the join path of the legacy V1 BPool. joinswapPoolAmountOut lets the caller specify the BPT output, and calcSingleInGivenPoolOut reverse-computes the required input via 18-decimal fixed-point math — with no minimum effective input, no minimum pool balance, and no relative-error guard. MIN_BALANCE is enforced only in bind/rebind, not on the join. The attacker first compressed the pool's WBTC reserve to dust via public swaps, which made the computed input round down to 1 satoshi while full BPT was still minted. Funded by nested flash loans from Spark/Aave, Morpho, and Uniswap V3, they minted 4,408.8 BPT at near-zero cost, then exited proportionally to drain DPI, USDC, WETH, and WBTC.

Invariant broken: minting pool shares must require a proportional, non-dust input; a join must not mint full BPT when the computed input rounds to near-zero.

What’s a Rich Text element?

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.

  1. Follow-up: Conduct a follow-up review to ensure that the remediation steps were effective and that the smart contract is now secure.
  2. 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.

Exploit Contract: 0x2abc22eb9a09ebbe7b41737ccde147f586efeb6a

Ready to Shift Security Assurance In-House? Talk to Our Security Experts Today.