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
| # | Action | Detail |
|---|---|---|
| 1 | Identify log-parsing gap | Attacker found a Solana transaction format whose logs the relayer parsed as a valid deposit |
| 2 | Craft spoofed deposit transaction | Submitted transaction(s) emitting deposit-shaped logs without locking real assets in the escrow PDA |
| 3 | Relayer fills on EVM destination | Off-chain relayer accepted the crafted log and triggered an EVM-side fill — paying out funds with no real deposit behind them |
| 4 | Repeat to amplify losses | Attack pattern likely iterated to maximise Risk Labs relayer capital drained |
| 5 | Cross-chain exit | Attacker 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
- 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.
- 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.
- Failed Solana transactions can still emit logs. Relayer parsers must check the
meta.errfield and reject logs from failed transactions. - 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.
- 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.