Research
Methodology2026-05-15

Historical-Incident Replay Benchmark

Generator: runner/replay_incidents.py Source: documents/incidents/*.yml (architectural_fingerprint ground truth) Scan results: runner/results/<corpus-id>.json

Topline

Metric Value
Total Solana incidents in catalogue 39
Mapped to corpus pre-hack source 24
Incidents detected (≥1 exact fingerprint rule fired) 24
Incidents detected (architectural CLASS, sibling rule OK) 24
Exact-rule detection rate (of mapped) 24/24 = 100%
Class-level detection rate (of mapped) 24/24 = 100%
Fingerprint rules in mapped incidents 76
Fingerprint rules surfaced by scan 29
Rule-level recall 29/76 = 38%

How to read this report

Each Solana incident in documents/incidents/*.yml carries an architectural_fingerprint: a list of SPECTRE rules that, if they had been wired into a continuous scanner running on the protocol's source, would have surfaced the architectural pattern that the exploit later weaponized. The replay reads each incident's pre-hack corpus snapshot, runs the rule pack against it, and reports which fingerprint rules SPECTRE actually emitted.

An incident is detected when at least one fingerprint rule fires on the pre-hack source. The topline measures the architectural-coverage hypothesis the rule pack is built around: that real exploits cluster into reusable bug classes, and that catching the class at static-analysis time is enough to surface the underlying risk.

Detection breakdown

We score detection at two levels. Exact-rule detection requires SPECTRE to emit the specific rule_id called out by the incident's architectural_fingerprint. Class-level detection is satisfied when SPECTRE emits ANY rule in the same architectural family (e.g., the fingerprint asks for ACC-010 and the scan emits ACC-011 — both are account-binding rules; the architectural class is caught even though the precision dial differs).

Exact-rule detection

Incident Protocol Category Fingerprint Fired Missed
WORMHOLE-SIG-REPLAY-2022-02 Wormhole (Portal Token Bridge) Bridge ACC-014, ACC-010, CONFIG-010, CPI-021 ACC-014 ACC-010, CONFIG-010, CPI-021
CASHIO-FAKE-COLLATERAL-2022-03 Cashio Stablecoin ACC-015, ACC-010, ACC-011, PDA-030, MINT-001 ACC-015 ACC-010, ACC-011, MINT-001, PDA-030
MANGO-ORACLE-MANIPULATION-2022-10 Mango Markets DEX/Lending ORC-002, INV-002 ORC-002 INV-002
SOLEND-USDH-ORACLE-2022-11 Solend Lending ORC-002, INV-003, NONCE-002, CONFIG-010 CONFIG-010, ORC-002 INV-003, NONCE-002
RAYDIUM-ADMIN-KEY-2022-12 Raydium AMM v4 DEX AUTH-100, AUTH-120, AUTH-110 AUTH-100 AUTH-110, AUTH-120
METAPLEX-CMV2-REINIT-2021-12 Metaplex Candy Machine v2 NFT AUTH-100, ACC-013 ACC-013 AUTH-100
METAPLEX-CMV1-REINIT-2022-01 Metaplex Candy Machine v1 NFT ACC-021, AUTH-100 ACC-021 AUTH-100
JET-PROTOCOL-BREAK-2022 Jet Protocol Lending ITER-001, INV-003 ITER-001 INV-003
CYPHER-CACHE-INCONSISTENCY-2023-08 Cypher Protocol DEX/Derivatives INV-002, ACC-012, INV-003 ACC-012 INV-002, INV-003
DRIFT-DURABLE-NONCE-2026-04 Drift Protocol Governance/Multisig NONCE-002, AUTH-110, GOV-002, AUTH-120, ORC-002, GOV-001, CONFIG-010 GOV-001, ORC-002 AUTH-110, AUTH-120, CONFIG-010, GOV-002, NONCE-002
CASHIO-INFINITE-MINT-2022-03 Cashio Stablecoin/AMM ACC-013, ACC-010, MINT-001, INV-002, ACC-011 ACC-013 ACC-010, ACC-011, INV-002, MINT-001
WORMHOLE-SOLANA-2022-02 Wormhole (Portal) Bridge ACC-014, ACC-013, AUTH-100 ACC-014 ACC-013, AUTH-100
MANGO-PERP-ORACLE-2022-10 Mango Markets Perp DEX ORC-002, INV-003 ORC-002 INV-003
RAYDIUM-OWNER-KEY-2022-12 Raydium AMM v4 AMM AUTH-100, AUTH-110, GOV-001, CONFIG-010 AUTH-100, GOV-001 AUTH-110, CONFIG-010
JET-PUBKEY-DEFAULT-2022 Jet Protocol Lending ACC-021, CLOSE-070, CLOSE-080, INV-002 ACC-021 CLOSE-070, CLOSE-080, INV-002
CYPHER-SUBACCOUNT-MARGIN-2023-08 Cypher Protocol Perp DEX INV-002, ACC-021, ACC-012 ACC-012, ACC-021 INV-002
METAPLEX-AUCTION-BIDDER-POT-2022-01 Metaplex Auction House NFT/AMM-adjacent ACC-013, PDA-030, PDA-031, ACC-012 ACC-013 ACC-012, PDA-030, PDA-031
MANGO-V3-ORACLE-2022-10 Mango Markets v3 Lending ORC-002, INV-002 ORC-002 INV-002
MANGO-V3-DAO-SETTLEMENT-2022-10 Mango Markets v3 Lending GOV-001, GOV-002 GOV-001 GOV-002
SOLEND-SLND1-WHALE-2022-06 Solend Lending GOV-001, GOV-002, AUTH-110 GOV-001 AUTH-110, GOV-002
DRIFT-V2-DURABLE-NONCE-2026-04 Drift Protocol v2 Perps NONCE-002, AUTH-100, AUTH-110, GOV-001, CONFIG-010 AUTH-100, GOV-001 AUTH-110, CONFIG-010, NONCE-002
CYPHER-SUBACCOUNT-2023-08 Cypher Protocol Perps INV-002, ACC-013 ACC-013 INV-002
UXD-MANGO-CROSS-2022-10 UXD Protocol Stablecoin CROSS-007, CROSS-003 CROSS-007 CROSS-003
SPL-TOKEN-LENDING-ROUNDING-2021-12 SPL Token Lending (shared codebase) Lending ARI-040 ARI-040

Unmapped incidents (future corpus additions)

15 incidents in documents/incidents/ do not have a pre-hack source snapshot in corpus-cache/. Adding the corresponding repositories at the commit immediately before each exploit would extend the replay to cover them. The rule pack already names which detectors should fire (see architectural_fingerprint).

Protocol Incidents Rule classes called out by fingerprints
Allbridge Core 1 (ALLBRIDGE-CORE-PRICE-2023-04) CROSS-001, INV-002, ORC-002
Crema Finance 2 (CREMA-FAKE-TICK-2022-07, CREMA-FLASH-LOAN-2022-07) ACC-010, ACC-011, ACC-013, ACC-021, PDA-030, PDA-031
Drift Protocol v1 1 (DRIFT-V1-PNL-2022-05) INV-002, INV-003
Loopscale 2 (LOOPSCALE-RATEX-PRICE-2025-04, LOOPSCALE-RATEX-2025-04) CONFIG-010, INV-003, ORC-002
Magic Eden 1 (MAGIC-EDEN-UNVERIFIED-CREATOR-2023-01) META-001, META-002
Nirvana Finance 3 (NIRVANA-FLASHLOAN-PRICE-2022-07, NIRVANA-FLASH-LOAN-2022-07, NIRVANA-FLASHLOAN-2022-07) ARI-040, INV-002, ORC-002
OptiFi 1 (OPTIFI-PROGRAM-CLOSE-2022-08) AUTH-110, AUTH-120, CLOSE-070, CONFIG-010, GOV-002
Pump.fun 1 (PUMPFUN-WITHDRAW-AUTHORITY-2024-05) AUTH-100, AUTH-110, EVT-001, GOV-001
Slope Wallet 1 (SLOPE-SEED-LEAK-2022-08) AUTH-100, CONFIG-010
Step Finance 1 (STEP-FINANCE-EXEC-DEVICE-2026-01) AUTH-100, AUTH-110, GOV-001, GOV-002
Tulip Protocol 1 (TULIP-MANGO-CROSS-2022-10) CROSS-007

Per-incident detail

WORMHOLE-SIG-REPLAY-2022-02 — Wormhole (Portal Token Bridge) (2022-02-02)

Status: ✓ detected Corpus snapshot: 01-wormhole-token-bridge-pre-hack Category: Bridge TVL impact: $325,000,000

Architectural fingerprint:

  • ACC-014 (confidence: high) — Wormhole consumed the Instructions sysvar via load_instruction_at without first verifying accs.instruction_acc.key == solana_program::sysvar::instructions::ID. ACC-014 was added in spectre-solana-max specifically for this unchecked-sysvar-consumption class and matches the precise call-site shape across Anchor / native / Solitaire frameworks.
  • ACC-010 (confidence: medium) — Sibling-family signal: account ownership / canonical-address constraint missing on the sysvar field. ACC-010's mut-without-authority scope doesn't catch this directly; retained as architectural-class neighbor.
  • CONFIG-010 (confidence: high) — Reliance on a deprecated unchecked sysvar loader (load_instruction_at) when a checked equivalent existed. A pinned/version-aware API surface would have rejected the call site.
  • CPI-021 (confidence: medium) — Cross-program trust boundary with Secp256k1 program was assumed but never actually crossed; the program parsed alleged sibling-instruction bytes without verifying the program-id of the producing instruction.

CASHIO-FAKE-COLLATERAL-2022-03 — Cashio (2022-03-23)

Status: ✓ detected Corpus snapshot: 02-cashio-infinite-mint Category: Stablecoin TVL impact: $52,800,000

Architectural fingerprint:

  • ACC-015 (confidence: high) — saber_swap.arrow: Box<Account<'info, Arrow>> is a typed Anchor account over a custom type with NO #[account(...)] constraint, yet handler bodies read arrow.vendor_miner.mint to gate the mint of CASH. ACC-015 was added in spectre-solana-max specifically for this untied-typed-account-sub-field-read class and matches the precise architectural shape across Cashio's brrr program.
  • ACC-010 (confidence: medium) — Sibling-family signal: account ownership / canonical-address constraint missing on the intermediate arrow/crate accounts. ACC-010's mut-without-authority scope is narrower than the actual bug shape.
  • ACC-011 (confidence: high) — No anchored root-of-trust PDA tied the arrow account to the crate account to the collateral mint; the chain was traversed without binding.
  • PDA-030 (confidence: medium) — Arrow and crate accounts were not derived from program-controlled seeds in the validation chain, so attacker-owned lookalike accounts satisfied structural checks.
  • MINT-001 (confidence: high) — Mint of CASH proceeded without verifying the underlying collateral mint authority or address.

MANGO-ORACLE-MANIPULATION-2022-10 — Mango Markets (2022-10-11)

Status: ✓ detected Corpus snapshot: 19-native-mango-v3 Category: DEX/Lending TVL impact: $117,000,000

Architectural fingerprint:

  • ORC-002 (confidence: high) — Oracle price was used for thin-liquidity collateral with no liquidity-aware haircut, no TWAP buffer, and no per-asset borrow cap separating low-liquidity collateral from high-liquidity borrowable assets.
  • INV-002 (confidence: high) — Cross-collateral borrow did not enforce an invariant that borrowed-value plus liquidation-slippage remained below the realistically-liquidatable collateral value.

SOLEND-USDH-ORACLE-2022-11 — Solend (2022-11-02)

Status: ✓ detected Corpus snapshot: 16-native-solend-lending Category: Lending TVL impact: $1,260,000

Architectural fingerprint:

  • ORC-002 (confidence: high) — Single-pool oracle source with no second-source verification and no liquidity-aware confidence interval; price could be moved with low capital.
  • INV-003 (confidence: medium) — Oracle update was timed against pool write-lock window; protocol invariant 'oracle reflects market price' was broken when the only market was the attacker's deposit.
  • NONCE-002 (confidence: low) — Account-spam strategy was effectively a freshness/staleness exploit on the oracle update path
  • CONFIG-010 (confidence: medium) — Per-pool oracle configuration permitted listing an asset whose only price input was a single thin AMM, with no aggregator or fallback feed

RAYDIUM-ADMIN-KEY-2022-12 — Raydium AMM v4 (2022-12-16)

Status: ✓ detected Corpus snapshot: raydium-amm-v4-architectural-reference Category: DEX TVL impact: $4,400,000

Architectural fingerprint:

  • AUTH-100 (confidence: high) — Admin authority on AMM v4 was a single-key signer with no multisig or timelock guarding withdraw_pnl and parameter setters.
  • AUTH-120 (confidence: high) — withdraw_pnl was a privileged transfer-out instruction reachable directly from the compromised authority with no timelock and no per-action limit.
  • AUTH-110 (confidence: medium) — Authority transfer was direct (one-step) rather than propose-then-accept, so even rotation could not have detected the compromise window.

METAPLEX-CMV2-REINIT-2021-12 — Metaplex Candy Machine v2 (2021-12-31)

Status: ✓ detected Corpus snapshot: metaplex-candy-machine-v2-reinit-2021-12 Category: NFT

Architectural fingerprint:

  • AUTH-100 (confidence: high) — Account constraint did not enforce signer-equals-authority on a state-mutating instruction; missing authority check on candy_machine account.
  • ACC-013 (confidence: medium) — Anchor attribute mismatch (declared mut without proper has_one/authority binding) is the same shape as ACC-013 unconstrained mutable account.

METAPLEX-CMV1-REINIT-2022-01 — Metaplex Candy Machine v1 (2022-01-04)

Status: ✓ detected Corpus snapshot: metaplex-candy-machine-v1-reinit-2022-01 Category: NFT

Architectural fingerprint:

  • ACC-021 (confidence: high) — Initializer instruction did not check that the account was uninitialized (account discriminator zero); a re-initialization rewrote authority.
  • AUTH-100 (confidence: high) — Initialize did not assert that the existing on-account authority (if any) had signed; first-writer-wins semantics permitted overwrite.

JET-PROTOCOL-BREAK-2022 — Jet Protocol (2022-04-01)

Status: ✓ detected Corpus snapshot: 24-jet-v1-set-market-owner Category: Lending

Architectural fingerprint:

  • ITER-001 (confidence: high) — Loop body contains if <slot>.account == Pubkey::default() { break; } over a sparse fixed-size position array. ITER-001 was added in spectre-solana-max specifically to detect this Jet architectural class; matches the precise AST shape across both for- and while-loops.
  • INV-003 (confidence: medium) — Collateral aggregation invariant (sum over live positions) was violated when iteration terminated early on a sparse array.

CYPHER-CACHE-INCONSISTENCY-2023-08 — Cypher Protocol (2023-08-07)

Status: ✓ detected Corpus snapshot: cypher-protocol-cache-2023-08 Category: DEX/Derivatives TVL impact: $1,035,000

Architectural fingerprint:

  • INV-002 (confidence: high) — Cached risk state was not invalidated on every relevant instruction path; the invariant 'cache reflects underlying positions' was conditional rather than enforced.
  • ACC-012 (confidence: medium) — Aggregate state account was treated as authoritative without re-validation against the source-of-truth position accounts.
  • INV-003 (confidence: medium) — Solvency invariant evaluated against stale cache rather than live positions.

DRIFT-DURABLE-NONCE-2026-04 — Drift Protocol (2026-04-01)

Status: ✓ detected Corpus snapshot: 25-drift-v2-architectural-reference Category: Governance/Multisig TVL impact: $295,000,000

Architectural fingerprint:

  • NONCE-002 (confidence: high) — Durable-nonce signing decoupled the validity window of approver signatures from the proposal-execution timeline; signatures collected weeks earlier remained executable with no monotonic floor on the multisig's proposal counter.
  • AUTH-110 (confidence: high) — Admin authority transfer was a single-step privileged action with no separate propose-then-accept handshake on the destination side, so two pre-signed transactions plus zero timelock equalled instant takeover.
  • GOV-002 (confidence: high) — Multisig migration to zero-timelock governance eliminated the detection window between proposal and execution; this is the canonical GOV-002 timelock-removal anti-pattern.
  • AUTH-120 (confidence: medium) — Post-takeover, admin had unbounded ability to whitelist new collateral, set oracle source, and relax withdrawal limits in a single instruction surface; no per-action limits.
  • ORC-002 (confidence: medium) — Attacker-supplied oracle for the CVT asset was accepted as authoritative; no second-source verification or cross-venue divergence guard.
  • GOV-001 (confidence: high) — Zero-timelock on the privileged admin-migration handler eliminated the cancel-window between sign and execute
  • CONFIG-010 (confidence: medium) — Council migration to zero-timelock was a config change with no on-chain delay protecting the prior policy

CASHIO-INFINITE-MINT-2022-03 — Cashio (2022-03-23)

Status: ✓ detected Corpus snapshot: 02-cashio-infinite-mint Category: Stablecoin/AMM TVL impact: $52,800,000

Architectural fingerprint:

  • ACC-013 (confidence: high) — saber_swap.arrow account was accepted without validating its mint field, allowing a forged collateral account to satisfy the type check
  • ACC-010 (confidence: high) — Missing ownership/discriminator verification on the saber_swap.arrow account allowed a fake arrow account to pass
  • MINT-001 (confidence: high) — Mint authority for CASH was used without verifying the underlying collateral mint, enabling unbounded mint with worthless backing
  • INV-002 (confidence: medium) — Vault accounting invariant (CASH supply backed by real collateral value) was not enforced at mint time
  • ACC-011 (confidence: high) — Owner program of the arrow and crate accounts was not pinned to the trusted Saber program, so the attacker substituted look-alike accounts they owned

WORMHOLE-SOLANA-2022-02 — Wormhole (Portal) (2022-02-02)

Status: ✓ detected Corpus snapshot: 01-wormhole-token-bridge-pre-hack Category: Bridge TVL impact: $326,000,000

Architectural fingerprint:

  • ACC-014 (confidence: high) — Wormhole consumed the Instructions sysvar via load_instruction_at without first verifying the supplied account's key matches solana_program::sysvar::instructions::ID. ACC-014 is the precise detector for this unchecked-sysvar-consumption class across Anchor / native / Solitaire frameworks.
  • ACC-013 (confidence: medium) — Sibling-family signal: account-binding constraint missing. ACC-013's mut-without-authority scope doesn't directly fire on the Solitaire Info<'b> field, but the family signal is correct.
  • AUTH-100 (confidence: medium) — Effective authority (guardian set signature) was bypassed because the verification stack trusted a forgeable input

MANGO-PERP-ORACLE-2022-10 — Mango Markets (2022-10-11)

Status: ✓ detected Corpus snapshot: 19-native-mango-v3 Category: Perp DEX TVL impact: $117,000,000

Architectural fingerprint:

  • ORC-002 (confidence: high) — Oracle composition relied on three venues with shallow MNGO liquidity, no twap, no deviation circuit-breaker, no separation between mark-to-market price and borrow-collateral price
  • INV-003 (confidence: medium) — Borrow-against-collateral invariant not bounded by oracle confidence or asset liquidity; thin-market collateral could back unlimited stable borrows

RAYDIUM-OWNER-KEY-2022-12 — Raydium AMM v4 (2022-12-16)

Status: ✓ detected Corpus snapshot: raydium-amm-v4-architectural-reference Category: AMM TVL impact: $4,400,000

Architectural fingerprint:

  • AUTH-100 (confidence: high) — A single non-multisig key held a privileged withdrawPnl authority over many pools; key compromise drained all of them in one go
  • AUTH-110 (confidence: high) — No timelock or multisig gating on privileged fee-withdrawal authority
  • GOV-001 (confidence: medium) — Privileged-handler timelock gap: withdrawPnl had no delay or multi-party check between key signature and pool-balance change
  • CONFIG-010 (confidence: low) — Pool-owner field on each pool was a mutable single-key authority not protected by upgrade-authority controls

JET-PUBKEY-DEFAULT-2022 — Jet Protocol (2022-08-01)

Status: ✓ detected Corpus snapshot: 24-jet-v1-set-market-owner Category: Lending

Architectural fingerprint:

  • ACC-021 (confidence: high) — Position-list iteration assumed a sentinel layout that no longer held after the close-account feature was added; constraint set on positions changed across releases
  • CLOSE-070 (confidence: high) — Account-close logic introduced a state shape (zeroed slots interleaved with live ones) that earlier read paths did not anticipate
  • CLOSE-080 (confidence: medium) — Closure path did not enforce post-condition compaction or list normalization, leaving stale-shape readers exposed
  • INV-002 (confidence: medium) — Solvency invariant relied on completing the position iteration; a loop break could under-count debt

CYPHER-SUBACCOUNT-MARGIN-2023-08 — Cypher Protocol (2023-08-07)

Status: ✓ detected Corpus snapshot: cypher-protocol-cache-2023-08 Category: Perp DEX TVL impact: $1,035,000

Architectural fingerprint:

  • INV-002 (confidence: high) — Aggregate solvency invariant across sub-accounts not enforced before issuing a borrow; per-sub-account checks were necessary but not sufficient
  • ACC-021 (confidence: medium) — Sub-account constraint set used for margin reads differed from the set used for borrow authorization
  • ACC-012 (confidence: medium) — Sub-account-to-master-account binding was not enforced consistently across instruction paths

METAPLEX-AUCTION-BIDDER-POT-2022-01 — Metaplex Auction House (2022-01-01)

Status: ✓ detected Corpus snapshot: metaplex-auction-house-bidder-pot-2022-01 Category: NFT/AMM-adjacent

Architectural fingerprint:

  • ACC-013 (confidence: high) — bidder_pot_token account was constrained by ownership only, not bound to the specific bidder PDA; account confusion across bidders for the same auction
  • PDA-030 (confidence: high) — Token account was not derived as a PDA tied to the bidder identity, so an attacker could substitute another bidder's pot account
  • PDA-031 (confidence: medium) — Seed mutability across bids: same auction allowed multiple distinct bidder identities to map to the same token account
  • ACC-012 (confidence: medium) — Cross-bidder binding constraint missing on account inputs

MANGO-V3-ORACLE-2022-10 — Mango Markets v3 (2022-10-11)

Status: ✓ detected Corpus snapshot: 05-mango-markets-oracle-cap Category: Lending TVL impact: $117,000,000

Architectural fingerprint:

  • ORC-002 (confidence: high) — Single program co-located oracle price reader, collateral valuation, and borrow-withdrawal settlement, so an attacker who could move the externally-fed price could borrow against the inflated mark in the same instruction set
  • INV-002 (confidence: medium) — No invariant bound between extreme single-asset price moves and aggregate borrow capacity, so a 13x move in a thinly-traded governance token translated directly into a $117M withdrawal

MANGO-V3-DAO-SETTLEMENT-2022-10 — Mango Markets v3 (2022-10-15)

Status: ✓ detected Corpus snapshot: 05-mango-markets-oracle-cap Category: Lending TVL impact: $47,000,000

Architectural fingerprint:

  • GOV-001 (confidence: high) — Governance vote weight derived from current token balance with no quarantine for tokens that just exited the attacked program, allowing the attacker to vote with proceeds of the exploit
  • GOV-002 (confidence: medium) — No emergency freeze on governance proposals while the underlying program was in active incident response

SOLEND-SLND1-WHALE-2022-06 — Solend (2022-06-19)

Status: ✓ detected Corpus snapshot: 16-native-solend-lending Category: Lending

Architectural fingerprint:

  • GOV-001 (confidence: high) — Quorum threshold of roughly 1% combined with a six-hour voting window allowed an emergency proposal to grant administrative override of user accounts to clear in a single news cycle
  • GOV-002 (confidence: high) — Governance was empowered to mutate per-account authority on positions held by non-participating users, with no separation between parameter governance and asset custody governance
  • AUTH-110 (confidence: medium) — Admin path created on demand by governance had no timelock between vote success and execution

DRIFT-V2-DURABLE-NONCE-2026-04 — Drift Protocol v2 (2026-04-01)

Status: ✓ detected Corpus snapshot: 25-drift-v2-architectural-reference Category: Perps TVL impact: $285,000,000

Architectural fingerprint:

  • NONCE-002 (confidence: high) — Admin transactions were anchored to durable nonce accounts whose lifetime is unbounded, so signatures collected weeks earlier executed against state the signers had not seen
  • AUTH-100 (confidence: high) — Single Squads multisig held authority to list markets, configure oracles, and change withdrawal limits, with no role separation by blast radius
  • AUTH-110 (confidence: high) — Zero-second timelock between admin signature execution and effect, leaving no window for off-chain detection or for honest signers to revoke
  • GOV-001 (confidence: medium) — 2-of-5 threshold concentrated total protocol authority such that compromising two endpoint workstations was sufficient to drain the entire vault
  • CONFIG-010 (confidence: high) — Admin path could create a new spot market with attacker-controlled oracle inside the same authority that controlled withdrawal limits

CYPHER-SUBACCOUNT-2023-08 — Cypher Protocol (2023-08-07)

Status: ✓ detected Corpus snapshot: cypher-protocol-cache-2023-08 Category: Perps TVL impact: $1,000,000

Architectural fingerprint:

  • INV-002 (confidence: high) — Master account's tracking of sub-account isolation state diverged from the actual sub-account state, breaking the invariant that the borrow margin check relied on
  • ACC-013 (confidence: medium) — Borrow instruction read margin from a derived account whose freshness was not enforced relative to the sub-account's own state

UXD-MANGO-CROSS-2022-10 — UXD Protocol (2022-10-11)

Status: ✓ detected Corpus snapshot: uxd-mango-cross-2022-10 Category: Stablecoin TVL impact: $19,900,000

Architectural fingerprint:

  • CROSS-007 (confidence: high) — UXD CPIs into Mango v3 (Perps-class, Single admin) with no programmatic exposure cap. CROSS-007 was added in spectre-solana-max specifically for this delegation-risk class: the source's solvency is bounded above by a weakly-gated downstream venue's blast radius, regardless of the source's own admin posture (which for UXD is Unknown, so CROSS-001's strict-trust-downgrade comparator doesn't apply).
  • CROSS-003 (confidence: medium) — No degraded-mode fallback when the dependent perp venue was unavailable; UXD mint was paused operationally rather than by program logic

SPL-TOKEN-LENDING-ROUNDING-2021-12 — SPL Token Lending (shared codebase) (2021-12-06)

Status: ✓ detected Corpus snapshot: spl-token-lending-rounding-2021-12 Category: Lending

Architectural fingerprint:

  • ARI-040 (confidence: high) — Rounding direction in deposit/withdraw arithmetic favored the user over the protocol, the canonical rounding-bias pattern