blockintAI · Research blog

Three Exploits, Two Trails to One Wallet: A Public Test Key, a Replayed Signature and a Fake Payout Report

BlockintAI · 2026-10-21T12:37:23.094Z

BlockintAI research. Balances, nonces and transactions were re-checked on Wednesday, October 21, 2026, at about 7:14 AM Central Time (CT), using Etherscan, BaseScan and BscScan data. Times are CT unless marked UTC. Dollar losses are the figures published by the projects and security firms cited; token amounts come from the transactions themselves.

Three small corners of decentralized finance (DeFi) were drained in three days, on three different chains.

At 1:34 AM CT on Saturday, October 18, an attacker on BNB Chain took about $152,000 from AlpsCon's AI Trade Hub by borrowing the identity of a test wallet whose private key is printed in developer tutorials. At 4:42 AM CT on Sunday, October 19, someone on Ethereum took over two old smart wallets and replayed signed instructions inside them again and again and left with about 50,656 USDC. And at 1:39 PM CT on Monday, October 20, an attacker on Base convinced Slice's payments module that a fake store had been paid, and walked off with about $41,000 of real store earnings.

Each bug is different. What they share is simpler: each system trusted something it had no reason to trust. A public key sat on a whitelist, a signature worked more than once, and a contract took a stranger's word for how much money had arrived.

Then there is the money. The AlpsCon attacker hasn't moved a cent. The other two attackers, on different chains and a day apart, sent their ETH to the same wallet address: the Argent-style attacker on Ethereum, the Slice attacker on Base. Two fresh addresses funded by that wallet have since put 10 ETH into Tornado Cash, and it still holds 34 ETH on Ethereum.

Key facts

AlpsCon AI Trade Hub (BNB Chain) Oct 18, 2026, 1:34:55 AM CT (06:34:55 UTC): one EIP-7702 transaction that made a Hardhat test account on AlpsCon's KYC whitelist run the attacker's code. ExVul puts the loss at 152,809.36 USDC; the attacker wallet received 152,295.36 USDC
AlpsCon, today The attacker wallet 0x3d9df7d20d8296286383ffe475aa7b9e548946b2 still held all 152,295.36 USDC and has sent only two transactions (Oct 21, 7:14 AM CT)
Argent-style smart wallets (Ethereum) Oct 19, 2026, 4:42 and 4:43 AM CT: two transactions took control of two wallets created in June 2020 and replayed a signed payload 19 and 9 times, per SlowMist (loss about $59.8K). The attack contract collected 50,655.92 USDC, which the attacker swapped for 20.6 ETH
Slice (Base) Oct 20, 2026, 1:39:51 PM CT (18:39:51 UTC): the FundsModule paid the attacker 8.72 ETH and 19,820.73 USDC after a fake "slicer" reported a payout. Slice puts the loss at about $41K and has offered a 10% bounty until Oct 23, 12:00 PM CT
The shared wallet 0xfba873b1e5d0256301b87ce74f79a30d6781364a received 20.68 ETH from the Argent-style attacker on Oct 20 at 3:56–4:03 AM CT, and 16.79 ETH from the Slice attacker on Base at 1:45 PM CT, which it bridged to Ethereum that evening
Where it went Two hop wallets put 5 ETH each into Tornado Cash's 1 ETH pool (Oct 20, 6:19–6:46 AM CT and 7:08–10:42 PM CT). The shared wallet still held 34.24 ETH on Ethereum (Oct 21, 7:14 AM CT)
BlockintAI reports AlpsCon attacker and exploit contract, Argent-style attacker and attack contract, Slice attacker

October 18, 1:34 AM: the most famous private key in crypto

AlpsCon runs what it calls an AI Trade Hub on BNB Chain. Users stake the project's ALPS token and earn USDC rewards from its trading results. Only wallets on a KYC whitelist can stake and claim.

That whitelist had a guest who should never have been there. According to DefimonAlerts, a security monitoring service, it included Hardhat/Anvil default account #0, 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266. Hardhat and Anvil are popular developer tools, and that account is the first test wallet they create. Its private key ships with the software and appears in countless tutorials, so anyone can sign for it. Defimon says the AlpsCon deployer added it in a bulk import on August 24, 2025, and it stayed on the list for about 14 months.

The chain shows how public that key is. When the attack came, the account's transaction count on BNB Chain already stood above 24,500.

