This week's report covers an incident that needed no clever exploit: about $12.5m left 79thVault on BNB Chain on 7 October 2026 because one hot wallet was allowed to move tokens out of the project's own PancakeSwap pair and tell the pool to accept the new reserves. Seven calls completed in 54 minutes.
We chose it because it is the cleanest version of the failure mode that dominated the week. Four incidents in three days — 79thVault, Onyx, Mezo and a dormant MakerDAO keeper — shared no technical detail and one design omission: unilateral authority behind a single credential, with nothing to delay or second-guess it. The 79thVault case shows the shape most starkly, because there was no bug to point at at all.
1 1. In brief
On 7 October 2026, an attacker drained about $12.5m from 79thVault, a BNB Chain project built around the 79AU token, in under an hour. The mechanism was not a flash loan, an oracle failure or a reentrancy bug. It was a privileged role: a function reserved for OPERATOR_ROLE let its holder move 79AU out of any address to any recipient and then force the PancakeSwap pool to re-sync its recorded reserves. Between roughly 07:25 and 08:19 UTC, a single hot wallet exercised that function seven times.
The role carried no multisig and no timelock, and the contract's source is not verified on BscScan — so the liquidity providers whose dollars sat in the pool could not read the function that emptied it. The proceeds were converted to 16,249 BNB, about $12.5m, and sent to a consolidation address. Two days later the attacker returned 15,000 BNB — about 92% of the haul, roughly $11m — after the project put a white-hat settlement offer on-chain; a residue including 30 BNB sent onward to KuCoin was not returned. The project's statement attributed the loss to 'weaknesses in account permission management' rather than to a bug in the token.
2 2. Background: what 79thVault is, and what the operator role does
79thVault is a BNB Chain project built around the 79AU token. The venue that matters here is the PancakeSwap 79AU/USDT pair, which held most of the token's dollar liquidity. That concentration is the first structural fact of the incident: one automated market maker pool carried the token's exit liquidity, so whatever happened to the pool's USDT reserve set the price for every holder at once.
The second structural fact is who could reach into it. The 79AU contract carries a function reserved for OPERATOR_ROLE. As the security analyses describe it, the function moves 79AU out of a chosen address to any recipient and then forces the pool to re-sync its recorded reserves. A caller therefore does not have to trade against the pool to take its USDT: the pool is instructed to accept a new reserve figure. That is a powerful primitive to place behind a single key, and the whole incident follows from it.
3 3. Mechanism: seven calls and a forced re-sync
The attacker used that function as an extraction tool. One address called it seven times, moving 2.01 million 79AU out of the pair in tranches of 10,000 to 500,000 tokens. The receiving address then sold the tokens back into the same pool across roughly 95 swaps, walking the price down with each one and pulling the pool's USDT reserve from about $15.2m to about $3.9m.
Nothing in the sequence required a clever contract exploit. Two properties of the setup did the work: the role had unilateral power, and the call had no delay and no second signature. A multisig would have required more than one key to move the tokens. A timelock would have given holders a window in which the call was visible and could be cancelled. Neither was present, so seven calls completed inside 54 minutes.
4 4. Timeline
| Time, 7 October (UTC) | Event |
|---|---|
| ~07:25 | First of seven calls to the OPERATOR_ROLE function; the pair begins releasing 79AU |
| 07:25-08:19 | 2.01 million 79AU moved out in tranches of 10,000 to 500,000 tokens, then sold back into the same pool across roughly 95 swaps |
| Within the window | The pool's USDT reserve falls from about $15.2m to about $3.9m |
| By the end of the window | Proceeds converted to 16,249 BNB, about $12.5m, and sent to a consolidation address |
| 9 October | The attacker returns 15,000 BNB, about 92% of the haul, to a wallet the team designated; a residue including 30 BNB sent to KuCoin is not returned |
5 5. Data: the numbers, and what each one measures
| Measurement | Value | What it measures |
|---|---|---|
| Total loss | ~$12.5m | 16,249 BNB at the time of the drain |
| Tokens moved out of the pair | 2.01 million 79AU | Seven calls, in tranches of 10,000 to 500,000 tokens |
| Swaps used to sell back | ~95 | The conversion of 79AU back into the pool's USDT |
| Pool USDT reserve | ~$15.2m to ~$3.9m | The liquidity the pool held before and after the drain |
| Funds returned | 15,000 BNB (~$11m), about 92% | Returned to a designated wallet on 9 October and confirmed on-chain |
| Residue not returned | ~1,249 BNB, incl. 30 BNB to KuCoin | The shortfall between the 16,249 BNB taken and the 15,000 BNB returned |
| Privileged calls | 7 | All made between roughly 07:25 and 08:19 UTC |
6 6. The same week, four permission failures
| Incident | Which permission failed | Loss | Status |
|---|---|---|---|
| 79thVault, 7 Oct | An operator role with unilateral power and no timelock, on a contract unverified at the explorer | ~$12.5m | 15,000 BNB, about 92%, returned on 9 October; a residue is outstanding |
| Onyx DAO, 6 Oct | Governance: a malicious proposal cleared the threshold, the quorum and a two-day timelock | 620 million XCN (~$2.91m) | Treasury drained; the protocol has reported losses in 2023 and 2024 too |
| MakerDAO keeper, 6 Oct | One function on a 2020 keeper missing the access check its siblings carried | 200 WETH (~$540k) | Settled four stale ETH-A auctions; no owner has come forward |
| Mezo, 5 Oct | Meta-transaction identity loss: the contract could not tell who had authorised a transfer | ~5.52 BTC taken from 36 users | Flaw patched; a settlement offer expires 14 October |
Read the four together and the pattern is not 'DeFi keeps getting hacked' but 'protocols keep handing one credential the power of the whole protocol'. 79thVault's role was unilateral. Onyx's proposal passed every check the governance system had. The MakerDAO keeper's stray function simply did not verify its caller. Mezo's contract lost track of who was speaking when a call passed through an external library. Each is a different technical bug and the same design omission: an authorisation boundary drawn too loosely, or in 79thVault's case barely drawn at all.
7 7. Why the money came back
The most interesting number in this incident is not the $12.5m taken but the $11m returned. The proceeds had been converted to 16,249 BNB and parked at a single consolidation address; when the project put a white-hat settlement offer on-chain — return the funds, keep a bounty — the attacker sent 15,000 BNB back on 9 October, about 92% of the haul. Funds that stay in one place, in one asset, are funds whose holder can be found, and findable is what made them recoverable.
The return does not answer the harder question. Whether the operator key leaked to an outsider or an insider exercised it themselves is unresolved, and the on-chain trace is identical either way — a single privileged wallet calling a function it was entitled to call. It is the same ambiguity that made the Bitget case a month of tracing rather than a single attribution; here the funds were large, concentrated and identifiable enough that a settlement was cheaper for the attacker than laundering them.
8 8. Impact assessment: who is actually exposed
| Who | Exposure | Status |
|---|---|---|
| Liquidity providers in the 79AU/USDT pair | The pool's USDT reserve, which fell from about $15.2m to about $3.9m | Loss realised in the pool; the returned BNB is earmarked to refill it |
| 79AU holders | The price impact of roughly 95 sell swaps against the token's only deep dollar pool | Ongoing |
| 79thVault | Control of the token's privilege layer | The affected role was revoked; the 8 October statement cited weak account-permission management |
| Other launchpads with operator-role functions | Unknown — it depends on whether each of them holds the role behind a multisig and a timelock | Open; the per-project question |
9 9. What this changes for due diligence
- For liquidity providers: check who can call the pool, not only what the pool holds. The reserve figure on a dashboard says nothing about whether one key can rewrite it; the contract's role table does. An unverified source is itself the answer — if the function is not published, it cannot be reviewed.
- For projects: a privileged function is a design decision, and the two cheap mitigations are multisig and timelock. Adding them does not slow routine operations much; omitting them transfers the entire upside of a compromise to whoever holds one hot wallet.
- For analysts: a statement that names neither the function, the role nor the amount is not a disclosure. 79thVault's notice cited 'weaknesses in account permission management' and said repairs were complete, but no technical post-mortem has followed, and the question of how the credential was reached is still open.
- For holders: the on-chain record is permanent, including the part nobody explains. Seven calls, roughly 95 swaps and one consolidation address are all in the history — and that trace is what turned a total loss into a 92% recovery once a settlement offer was on the table.
10 10. What would change our read
This assessment rests on the security firms' on-chain reporting, which is consistent across the analyses we read, and on the absence of any project disclosure that contradicts it. It would change materially if the operator key turns out to have been compromised by an external attacker rather than exercised internally — that would move the incident from a governance and design failure toward a plain key-management one — or if a full post-mortem showed a different loss. The $12.5m we use is the market value of the 16,249 BNB the proceeds were converted into; a reconstruction by Bitquery, reported by FinanceFeeds, puts the USDT drawn from the pool higher, near $14.35m. The two figures measure different legs of the same sequence, and we would revise toward the larger one if the project published its accounting.
The broader conclusion does not depend on those details. Four incidents in three days across 79thVault, Onyx, Mezo and a six-year-old MakerDAO keeper priced the same variable: how much unilateral authority sits behind one credential, and whether anything delays it. None of the four needed a novel attack; each needed a boundary that was not there. The fix is unglamorous and already available on every one of these chains.
11 11. In brief
79thVault lost about $12.5m on 7 October 2026 when a single OPERATOR_ROLE key — one hot wallet, no multisig, no timelock, on a contract unverified at the explorer — called a privileged function seven times to move 2.01 million 79AU out of the project's own PancakeSwap pair, then sold it back across roughly 95 swaps and pulled the pool's USDT reserve from about $15.2m to about $3.9m. The proceeds became 16,249 BNB and reached one consolidation address; the attacker returned 15,000 BNB, about 92% of the haul, two days later.
It is the week's clearest example of a failure mode this column keeps returning to: not a broken contract, but a permission granted too freely. The four incidents of the week differed in almost every technical detail and agreed on one thing — the attacker did not have to break anything, only to hold the right credential.
Sources & Methodology
- GoPlus Security — the operator-role analysis, the seven privileged calls and the pool reserve movement.
- Defimon Alerts, CertiK and PeckShield — independent on-chain analyses of the same drain and the 15,000 BNB return of 9 October.
- BscScan — the 79AU contract and its role assignments, including the unverified source.
- 79thVault — the project's 8 October statement and its 9 October recovery announcement.
- Crypto Times and ForkLog — independent coverage of the incident and the tracing.
- FinanceFeeds — reporting on the Bitquery reconstruction that puts the USDT drawn from the pool near $14.35m, above the $12.5m headline.
- Blockaid — the Onyx DAO treasury transfer used in the week's comparison, with the receiving address.
- Defimon Alerts and DeFiHackLabs — the MakerDAO ETH-A keeper analysis, with the Ethereum transaction receipt for the block and timestamp.
- Mezo — the incident report on the VotingEscrow flaw and the settlement terms.
- DefiLlama — context on the seven tracked chains used throughout this site.
Headlines and figures on this page are drawn from the outlets listed above; commentary is clearly labelled opinion and is not investment advice. Last reviewed 2026-10-12.