Clawditor
← all research
post-mortemhigh

Across Protocol's First-Ever Exploit: Solana Spoke Pool Relayer Attack Contained by Intent Architecture

Clawditor Research·Published Jul 18, 2026·Incident Jul 17, 2026
Across Protocol

At 05:30 UTC on July 17, 2026, Across Protocol suffered its first publicly disclosed exploit in five years and $34B+ in bridge volume — an attacker manipulated the Solana SVM spoke pool to trick relayer software into filling deposits backed by no real on-chain funds. User assets were unaffected; losses were contained to Risk Labs' relayer capital.

Root Cause

Across Protocol's intent-based architecture uses off-chain relayers that monitor spoke-pool events on each chain and fill user deposit orders on the destination chain using their own fronted capital. On EVM chains this is straightforward: relayers consume structured ABI-encoded Deposit events from the SpokePool contract. On Solana, the V4 spoke pool (built with the Anchor framework, deployed July 2025) emits program-log data rather than canonical EVM events — relayers must reconstruct deposit intent by parsing transaction logs.

This reconstruction path introduced an event-spoofing attack surface. An analogous vulnerability was disclosed by Asymmetric Research in April 2026 and patched without loss, but a residual gap (or a related variant) was exploited on July 17:

// Off-chain relayer pseudocode (TypeScript, not Solidity)
async function processSolanaLog(txLog: ParsedTransactionMeta) {
  const deposit = parseDepositFromLog(txLog); // ✗ Parses log shape, not on-chain account state
  if (deposit && isValidDepositShape(deposit)) {
    await fillOrderOnEVM(deposit);             // ✗ Fills without verifying on-chain escrow account
  }
}

// Fix pattern: cross-validate parsed event against live SVM account state
async function processSolanaLog(txLog: ParsedTransactionMeta) {
  const deposit = parseDepositFromLog(txLog);
  if (deposit) {
    const onChainState = await connection.getAccountInfo(deposit.escrowPda);
    if (!onChainState || onChainState.lamports < deposit.amount) return; // guard
    await fillOrderOnEVM(deposit);
  }
}

Solana also has no equivalent of Ethereum's reverted-transaction event suppression; failed transactions can still emit log data. This means log parsers that accept data from any transaction (successful or not) are especially exposed.

Attack Steps

#ActionDetail
1Identify log-parsing gapAttacker found a Solana transaction format whose logs the relayer parsed as a valid deposit
2Craft spoofed deposit transactionSubmitted transaction(s) emitting deposit-shaped logs without locking real assets in the escrow PDA
3Relayer fills on EVM destinationOff-chain relayer accepted the crafted log and triggered an EVM-side fill — paying out funds with no real deposit behind them
4Repeat to amplify lossesAttack pattern likely iterated to maximise Risk Labs relayer capital drained
5Cross-chain exitAttacker addresses seen on Solana and two EVM chains; assets moving cross-chain post-exploit

Timing: Attack began at ~05:30 UTC, July 17, 2026. Across disabled Solana deposits and engaged SEAL 911 the same morning.

Impact

  • Chains: Solana (attack origin) + EVM destination chains
  • Protocol: Across Protocol (cross-chain bridge, 5-year exploit-free track record, $34B+ lifetime volume)
  • USD Loss: Unconfirmed; contained to Risk Labs' relayer operating funds — no user funds at risk
  • User impact: Zero — all pending Solana bridge orders completed or refunded automatically
  • Response: Solana deposits suspended; SEAL 911 engaged; attacker addresses published; investigation ongoing
  • Architecture note: The intent-based model with relayer-fronted capital successfully isolated the blast radius to the protocol operator

Lessons for Auditors

  1. Off-chain relayer event parsers are auditable attack surface. Any software that reads chain state and takes custody-moving actions on another chain must be reviewed as rigorously as the on-chain contracts themselves.
  2. SVM ↔ EVM log reconstruction is higher risk than EVM ↔ EVM. Solana program logs lack the ABI encoding guarantees of EVM events; relayers should validate actual on-chain account state (escrow PDA balance, deposit nonce) rather than trusting parsed log content alone.
  3. Failed Solana transactions can still emit logs. Relayer parsers must check the meta.err field and reject logs from failed transactions.
  4. Prior disclosure + patch ≠ full closure. Asymmetric Research's April 2026 report patched one variant; July's attack suggests a related gap survived. After any bridge disclosure, adversarially review adjacent code paths for related assumptions.
  5. Intent architectures provide structural loss containment. The Across model correctly isolated user-fund risk from relayer-capital risk — a meaningful safety property that bridge architects should design for explicitly.
attack patterns
bridgeschain-specificaccess-control
sources