What made the key usable as an attack tool is EIP-7702, a newer transaction type that lets an ordinary wallet temporarily run a smart contract's code. Anyone with the key can sign that permission.

The attacker wallet, 0x3d9df7d20d8296286383ffe475aa7b9e548946b2, received 0.01975 BNB for gas at 1:31 AM CT. At 1:34:48 AM it deployed a contract, 0xbe5d79b429308f6be75898dd31c5f3c0bd4ed13d. Seven seconds later it sent the attack, transaction 0x824b83f9…5fc2 in block 128,315,188. It is a type-4 (EIP-7702) transaction addressed to the Hardhat account, and it carries three signed authorizations that point that account at the attacker's new contract. For the length of one transaction, a whitelisted wallet was running the attacker's code.

The rest was accounting. ExVul, a blockchain security firm, describes the flow: a 1,027,990 USDC flash loan from Aave, a purchase of ALPS, and a stake into an older hub contract that still accepted deposits. AlpsCon's newer reward contracts (versions 7 to 9) import balances from the version before them. ExVul says they then credited the fresh stake with rewards that had been paid out before the stake existed. Defimon puts the rewards claimed at about $355,000, which emptied the main reward pool. The attacker unstaked, sold the ALPS, repaid the loan and kept the difference.

The transaction's token transfers show where the difference landed. Three USDC transfers reached 0x3d9d…46b2: 129,775.61 forwarded by the Hardhat account, plus 20,553.69 and 1,966.07 from two contracts whose verified source code on BscScan is named "AiTradeHubContract." That totals 152,295.36 USDC, matching ExVul's figure for what the attacker received. ExVul puts AlpsCon's loss at 152,809.36 USDC.

Defimon reports that the deployer removed the Hardhat account from the whitelist on October 18 at 6:40 AM CT (11:40 UTC), about five hours later. We did not find a public statement from AlpsCon itself.

Where the money went: nowhere. At 7:14 AM CT on October 21, the attacker wallet still held all 152,295.36 USDC (the Binance-Peg version of USDC on BNB Chain) and 0.019 BNB. Its nonce was 2: the contract deployment and the attack are the only transactions it has ever sent. The only activity since has been other people's junk tokens and dust, dropped into its history.

October 19, 4:42 AM: signatures that kept working

The second attack hit something older. SlowMist, a blockchain security firm, describes the target only as an "Argent-style smart wallet system": wallets that are smart contracts, with guardians who can help recover them and modules that carry out signed instructions. SlowMist does not name the product, and Etherscan shows no name tag on the wallets or the modules.

The chain does show their age. The two victim wallets, 0xe545…8f66 and 0x5a79…5440, were created through the same factory contract in June 2020. The two vulnerable contracts SlowMist names, 0xf490557d67d934440677a4f16793d5ef319b8ef5 and 0x4e50adfc953551286bbd7fee2b2b846d1d227394, were deployed on May 27, 2020. These contracts have been on-chain for more than six years.

SlowMist found two flaws. In the recovery module, an unrestricted setter let the attacker pick a recovery period so large that the calculated deadline wrapped around to a time in the past. A recovery backed by a valid guardian signature could then be finalized at once, in the same transaction, handing the attacker ownership of the wallet. In the execution module, nothing stopped the same signed instruction from running again. In SlowMist's words, it "succeeded 19 times in one transaction and nine times in the other." The attacker used those repeats to trade around a thin MARK/WETH pool.

The attacker's wallet, 0xc10609ce5c032db92e562e463b1234aab0872b02, planned ahead. At 4:31 AM CT on October 19 it received 0.0976 ETH, a withdrawal from the contract Etherscan tags "Tornado.Cash: 0.1 ETH" (tx 0x6871f0e1…1f63). At 4:35 AM it deployed its attack contract, 0x3c5884377cca79ff221936aea4a5df43293fb310. Then:

  1. 4:42:35 AM CT, block 26,225,798: tx 0xbfed8d33…a795 hit wallet 0xe545…8f66 and left the attack contract with 48,778.50 USDC.
  2. 4:43:35 AM CT, block 26,225,803: tx 0xa0ee8f91…571b hit wallet 0x5a79…5440 and added 1,877.42 USDC.
  3. 4:44 AM CT: the attacker pulled all 50,655.92 USDC out of the contract.
  4. 4:48 AM CT: it swapped the USDC for 20.60 ETH through Uniswap V2.

