Base vault drain: $6M in wstETH, gas from Tornado Cash — and 1,000 wstETH stuck in a seven-day bridge window
PublicAML · On-chain investigation · 4 October 2026
On the morning of 4 October a vault on Base lost 1,783 wstETH, about $6 million, after a fresh contract was put on its whitelist and allowed to take the vault’s Aave position. The vault’s owners are unknown. We followed the money the same day. The attacker paid for gas with ether withdrawn from Tornado Cash two and a half hours before the drain. The wstETH is now on its way to Ethereum through the Lido bridge — and that bridge makes it wait: 1,001 wstETH cannot be spent on Ethereum until about 11 October. Another 782 wstETH is still on Base.
1,783.067 wstETH
taken from the vault, ≈ $6M
1,001 wstETH
in the 7-day withdrawal window to Ethereum
782.067 wstETH
still on Base, on one address
06:43 UTC
gas withdrawn from Tornado Cash, 2.5 h before
What happened
The vault, 0xD1895f2019c2152FC2b9022D57f19198c4CFCABC, held a leveraged wstETH position on Aave. It is run by a Safe, 0x6b27512a5943Ed327f6cb6C3EC1f0398229f42C4, that needs three of seven signatures; nobody has said whose they are. The vault lets whitelisted contracts move its Aave receipt tokens.
At 08:52 and 08:53 UTC the Safe sent two transactions to the vault that changed that whitelist — according to ExVul, first removing and then re-adding the attacker’s contract, 0xcdFE91301356da873562EF513828a60dba1F569d. We checked both: each carries three valid owner signatures. In other words, the change went through the vault’s own approval process. Whether three owners’ keys were stolen or something else happened, the chain does not say.
Two minutes later the contract began pulling the vault’s aBaswstETH — a 1-token test at 08:55, then 100, 500, 500, 500 and 182.067 between 09:08 and 09:12. Each batch was passed straight to the wallet that deployed the contract, 0x0B5126e1bc27C0de77e02e97945760A674EdB034, which at 09:23 redeemed all 1,783.067 aBaswstETH on Aave for wstETH in one transaction.
| When (UTC, 2026) | From | To | Amount | Tx |
|---|---|---|---|---|
| 4 Oct 06:43 | 0x12D66f…16B8Fc | 0x707877…3366EF | 0.098 ETH (Tornado Cash) Ethereum: Tornado Cash 0.1 ETH pool pays a fresh address | 0x0b5224…45c434 |
| 4 Oct 06:46 | 0x707877…3366EF | 0x3154Cf…0F2C35 | 0.05 ETH → Base bridged to the attacker wallet on Base | 0x6eecb6…df6045 |
| 4 Oct 08:10 | 0x0B5126…EdB034 | 0xcdFE91…1F569d | contract set up attacker contract initialised | 0x122dc2…269ce5 |
| 4 Oct 08:53 | 0x6b2751…9f42C4 | 0xD1895f…CFCABC | whitelist (3 of 7) Safe re-adds the contract to the whitelist, 3 valid signatures | 0xed265f…bf2810 |
| 4 Oct 08:55–09:12 | 0xD1895f…CFCABC | 0xcdFE91…1F569d | 1,783.067 aBaswstETH last of six pulls (1, 100, 500, 500, 500, 182.067) | 0xf1c944…a9cd7e |
| 4 Oct 09:23 | 0x0B5126…EdB034 | 0xA238Dd…98d1c5 | → 1,783.067 wstETH all aBaswstETH redeemed on Aave for wstETH | 0x557bfd…67ee8c |
| 4 Oct 10:47 | 0x0B5126…EdB034 | 0xC73448…297f8D | 1,782.067 wstETH to the bridging address (1 wstETH test sent at 09:24) | 0x20fb64…6be145 |
| 4 Oct 12:10 | 0xC73448…297f8D | 0xac9D11…4287AB | 1,000 wstETH → Ethereum Lido wstETH bridge: withdrawal to Ethereum started | 0x7b8560…723e14 |
| 4 Oct 13:44 | 0xC73448…297f8D | 0x490480…74E97e | proved on Ethereum withdrawal proved on Ethereum; claimable after ~7 days | 0xc53a6c…539024 |
The gas came from Tornado Cash
The attacker wallet on Base was empty until 06:49 UTC, when 0.05 ETH arrived through Base’s own bridge from Ethereum. The sender on Ethereum, 0x707877cE44282896E417EbBDc5e7d4620A3366EF, had been created minutes earlier: at 06:43 it received 0.098 ETH withdrawn from Tornado Cash’s 0.1 ETH pool, and at 06:46 it bridged 0.05 ETH of it to the attacker wallet on Base.
So the attack was prepared at least two and a half hours before the first token moved, and its fuel was laundered first. That rules out an accident or a signer acting on impulse: someone set this up.
Seven days on the bridge
At 10:47 the attacker wallet sent 1,782.067 wstETH to a new address, 0xC73448432a05deeA5Ea18a07D3b5d9ccf6297f8D (after a 1 wstETH test an hour earlier). That address chose the slowest exit available: Lido’s official wstETH bridge from Base to Ethereum. It withdrew 1 wstETH at 09:27 and 1,000 wstETH at 12:10, both to its own address on Ethereum, and it paid for Ethereum gas through Gas.zip.
A withdrawal from Base to Ethereum is not instant. It has to be proved on Ethereum and then wait out a challenge period of about seven days before the coins can be claimed. The attacker proved both withdrawals on Ethereum, at 10:43 and 13:44 UTC on 4 October. Until about 11 October, those 1,001 wstETH exist on neither chain in spendable form. When the window closes they will appear at the same address on Ethereum.
The remaining 782.067 wstETH is still on Base at 0xC73448432a05deeA5Ea18a07D3b5d9ccf6297f8D, as of 4 October 16:00 UTC — most likely waiting for the same route.
wstETH cannot be frozen by its issuer. What the seven days do give is time: for the vault’s owners to come forward, for Base and its security council to look at the withdrawals, and for every exchange to recognise the address before the coins arrive.
What this page does not say
It does not say who controls any address, and it does not say any signer of the Safe is responsible. That the whitelist change carried three valid signatures is a fact on chain; how those signatures came to be made is not. The incident itself was first reported by Blockaid, PeckShield, CertiK and ExVul; the gas source, the bridge withdrawals and the balances are our own reading on 4 October 2026.
Check an address yourself
Free, no sign-up. Paste any address to see whether it is linked to this or any other incident:
Sources: Base and Ethereum chain data via Blockscout, read on 4 October 2026; Blockaid, PeckShield, CertiK and ExVul for first reports and the whitelist sequence; Bitcoin.com News and The Crypto Times for the vault and Safe addresses. This is an information resource about transactions between addresses, not financial or legal advice, and it names no individual as responsible for anything.