Drift Protocol Security Council Durable-Nonce Admin Takeover / CVT Counterfeit-Collateral Drain (2026-04-01)
- Name: Drift Protocol Security Council durable-nonce admin takeover / CVT counterfeit-collateral drain
- Date: 2026-04-01
- Protocol: Drift Protocol
- Chain: Solana, with cashout bridged to Ethereum
- Category: stored-privileged-approval persistence / blind-sign payload substitution / signer-quorum compromise / counterfeit collateral admission / oracle manipulation
- Loss: about
$285.3M - Summary: On 2026-04-01, attackers used months of social engineering, compromised contributor devices, and Solana durable-nonce transactions to collect valid approvals from
2-of-5Drift Security Council signers before execution day. When the stored Squads transactions were finally broadcast, they transferred Drift admin authority to attacker-controlled addressH7PiGqqUaanBovwKgEtreJbKmQe6dbq6VTrw6guy7ZgLwithout needing to break any onchain signature checks. With that authority, the attacker initialized a new spot market for attacker-created tokenCVT, pointed it at an attacker-controlled oracle, gave it permissive collateral parameters, and raisedwithdraw_guard_thresholdlimits on major real-asset markets to500,000,000,000,000. An attacker account then deposited500,000,000 CVTand used the fake collateral value to withdraw real assets — especially JLP, USDC, cbBTC, USDT, USDS, WETH, dSOL, and JitoSOL — in a rapid drain worth about$285.3M. The decisive invariant failure was not a bug in Drift’s runtime math; it was that valid admin signatures plus zero-delay authority were enough to rewrite what the protocol considered acceptable collateral and withdrawable value. - Trigger / entry point:
- Drift’s investigation and later reporting describe a multi-month social-engineering operation in which attackers posed as a legitimate quant / integration counterpart, built real relationships with contributors, and compromised at least two contributor devices through malicious tooling and app-delivery vectors.
- On 2026-03-23, four durable nonce accounts were created, including two associated with Drift Security Council members and two attacker-controlled accounts. Drift later published those nonce accounts in its public timeline.
- Drift then migrated its Security Council to a
2-of-5configuration with zero timelock around 2026-03-26 / 2026-03-27. By 2026-03-30, the attacker had already re-established durable-nonce coverage against the updated signer set. - Separately, on 2026-03-12 the attacker created
CarbonVote Token (CVT), minted750,000,000units, seeded shallow Raydium liquidity, wash-traded it around$1, and prepared an oracle path the attacker controlled. - When the attacker finally broadcast the pre-signed durable-nonce transactions on 2026-04-01, Drift’s admin surface accepted them as ordinary valid Security Council actions.
- Root cause:
- Drift concentrated high-impact powers — admin transfer, spot-market creation, oracle configuration, collateral-weight changes, and withdrawal-guard changes — behind a low-threshold
2-of-5Security Council with zero timelock. - Solana durable nonces removed the usual short expiration window for mistaken signatures, so once the attacker harvested signer approvals, the malicious transactions remained executable until the chosen attack moment.
- The signer workflow failed at intent verification: the decisive problem was not stolen seed phrases but that signers approved a different effective action than the one they believed they were authorizing.
- After admin capture, Drift had no independent asset-admission guard that could stop a freshly created, attacker-manufactured token with fake price history from becoming live collateral.
- Withdrawal guardrails were themselves admin-controlled, so the same compromised authority that listed fake collateral could also remove the throttles that might otherwise have slowed the drain.
- Drift concentrated high-impact powers — admin transfer, spot-market creation, oracle configuration, collateral-weight changes, and withdrawal-guard changes — behind a low-threshold
- Exploit path:
- Over roughly six months, attackers cultivated trust with Drift contributors through conferences, Telegram chats, product discussions, and an apparently legitimate ecosystem-vault / integration story.
- According to Drift’s later investigation, the attackers compromised contributor devices through at least two malware vectors, including a malicious code repository and a fake TestFlight-distributed app.
- On 2026-03-12, the attacker created
CVTat mint addressG84LEhbNMR1yYbHgHbnNYNSK8mpTKcazh5jcW5yMPQKo, minted750,000,000tokens, and began manufacturing fake market legitimacy with shallow liquidity and wash trading. - On 2026-03-23 and again on 2026-03-30, the attacker prepared durable-nonce accounts associated with Drift Security Council signers, preserving valid signer approvals for later Squads execution even across Drift’s council migration.
- At about 16:05 UTC on 2026-04-01, transaction
2HvMSgDEfKhNryYZKhjowrBY55rUx5MWtcWkG9hqxZCFBaTiahPwfynP1dxBSRk9s5UTVc8LFeS4Btvkm9pc2C4Hcreated and approved a malicious admin-transfer proposal. - One second later, transaction
4BKBmAJn6TdsENij7CsVbyMVLJU1tX27nfrMM1zgKv1bs2KJy6Am2NqdA3nJm4g9C6eC64UAf5sNs974ygB9RsN1advanced the durable nonce, approved the proposal, and executed the stored Squads flow that transferred Drift admin authority to attacker-controlled addressH7PiGqqUaanBovwKgEtreJbKmQe6dbq6VTrw6guy7ZgL. - With admin authority captured, transaction
4a5962Rdqd9pkXtk9DMQ9ZYhdGb2k9gPw71GvukJgELhxbCY5gm1c1hhKdwuGefyqJ3XMvihUTDNDn3qbXnst82Xinitialized Drift spot market63forCVT, configured oracleB6X3YojuJcfHnTTre68b2XxDPCVTfeA4N7ZJEpME2nFp, and raised withdrawal-guard thresholds on five major markets to500,000,000,000,000. - The attacker initialized a Drift user account in transaction
4xzb1AXSw45Q8SoPkACXFyFUwGtYWQauuDmiwEDXijYDmEfRCz9ZPXSooSy1CzMbeW66kg9uayJp3QW38YdTMFxT, then deposited500,000,000 CVTin transaction5V72ZK1WejP5Mh3uryEy6BZCV6ukSAnZBFSvHTqfD4NS38xKJUuh4RV5F8D4tDbgMsB2dcTJyZf7hLxH34nCRHRE. - Drift now treated the attacker’s nearly worthless CVT inventory as hundreds of millions of dollars of collateral. Over about 31 withdrawals in roughly 12 minutes, the attacker drained real assets to recipient wallet
HkGz4KmoZ7Zmk7HN6ndJ31UJ1qZ2qgwQxgVqQwovpZES, including about42.72M JLP,71.42M USDC,164.35 cbBTC,5.65M USDT,5.25M USDS,2,200.59 WETH, and large quantities of Solana LSTs and other tokens. - The attacker then swapped and bridged much of the stolen inventory off Solana, with reporting noting more than 100 Circle CCTP transfers carrying roughly
$232Mof USDC toward Ethereum before further conversion into ETH.
- What the attacker needed to be true:
- Two compromised or deceived Security Council signers had to be enough to satisfy Drift’s effective authority threshold.
- Drift had to rely on durable-nonce-compatible signing workflows without a revocation window, transaction-intent verification layer, or timelock that could catch delayed malicious execution.
- The Security Council had to retain live power to add new collateral markets, set oracle sources, and loosen withdrawal limits without an independent quarantine or allowlist.
- Drift’s collateral engine had to be willing to honor a fresh, attacker-created token as borrowable truth once admin parameters said it was acceptable.
- Drift’s vaults had to hold deeper-liquidity assets than the true executable value of the posted CVT collateral.
- Technical anatomy worth remembering:
- Drift is a clean example of admin capture monetized through collateral admission rather than through a direct
upgradeTo()-style drain. The attacker first captured authority, then used ordinary protocol features to teach Drift that fake collateral was real. - Durable nonces are central to the case. The important security lesson is not just
blind signing is dangerous, but that on Solana a mistakenly signed durable-nonce transaction does not age out the way a recent-blockhash transaction normally would. - The cashout path had two layers: first admin capture, then counterfeit collateral admission. That makes Drift a useful bridge between signer-compromise incidents like Radiant / Bybit and solvency-fiction incidents where attacker-minted paper is cashed out through deeper reserve assets.
- Raising
withdraw_guard_thresholdto500,000,000,000,000on major markets mattered as much as listing CVT. Fake collateral alone would have been less useful if the ordinary withdrawal throttles had still constrained outflows. - The incident also preserves a hard timing lesson: once zero-timelock admin control was transferred, the economically decisive actions — market creation, oracle substitution, collateral deposit, and reserve withdrawals — unfolded in minutes.
- Drift is a clean example of admin capture monetized through collateral admission rather than through a direct
- Representative transactions and addresses:
- Drift Security Council admin-transfer proposal tx:
2HvMSgDEfKhNryYZKhjowrBY55rUx5MWtcWkG9hqxZCFBaTiahPwfynP1dxBSRk9s5UTVc8LFeS4Btvkm9pc2C4H - Drift Security Council admin-transfer execution tx:
4BKBmAJn6TdsENij7CsVbyMVLJU1tX27nfrMM1zgKv1bs2KJy6Am2NqdA3nJm4g9C6eC64UAf5sNs974ygB9RsN1 - Admin setup / market-creation / withdrawal-guard tx:
4a5962Rdqd9pkXtk9DMQ9ZYhdGb2k9gPw71GvukJgELhxbCY5gm1c1hhKdwuGefyqJ3XMvihUTDNDn3qbXnst82X - Attacker user initialization tx:
4xzb1AXSw45Q8SoPkACXFyFUwGtYWQauuDmiwEDXijYDmEfRCz9ZPXSooSy1CzMbeW66kg9uayJp3QW38YdTMFxT - CVT deposit tx:
5V72ZK1WejP5Mh3uryEy6BZCV6ukSAnZBFSvHTqfD4NS38xKJUuh4RV5F8D4tDbgMsB2dcTJyZf7hLxH34nCRHRE - First major JLP withdrawal tx:
2jCAE2SakEHtaZJbSCftpTGV4RKCYsN7Bd2cwu6nL4sumtmvX9PZrxLFYL4wK5vKBtfyu8S1EN2cTw2vcQPB4QfM - Large USDC withdrawal tx:
5cvVsx81CNMSQ3y68oLaDPhDhqH6CJkiZDDoebZRTeNuf8UkoZ4GPnYRxt1BAidg4QtjN8bz7wqxNmJoxt8GTdBS - Large cbBTC withdrawal tx:
2vQE6pDmHLfP7dkZLECPMELEAjxePRkm3MKhXDKA8sNBoq7uMGqT5R6UtQXbFznhVsjssj7NTX53YHWKyD5HewPt - Attacker-controlled admin address:
H7PiGqqUaanBovwKgEtreJbKmQe6dbq6VTrw6guy7ZgL - CVT mint:
G84LEhbNMR1yYbHgHbnNYNSK8mpTKcazh5jcW5yMPQKo - CVT market account:
DVYXHwLhwALZm94pChALZDJ2b6a7uZTKPXntAGMQtRoM - CVT vault:
FzzXwSiwovcAe3BVcc8J4VNPFGKNNsZa2qkPNVuPZnQ5 - Primary attacker execution wallet:
55udxhScWQxM7cC9d1NPBQoEDC7B38w81EWKPZsM7ZCW - Primary recipient / loss-tracking wallet:
HkGz4KmoZ7Zmk7HN6ndJ31UJ1qZ2qgwQxgVqQwovpZES
- Drift Security Council admin-transfer proposal tx:
- Response / mitigation:
- Drift acknowledged the incident within hours, suspended core protocol functions, and later said all remaining protocol functions had been frozen while the investigation proceeded.
- The team removed compromised wallets from the Security Council multisig, worked with SEAL 911, forensic partners, exchanges, bridges, Circle, and law enforcement, and published public timelines describing the durable-nonce setup.
- Later reporting tied the operation with medium-to-high confidence to the same DPRK-linked threat cluster associated with the 2024 Radiant Capital compromise.
- The aftermath also emphasized controls Drift had lacked at execution time: higher signer threshold, timelock enforcement, dedicated signing devices, stricter transaction verification, and stronger collateral allowlisting / quarantine.
Pattern tags
- harvested admin-intent replay
- signer-intent spoofing
- Signer-quorum compromise
- Counterfeit collateral admission
- Oracle manipulation
- Harvested durable-nonce approvals stayed executable long after the original review moment, so delayed admin authority became a first-class control surface
- One compromised admin quorum controlled both governance truth and the downstream collateral / withdrawal knobs that turned fake CVT into real reserve outflow
- Zero-delay Security Council powers meant
captured signer intentimmediately becamelisted market + live oracle + relaxed withdrawal guard + cash-out path
Why the exploit worked
- Drift’s signer workflow failed twice at once: first at intent binding, because contributors did not preserve one machine-checkable object across
reviewed Squads action→signed durable-nonce transaction→executed admin effect; then at freshness, because durable nonces let those captured approvals remain live until the attacker had already prepared CVT, shallow liquidity, and the cash-out path. - The Security Council did not just hold a narrow emergency role. A
2-of-5quorum with zero timelock could transfer admin authority, list new collateral, choose oracle sources, and raise withdrawal limits on real asset markets in the same short execution window. - Drift also lacked a strong independent asset-admission boundary below admin authority. Once the attacker controlled market creation and oracle wiring, the protocol accepted a fresh attacker-manufactured token as borrowable collateral quickly enough that no stronger downstream authenticity check stopped it.
- Withdrawal containment lived behind the same compromised admin lane. Raising
withdraw_guard_thresholdon major markets to500,000,000,000,000meant the attacker did not need to fight a second, slower control plane after counterfeit collateral was admitted. - The attack was therefore not only
multisig compromiseand not onlybad collateral listing. It was one joined failure where poisoned approvals, delayed execution, asset admission, oracle publication, and reserve-withdrawal throttles all sat behind the same captured trust root.
Three stored-approval and admin-cashout promotions this incident collapsed
- Some signer-approved admin object still existed at all
- Drift had real durable-nonce-backed Squads approvals and a live Security Council lane that could still transfer admin authority later.
- This is only the weakest fact:
a stored root-capable object remained reachable for future execution.
- That stored object still counted as fresh Security Council authority at execution time
- The sharper failure was not just that the bytes were once valid, but that Drift still treated months-long socially engineered, nonce-backed approvals as current council intent even after environment drift, signer compromise, and council migration.
- This is the freshness question:
yesterday's captured approval still counted as today's authentic governance authority.
- That accepted authority still deserved this much downstream solvency and withdrawal power right then
- Even after admin capture, a healthier system would not have let the same lane immediately transfer authority, list
CVT, choose its oracle, relax collateral controls, raisewithdraw_guard_threshold, and cash out deep real-asset reserves. - This is the authority-budget question:
accepted admin truth still inherited live counterfeit-collateral publication plus near-immediate reserve-release authority.
- Even after admin capture, a healthier system would not have let the same lane immediately transfer authority, list
Detection and audit pivots
- Preserve and compare the exact reviewed Squads proposal, durable-nonce transaction payload, signer-device prompt, signer-set version, and finally executed admin actions whenever Solana governance or treasury workflows use nonce-backed delayed execution. The central forensic question is whether the approval object that stayed live was still the one humans thought they had approved.
- Treat durable nonce accounts, queued multisig proposals, partially collected signatures, and other stored admin approvals as live root authority inventory. After any signer compromise suspicion, responders should be able to enumerate and invalidate every still-executable privileged object before attackers choose their execution window.
- Audit whether one quorum can both capture admin truth and immediately cash it out through asset-admission and withdrawal knobs. If the same lane can transfer authority, list a new collateral market, choose its oracle, relax withdrawal caps, and withdraw reserves without a second delay boundary, the protocol has fused too much solvency power into one ceremony.
- Stress-test counterfeit-collateral scenarios that begin with compromised governance truth rather than with a user-callable code bug. The right question is not only
can someone list a fake asset?butwhat independent quarantine, liquidity floor, oracle allowlist, or withdrawal brake would still survive if they did? - Alert on stored privileged approvals that remain live across signer-set changes, signer-device anomalies, or emergency council migrations. Drift is a reminder that
we rotated the councilis not a containment story if old durable-nonce authority still executes.
Failure-prevention checklist
- Treat durable nonce accounts, queued Squads proposals, partially collected admin signatures, and signer-set migration leftovers as live root-authority inventory. If the signer environment becomes suspect, responders should be able to enumerate and kill every still-executable privileged object before attackers choose the broadcast moment.
- Separate signer-intent review from signer freshness. A signer should approve one exact admin effect bundle, and that approval should either expire quickly or be re-attested when the nonce, signer set, execution window, or proposal shell changes.
- Do not let one low-threshold emergency council both redefine protocol truth and immediately cash it out. Market listing, oracle admission, collateral-weight changes, withdrawal-cap increases, and admin transfer should not all sit behind the same zero-delay lane.
- Force fresh collateral through an independent admission boundary even after admin approval: issuer allowlists, liquidity and market-depth floors, independent oracle allowlists, staged borrow factors, delayed withdrawal authority, and route-specific reserve caps.
- Keep withdrawal throttles outside the same compromised lane wherever practical. If the actor who can list counterfeit collateral can also zero or massively raise outflow guards, the protocol has fused governance capture and reserve release into one ceremony.
- Rehearse degraded modes for signer compromise that automatically narrow permissions: no new collateral listing, no oracle rewiring, no withdrawal-threshold expansion, lower per-asset outflow limits, and immediate cancellation of stored privileged objects.
- Preserve a machine-checkable audit trail from reviewed proposal → signed durable-nonce payload → executable Squads object → final onchain effect so investigators can prove whether signers actually approved the action that executed.
Audit prompts
- Which durable nonce accounts, queued multisig proposals, partially signed admin transactions, or migration-era approvals remain executable tonight, and who can revoke them quickly?
- If two signers are compromised or deceived, what exact powers still become immediately available: admin transfer, oracle rewiring, new market listing, collateral-parameter changes, withdrawal-cap increases, or reserve movement?
- Does a signer review one exact effect bundle, or can the proposal shell, signer set, nonce context, or execution object drift after the human review moment?
- If governance truth is captured, what independent control still prevents a newly created token with attacker-authored liquidity and price data from becoming money-good collateral?
- Are withdrawal brakes, mint ceilings, and reserve-outflow caps governed by the same path that can admit new collateral, or do they live behind a slower or more independent boundary?
- After signer rotation, signer-device compromise, or emergency council migration, can responders prove that old stored approvals no longer carry live authority?
- What telemetry would flag
validly signed but economically absurdadmin use fast enough: sudden new-market creation, oracle changes to thin assets, giant withdrawal-threshold jumps, or large collateral deposits into a just-listed market? - Does the protocol’s public trust story describe the real effective threshold, including durable approvals and zero-timelock emergency powers, or only the visible multisig count?
Lessons that should already be standard
Two valid signaturesis not the same thing astwo humans approved the same admin action at execution timeonce durable nonces let old review moments stay live.- Emergency councils are custody surfaces when they can redefine collateral truth, oracle truth, and withdrawal truth in the same ceremony.
- Stored privileged objects are part of the live threshold. Rotating signers is not containment if yesterday’s nonce-backed approvals still execute tomorrow.
- Admin-approved listing is not enough to make an asset safe collateral. Fresh issuer identity, real liquidity, oracle provenance, and reserve-outflow rights need their own quarantine.
- Withdrawal guards are not meaningful if the same compromised authority can raise them to infinity right before cash-out.
- Many governance-capture incidents are really solvency incidents one step later: the attacker steals admin truth only because the protocol will then honor counterfeit collateral, bad oracle state, or fake reserves as spendable reality.
Why this incident matters
- It is one of the cleanest Solana examples of durable-nonce mechanics breaking the comforting assumption that a mistaken signature dies quickly if it is not executed immediately.
- It also shows how signer compromise and solvency-fiction exploits compose. The attacker did not directly withdraw every reserve by one privileged opcode; instead, they used stolen governance truth to manufacture fake collateral and let Drift’s own accounting pay it out.
- Finally, it is a high-value reminder that collateral admission is itself an admin-key risk surface. If privileged actors can list any market with any oracle and any withdrawal cap, then multisig hygiene and asset-admission policy are the same security problem.
Internal linkages
- Core recurring patterns: stored-privileged-approval-persistence, blind-sign-payload-substitution, signer-quorum-compromise, counterfeit-collateral-admission, oracle-manipulation.
- Positive-design companions: signer-intent-truth-security-object, stored-privileged-approval-expiry-and-revocation-discipline, timelock-action-bundle-commitment, collateral-canonical-asset-proof-bundle-and-issuer-authenticity-discipline, and collateral-admission-lag-and-borrow-side-quarantine — the sharper follow-up is not only how Drift should have bound signer intent and delayed admin execution, but also how durable approvals should have decayed or been revoked before the compromised admin path could cash out, and what independent collateral-authenticity and rollout controls should have survived once that path failed.
- Closest incident companions: radiant-capital-admin-multisig-compromise-malicious-ownership-transfer-upgrade-drain-2024-10-16, bybit-eth-cold-wallet-safe-ui-compromise-malicious-mastercopy-swap-drain-2025-02-21, fortress-protocol-fts-collateral-listing-governance-capture-public-submit-oracle-manipulation-drain-2022-05-08, and ionic-money-mode-counterfeit-lbtc-collateral-admission-drain-2025-02-04.
Control surface
-
The leverage sat in Drift’s Security Council signer workflow, durable-nonce transaction validity, zero-timelock admin powers, spot-market and oracle admission controls, and withdrawal-guard thresholds on core asset vaults.
-
Drift did not mainly fail because perps math or lending arithmetic broke. It failed because compromised admin truth could redefine what counted as collateral and then remove the throttles protecting real reserves.
-
Sources:
- https://x.com/DriftProtocol/status/2039564437795836039
- https://x.com/DriftProtocol/status/2039564444510846997
- https://x.com/DriftProtocol/status/2040611161121370409
- https://rekt.news/drift-protocol-rekt
- https://www.chainalysis.com/blog/lessons-from-the-drift-hack/
- https://blocksec.com/blog/drift-protocol-incident-multisig-governance-compromise-via-durable-nonce-exploitation
- https://nexusmutual.io/blog/drift-protocol-incident-report
- https://www.quillaudits.com/blog/hack-analysis/drift-protocol-multisig-exploit
- https://solscan.io/tx/2HvMSgDEfKhNryYZKhjowrBY55rUx5MWtcWkG9hqxZCFBaTiahPwfynP1dxBSRk9s5UTVc8LFeS4Btvkm9pc2C4H
- https://solscan.io/tx/4BKBmAJn6TdsENij7CsVbyMVLJU1tX27nfrMM1zgKv1bs2KJy6Am2NqdA3nJm4g9C6eC64UAf5sNs974ygB9RsN1
- https://solscan.io/tx/4a5962Rdqd9pkXtk9DMQ9ZYhdGb2k9gPw71GvukJgELhxbCY5gm1c1hhKdwuGefyqJ3XMvihUTDNDn3qbXnst82X
- https://solscan.io/tx/5V72ZK1WejP5Mh3uryEy6BZCV6ukSAnZBFSvHTqfD4NS38xKJUuh4RV5F8D4tDbgMsB2dcTJyZf7hLxH34nCRHRE
- https://solscan.io/account/HkGz4KmoZ7Zmk7HN6ndJ31UJ1qZ2qgwQxgVqQwovpZES
-
Last reviewed: 2026-08-04 UTC