The 50,655.92 USDC is below SlowMist's estimate of about $59,800, which SlowMist doesn't break down by token.

Then the wallet waited about 23 hours.

October 20, 4:03 AM: the wallet in the middle

At 3:56 AM CT on October 20, the Argent-style attacker sent 1 ETH to 0xfba873b1e5d0256301b87ce74f79a30d6781364a (tx 0x5b0ee213…7e7c). Seven minutes later it sent 19.68 ETH more (tx 0xce8fb63b…946a). That was nearly everything: the 20.60 ETH from the swap plus most of what was left of its Tornado gas money. At 7:14 AM CT on October 21 it held 0.005 ETH.

Within a minute of the first payment, lookalike addresses starting "0xfba8" and ending "364a" began sending the attacker tiny amounts. This is address poisoning: someone hoped the attacker would copy the wrong address from its own history. Even thieves get targeted.

The new wallet moved quickly. Two more payments arrived within six minutes: 3.848 ETH from 0xd4058ed09e25e79c0daf8b748e49072ee4b40b98 and 3 ETH from 0xed1409195cbfd7439faa37e481c07241563272ec.

At 6:17 AM CT, 0xfba873… sent 5.05 ETH to a fresh address, 0x0d9ed4bbb6efeda5471cae1aa5f4bbe0e8f12f40 (tx 0x1d7d1d4e…bdc1). Between 6:19 and 6:46 AM CT, that address made five 1 ETH deposits through the contract Etherscan tags "Tornado.Cash: Router," each into Tornado Cash's 1 ETH pool.

That was the morning. The afternoon brought a second attacker.

October 20, 1:39 PM: a store that said it had been paid

Slice is an on-chain commerce protocol on Base. Merchants run "slicers," store contracts whose sales revenue settles through a contract Slice calls the FundsModule.

Defimon explained the flaw in a post on October 21. The FundsModule's release function "called any address the caller passed in as a 'slicer'... and credited whatever amount that address said it had paid out. It never checked that the address was a real Slicer or that any funds had actually arrived." SlowMist's alert describes the same root cause: the function trusted amounts "returned by caller-selected source contracts without verifying that the corresponding ETH or USDC was actually received."

So the attacker did two things in one call. According to Defimon, it first force-released the unclaimed sales revenue of about 70 real Slice stores into the module. Then it passed in its own fake slicer, which reported the module's whole balance as its payout, and withdrew it.

The attacker wallet, 0xc34572ebb26b9a4c54854aae8d2347108e8c892f, received 0.0195 ETH for gas at 1:26 PM CT. Between 1:37 and 1:38 PM it deployed three contracts. Less than two minutes after the third, it sent tx 0x02b039a6…790a, in Base block 52,866,122 at 1:39:51 PM CT. The FundsModule proxy (0x61bcd1ed11fc03c958a847a6687b1875f5eacaaf) paid the attacker 8.72 ETH and 19,820.73 USDC.

Slice confirmed the incident on X on October 21 at 4:50 AM CT. It said the attacker exploited "a vulnerability in a legacy function of Slice's settlement contract, taking about $41k in store earnings that hadn't yet been withdrawn." It added that most of the money was Slice's own or tied to past partner initiatives and that fewer than 10 user stores were affected: "Funds in users' wallets were never at risk." Slice said it paused the contracts and fixed the flaw within an hour of being alerted, and that the protocol is paused while it completes a review.

The money moved fast:

That is the same address the Argent-style attacker had paid on Ethereum about ten hours earlier. It is an ordinary wallet, not a contract, on both chains. It has sent transactions on both, so the same private key controls it on Base and on Ethereum.

October 20, evening: across the bridge and into the mixer

The ETH sat on Base for about five hours. Then, between 6:57 and 7:03 PM CT, 0xfba873… sent it to Ethereum in five pieces: 0.5, 5, 5, 5 and 1.287 ETH. Each one went to a Base contract through a function named startViaRubic; Sprunky identifies the route as Rubic and Relay. Within about eight seconds of each, a matching amount, minus a small fee, landed in the same wallet on Ethereum, from addresses Etherscan tags "Relay: Solver." The five arrivals total 16.78 ETH.

