Bridge and cross-chain vulnerabilities in disclosed reports

Bridges hold concentrated value and validate messages produced on a chain they cannot themselves verify — the highest-severity surface in the space.

Reports indexed
54
Total paid
$1.8M
Critical
1
Largest payout
$1.8M

A bridge is a message verifier attached to a vault. Everything that has gone wrong with bridges is one of those two halves failing: the verifier accepts a message it should not have, or the vault releases funds the verifier never authorised.

The verifier failures are the interesting ones. Merkle proofs validated against an attacker-supplied root, signature thresholds counted without deduplicating signers, guardian sets rotated without invalidating the old set, and message handlers that check the payload but not the source chain or the source contract.

The vault failures tend to be simpler and just as expensive: mint functions reachable without a corresponding lock, replay protection keyed on a value the attacker chooses, and emergency withdrawal paths whose access control was never revisited after launch.

What reviewers look for

  • Proof verification against a root the caller can influence
  • Signature thresholds that do not deduplicate or order signers
  • Message IDs that are not globally unique across chains
  • Mint authority reachable without a verified lock event
  • Guardian or validator rotation that leaves the previous set valid

Curated highlights

The largest disclosed payouts in this group, with our own summary of each. Every report links back to the original disclosure.

criticalBridge exploitEVM-Solidity$1.8M

Bridge withdrawal proof accepts empty Merkle path

A flawed proof verification mechanism in an L2 canonical bridge contract permitted withdrawal validation using an empty Merkle proof array. When no proof elements were supplied, the verification function failed to iterate and directly compared the unhashed withdrawal leaf against the target root. By matching a fake withdrawal leaf payload with a valid historical or relayable state root, an attacker could forge arbitrary withdrawal events and drain escrowed funds from the bridge.

L2 Canonical BridgeimmunefiJun 2, 2022Open
mediumBridge exploitEVM-Solidity$0

Olas: Users will lose all ETH sent as `cost` parameter in transactions to and from Optimism

The Olas protocol's OptimismDepositProcessorL1 contract mistakenly attempts to cover message delivery fees by forwarding ETH as a value to the Optimism messaging bridge. This design is incompatible with the Optimism protocol, which covers message delivery through gas consumption on the source chain rather than explicit ETH transfers to the messenger. As a result, any funds users provide to cover these expected costs are erroneously sent to the L2 destination contract, where they remain permanently locked and inaccessible to the user.

Olascode4renaAug 6, 2024Open
mediumBridge exploitEVM-Solidity$0

Olas: Attacker can make claimed staking incentives irredeemable on Gnosis Chain

The Olas staking incentive bridge on Gnosis Chain is vulnerable to a denial-of-service attack due to improper validation of user-supplied gas limits for cross-chain messages. By specifying an intentionally low gas limit during the claim process, an attacker can cause the L2 execution of the bridge message to fail with an out-of-gas error. Since the Gnosis Arbitrary Message Bridge does not natively support message replays, this renders the claimed incentives permanently irredeemable without costly, off-chain governance intervention.

Olascode4renaAug 6, 2024Open
mediumBridge exploitEVM-Solidity$0

Olas: Refunds for unconsumed gas will be lost due to incorrect refund chain ID

The Olas `WormholeDepositProcessorL1` contract contains a logic error in its interaction with the Wormhole bridge SDK that leads to the loss of user gas refunds. When initiating cross-chain transfers, the contract provides an incorrect chain identifier for the gas refund mechanism, substituting a local EVM chain ID where a Wormhole-specific chain ID is required. This misconfiguration causes any unconsumed gas associated with the transfer to be sent to the wrong network or permanently lost, negatively impacting the cost-efficiency for users utilizing the staking incentive features.

Olascode4renaAug 6, 2024Open
mediumBridge exploitEVM-Solidity$0

Olas: Loss of incentives if total weight in an epoch is zero

The Olas protocol's `Dispenser.sol` contract contains a critical accounting flaw that causes staking incentives to be permanently lost if an epoch records zero total staking weight. Because the incentive refund logic is incorrectly dependent on the claimant's staking weight, epochs with no activity fail to trigger a refund of the allocated tokens back to the inflation pool. This results in these unclaimed incentives remaining permanently trapped within the contract, rather than being returned to the tokenomics system as intended.

Olascode4renaAug 6, 2024Open
mediumBridge exploitEVM-Solidity$0

Arbitrum Foundation: Inconsistent sequencer unexpected delay in DelayBuffer may harm users calling `forceInclusion()`

Arbitrum's DelayBuffer, which determines how long users must wait before force-including delayed messages when the sequencer is down, depletes non-deterministically depending on how delayed messages are batched into forceInclusion() calls. Because the buffer decrease subtracts the last sequenced block number from the previous buffer-update block number, force-including multiple messages at once (or a newer one first) leaves the buffer larger than if messages were included sequentially in oldest-first order. As a result a user's later message can remain blocked far longer than the intended delay, locking funds for an extended period after a sequencer outage. The finding was disputed by the sponsor as by-design but ultimately accepted as Medium by the judge on availability grounds.

Arbitrum Foundationcode4renaJun 17, 2024Open

All reports in this group

Chains where this class shows up

Related vulnerability category pages