Four minutes after the last one, at 7:07 PM CT, the wallet sent 5.02 ETH to another fresh address, 0xa382be41d349404bcf3c0abff767651f9332567c (tx 0xf51f6fc1…136b). That address made five more 1 ETH deposits into Tornado Cash's 1 ETH pool through the same router: three between 7:08 and 7:16 PM CT, and two at 10:37 and 10:42 PM CT.

The pattern repeated exactly: the shared wallet sends a little over 5 ETH to a new address, which makes five 1 ETH Tornado deposits and keeps the change for gas.

Slice noticed where its money went. Between 7:54 and 8:00 PM CT, the address that deployed Slice's FundsModule proxy in July 2023, 0xae009d532328ff09e09e5d506ab5bbec3c25c0ff, sent the same on-chain message to the attacker on Base and to 0xfba873… on both Base and Ethereum:

"This is Slice (slice[.]so). Return 90% of the funds (15.11 ETH) to 0x87199cd27a6Cdc97659A9FF40e662c2821466B0a on Base by Friday, October 23, 17:00 UTC and keep the remaining 10% as a white-hat bounty. We will treat this as a white-hat recovery. Otherwise, we will pursue all available options to recover the funds."

(We defanged the domain in the quote.) The deadline is noon CT on Friday. As of 7:14 AM CT on October 21, the return address held no ETH and had never sent a transaction.

Where it stands. On Ethereum, 0xfba873… has sent only two transactions, the two roughly 5 ETH payments that fed Tornado Cash. It held 34.24 ETH at 7:14 AM CT on October 21. In all it took in about 44.3 ETH on Ethereum: 20.68 ETH from the Argent-style attacker, 16.78 ETH bridged from the Slice proceeds, and 6.85 ETH from the two other wallets. Ten ETH has gone to Tornado Cash so far.

Lookalike "poisoning" addresses also followed every move. Fakes of the shared wallet dusted both attackers, and fakes of each hop wallet dusted the shared wallet within minutes of each payment.

Sprunky, who traced the same route, calls 0xfba873… "a collection wallet for multiple unrelated incidents." The chain shows that two attackers, working different bugs on different chains, both paid it. It doesn't show whether one person ran both attacks or several people share one cash-out wallet. Either way, the wallet still holds 34.24 ETH, and most of what it took in came from these two exploits. Anyone can watch it.

What ties them together

Trust that was never checked. AlpsCon's whitelist trusted an address whose key is public. The Argent-style modules trusted that a signature would only be used once. Slice's module trusted a contract to report its own payout honestly. None needed a new kind of bug. Each came down to a missing check in code or settings that had been live for months or years.

EIP-7702 cuts both ways. It lets ordinary wallets borrow smart-contract features. It also means any account whose key leaks, including a famous test key, can be made to run an attacker's code. A whitelist entry for a known test account is no longer just untidy; it's an open door.

Purpose-built contracts, minutes before. Each attacker deployed its own contract shortly before striking: seven seconds before at AlpsCon, seven minutes before on Ethereum and less than two minutes before at Slice.

Three different exits. The AlpsCon money hasn't moved at all. The Argent-style and Slice money went to a shared wallet, the Slice ETH by way of a bridge from Base. That wallet has funded 10 ETH of Tornado Cash deposits, and most of its balance is still waiting. Tornado Cash also sits at the start of the Argent-style story: the attacker's gas money came out of its 0.1 ETH pool. Our earlier post on the Drift and Aztec Connect exploiters' deposits into Tornado Cash shows the same mixer at the end of much larger trails.

What protocols and users can take from it

  • Audit your whitelists for test accounts. Default Hardhat, Anvil and Ganache accounts have public keys. If one is on a list that grants rights, anyone has those rights.
  • Old wallets are still live code. Smart wallets deployed years ago keep running whatever modules they were given. If you still use one, check whether its maker supports it, and move funds you can't account for.
  • Never trust a reported number. A contract that pays out should check its own balance before and after, not a value another contract hands back.
  • Ignore unsolicited "recovery" offers. If you lost funds in one of these incidents, follow the project's official channels. You can report it to the FBI at ic3.gov and to the FTC at reportfraud.ftc.gov, and file a report at blockint.ai with the addresses and transaction IDs. It's free, and anonymous reports are accepted.

#DeFi #CryptoHack #Web3Security #EIP7702 #TornadoCash

Sources

AlpsCon AI Trade Hub

Argent-style smart wallets

Slice

The shared wallet and Tornado Cash