Bridge protocol vulnerabilities in disclosed bug bounty reports
The highest-value target class in crypto: concentrated custody plus verification of events from a chain the verifier cannot execute.
- Reports indexed
- 248
- Total paid
- $4.5M
- Critical
- 3
- Largest payout
- $2.5M
Bridges have produced the largest losses in the industry's history, and the disclosed reports show why: they combine a vault holding pooled deposits with a verification layer that must judge, off its own chain, whether a distant event actually happened.
Findings split cleanly into verification failures — bad proof handling, weak or miscounted signature thresholds, missing source-chain binding — and custody failures, where the mint or release path is reachable without the verification having succeeded.
Payout sizes in this class are consistently the largest on the platform, which makes the payout comparables view particularly useful for bridge submissions.
What reviewers look for
- Proofs verified against attacker-influenced roots
- Signature thresholds without signer deduplication
- Missing source-chain and source-contract binding on messages
- Mint paths reachable without a corresponding verified lock
- Replay protection keyed on attacker-chosen values
Curated highlights
The largest disclosed payouts in this group, with our own summary of each. Every report links back to the original disclosure.
Cross-chain bridge signature replay allows infinite mint
A signature validation vulnerability in a cross-chain bridge protocol allowed valid guardian attestations to be replayed across different destination chains. The signed message digest omitted essential domain parameters like the target chain ID and global emitter sequence, allowing an attacker to reuse a single legitimate withdrawal signature on multiple bridge deployments. Consequently, an attacker could mint unlimited wrapped assets across various target chains without providing additional collateral on the source chain.
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.
Cosmos SDK module allows unauthorized state migration via missing ante handler check
A logic flaw in a Cosmos SDK module's state migration handler allowed unauthorized signers to execute privileged state updates. The message authority check relied on a helper function that returned true when the authority field was empty, and the message route was incorrectly exposed as a standard transaction rather than being restricted to governance. An attacker could issue state updates with an empty authority field to inject malicious counterparties into the IBC channel allowlist, enabling the execution and processing of forged cross-chain transactions.
The Graph: Governor can rug pull the escrow
The Graph's BridgeEscrow exposes an approveAll() function that the protocol governor can call to grant any address an unlimited allowance over the escrowed GRT. Because the escrowed tokens are never burned, a compromised or malicious governor could permanently drain the full L1 balance, and even an honest governor forces users into a perpetual trust assumption over the funds. The sponsor disputed the finding as intentional design meant to support multiple future bridges and emergency recovery after a critical Arbitrum incident, and the judge leaned toward closing it as invalid while noting Code4rena's convention of awarding such centralization risks as Medium for awareness. The disclosure thus represents a contested governance/centralization-risk concern rather than a directly exploitable vulnerability.
The Graph: Initialize function in `L2GraphToken.sol`, `BridgeEscrow.sol`, `L2GraphTokenGateway.sol`, `L1GraphTokenGateway.sol` can be invoked multiple times from the implementation contract
The Graph's upgradeable proxy contracts — L1GraphTokenGateway, L2GraphTokenGateway, L2GraphToken, and BridgeEscrow — expose initialize functions protected only by an onlyImpl modifier rather than OpenZeppelin's initializer guard. If the implementation is ever callable by an attacker (e.g., a compromised or rogue implementation), the functions can be re-executed to point the contracts at an attacker-controlled controller. Because the onlyGovernor modifier resolves against that controller, the attacker gains governor privileges and can call BridgeEscrow.approveAll to grant an unlimited GRT allowance and drain escrowed bridge funds. The sponsor confirmed the finding, awarded Medium severity, and fixed it in graphprotocol/contracts PR #741 by adding the initializer guard to all four contracts.
The Graph: After proposed 0.8.0 upgrade kicks in, L2 `finalizeInboundTransfer` might not work
The Graph's L2GraphTokenGateway restricts finalizeInboundTransfer to calls arriving from its L1 counterpart gateway, verified via applyL1ToL2Alias, which intentionally wraps the L1 address plus a fixed offset into the expected L2 sender. The protocol planned to upgrade from Solidity 0.7.6 to 0.8.0, whose built-in overflow checks would cause that deliberate uint160 wrap to revert whenever the sum exceeds UINT160_MAX. Because the L1 gateway's address can trigger such an overflow, the modifier would reject legitimate inbound transfers after the upgrade and break L2 deposit finalization. The sponsor confirmed the concern, the judge upheld it as a valid Medium, and the fix wrapped the aliasing arithmetic in an unchecked block in a future 0.8.0 branch.
All reports in this group
- The Graph: If L1GraphTokenGateway's `outboundTransfer` is called by a contract, the entire `msg.value` is blackholed, whether the ticket got redeemed or notBridge exploit$0
- Centrifuge Protocol V3.1: Stranded ETH on batched `crosschainTransferShares` callBridge exploit$0
- Centrifuge Protocol V3.1: Gas engineering during `adapter` execution can be used to maliciously split critical message batchesAccess control$0
- Centrifuge Protocol V3.1: Inadequate gas reservation in `Gateway.handle()` try-catch block enables permanent DOS via batch-level gas exhaustionLogic error$0
- Centrifuge Protocol V3.1: `Gateway.withBatch()` lacks message count validation enabling permanent DOS via an excessive number of messages in a batchBridge exploit$0
- Centrifuge Protocol V3.1: `MessageProcessor` fails to disable `unpaidMode` during `UntrustedContractUpdate` execution enabling permanent DOS via malicious unpayable batch creationLogic error$0
- Malda: Unenforced maxFee and ttl Parameters in sendMsg FunctionBridge exploit$0
- Malda: If Across Bridging fails, all funds intended for bridging will become lockedBridge exploit$0
- Malda: Rebalancer can steal funds from markets by sending to custom receiver through Everclear BridgeBridge exploit$0
- Malda: Rebalancer can send to unallowed destination chains through EverclearBridgeBridge exploit$0
- Malda: mErc20Host: It is not possible to permissionlessly call "external" endpoints when source chain is Eth mainnet, because l1Inclusion flag cannot be set to trueLogic error$0
- DODO Cross-Chain DEX: Attacker can steal an high-value token due to lack of swap executionBridge exploit$0
- DODO Cross-Chain DEX: `GatewayTransferNative.withdrawToNativeChain` Allows Swapping Arbitrary Contract ZRC20s by Misusing Deposited Token AmountLogic error$0
- DODO Cross-Chain DEX: Executing withdrawToNativeChain with Zeta as fromToken will not be possibleLogic error$0
- DODO Cross-Chain DEX: Improper ETH Refund Handling in GatewaySend.onRevert()Bridge exploit$0
- DODO Cross-Chain DEX: Wrong encoding of `BTC` receiver in revert optionsLogic error$0
- DODO Cross-Chain DEX: Bug in AccountEncoder causes wrong Solana account permissionsAccess control$0
- DODO Cross-Chain DEX: Any attacker will steal accumulated ZRC20 tokens from `GatewayTransferNative` contractLogic error$0
- DODO Cross-Chain DEX: Missing swap-withdrawal validation enables accumulated token drainageLogic error$0
- DODO Cross-Chain DEX: `onCall` function has missing fee deduction update prior swap.Logic error$0
- DODO Cross-Chain DEX: ETH Address Approval Attempt Causes All Zeta Swaps to RevertLogic error$0
- DODO Cross-Chain DEX: Unauthorized Claim of Non-EVM Chain Refunds in `claimRefund` FunctionAccess control$0
- DODO Cross-Chain DEX: GatewayTransferNative does not collect platform fee when native asset is bridgedBridge exploit$0
- LEND: `CoreRouter.sol`’s `repayBorrowInternal` incorrectly updates `same chain` borrow balances on `cross chain` repaymentsLogic error$0
- LEND: Multiple Cross-Chain borrows using same collateralLogic error$0
- ZetaChain Cross-Chain: Solana zetaclient inbound observer is blocked indefinitely when an additional account is passed to the `call` instructionLogic error$0
- ZetaChain Cross-Chain: A Malicious Observer can use TON's Outbound Tracker to steal funds from ZetachainLogic error$0
- ZetaChain Cross-Chain: EVM outbound transaction gas limit can be set lower than the intrinsic gas limit, which prevents sending the transaction and blocks all other outbound transactions to this chainLogic error$0
- ZetaChain Cross-Chain: Removing an observer doesn't update an active ballot's voter list, leading to deadlocksLogic error$0
- ZetaChain Cross-Chain: Insufficient Transaction Broadcast Timeout in EVM ChainsLogic error$0
- ZetaChain Cross-Chain: Jailed validators are able to participate in votingLogic error$0
- ZetaChain Cross-Chain: removed observers are still able to voteLogic error$0
- ZetaChain Cross-Chain: V1 ZEVM logs incorrectly use the `emittingContract` address as the CCTX `sender` addressLogic error$0
- ZetaChain Cross-Chain: Bitcoin Observers' signed transactions will be rejected due to invalid sighashesLogic error$0
- ZetaChain Cross-Chain: Observer rewards are less than expected due to not properly accounting for negative rewardsLogic error$0
- ZetaChain Cross-Chain: ZETA token supply keeps growing on failed `onReceive()` contract callsLogic error$0
- ZetaChain Cross-Chain: Dirty EVM state changes are not committed before precompile calls, resulting in double-spending or loss of ZETA tokensLogic error$0
- ZetaChain Cross-Chain: Token Mismatch in SPL Token DepositsLogic error$0
- ZetaChain Cross-Chain: Lost funds on ZetaChain due to unprocessed ZEVM logsLogic error$0
- ZetaChain Cross-Chain: Incorrect Formate for transaction building, and transaction executions In Solana will lead to revert all execute Operations.Bridge exploit$0
- ZetaChain Cross-Chain: Abort processing after call originating from Solana will cause loss of fundsLogic error$0
- ZetaChain Cross-Chain: SUI receiver lacks validationLogic error$0
- ZetaChain Cross-Chain: SUI TSS drained due to lack of refund when the `withdraw/withdraw_and_call()` PTB failsLogic error$0
- ZetaChain Cross-Chain: Malicious observer can block messages added through the inbound trackerBridge exploit$0
- ZetaChain Cross-Chain: Incorrect de-structuring of parse_intent()'s return value will trigger unexpected operationsLogic error$0
- ZetaChain Cross-Chain: Claiming delegation rewards via the precompile can result in a loss of ZETA rewards due to state synchronization issuesLogic error$0
- ZetaChain Cross-Chain: Malicious observer can drain Solana bridge by adding failed deposit transaction to inbound trackerBridge exploit$0
- ZetaChain Cross-Chain: TON transactions risk being lost due to flawed transaction handlingLogic error$0
- ZetaChain Cross-Chain: ZETA coin type outbound CCTXs can be sent to unsupported external chains, which results in a DoS of the outbound queueLogic error$0
- ZetaChain Cross-Chain: The `sender` argument for the Solana `OnCall` instruction can be impersonatedAccess control$0
- ZetaChain Cross-Chain: Missing Nonce Reset During TSS Address Update Allowing Signature ReplayLogic error$0
- ZetaChain Cross-Chain: Protocol fee is stuck in the `crosschain` moduleLogic error$0
- ZetaChain Cross-Chain: TON Gateway transactions with a skipped compute phase will cause a panicLogic error$0
- ZetaChain Cross-Chain: Setting `RevertGasLimit` to a value larger than `uint64` in the Solidity gateway contract will cause a panic that prevents finalizing the inbound CCTX and observers from receiving block rewardsLogic error$0
- ZetaChain Cross-Chain: Outbound CCTXs to external chains are not properly validated, preventing subsequent outbounds to the external chain from being processedLogic error$0
- ZetaChain Cross-Chain: Restricted addresses are still able to use Zetachain due to faulty updateAccess control$0
- ZetaChain Cross-Chain: An attacker can stuff a Solana Outbound transaction with multiple instructions to block it from finalizingLogic error$0
- ZetaChain Cross-Chain: Impartially aborted CCTXs are incorrectly marked as refunded, resulting in a loss of fundsLogic error$0
- ZetaChain Cross-Chain: Stateful precompiles panic on empty calldata, which can be exploited to prevent finalizing outbound CCTXsLogic error$0
- ZetaChain Cross-Chain: TON Gateway withdrawals can be DOS'd with an invalid withdrawal recipientLogic error$0
- Chakra: Invalid token address used in `ChakraSettlementHandler::cross_chain_erc20_settlement(...)` leading to invalid transaction creation and event emissionBridge exploit$0
- Chakra: SettlementSignatureVerifier's `required_validators` is not updated, resulting in a low or high number of signatures being requiredLogic error$0
- Chakra: Inconsistent Handler Validation Behavior in Cairo ERC20Handler's Cross-Chain CallbackLogic error$0
- Chakra: Malicious actors can manipulate the `cross_chain_callback` callbackFront-running / MEV$0
- Chakra: `ChakraSettlement.receive_cross_chain_msg` and `ChakraSettlement.receive_cross_chain_callback` functions do not ensure that receiving `ChakraSettlement` contract's `contract_chain_name` must match `to_chain` corresponding to respective `txi…Signature replay$0
- Chakra: Forcing Starknet handlers to be whitelisted on the same chain allows exploit of `BurnUnlock` mode to drain handler fundsBridge exploit$0
- Chakra: The `receive_cross_chain_msg` function has potential replay attack risksSignature replay$0
- Chakra: The `LockMint` and `BurnUnlock` modes cannot be usedBridge exploit$0
- Chakra: Does not check if `to_chain` and `to_handler` is whitelisted in `cross_chain_erc20_settlement`Bridge exploit$0
- Chakra: In Starknet, already processed messages can be re-submitted and by anyoneBridge exploit$0
- Chakra: `SettlementSignatureVerifier` is missing check for duplicate validator signaturesLogic error$0
- Chakra: Anyone can manipulate user nonce (`nonce_manager`) in settlement contractAccess control$0
- Chakra: Permanent loss of user tokens on both chains if `BurnUnlock` mode fails because of flawed burning patternBridge exploit$0
- Chakra: Excessive Authority Granted to Managers in the `ckr_btc.cairo` Contract Presents Significant Management RisksAccess control$0
- Chakra: Wrong usage of transaction originator address instead of caller addressBridge exploit$0
- Chakra: There is no refund mechanism in `ChakraSettlement.processCrossChainCallback` or `ChakraSettlementHandler.receive_cross_chain_callback` functionAccess control$0
- Chakra: Missing `ERC20Method` validation at destination allows non-transfer tx to be handled as transfersLogic error$0
- Chakra: Inconsistency in sender address when creating cross chain messages on Starknet can lead to loss of fundsBridge exploit$0
- Chakra: In `settlement.cairo::receive_cross_chain_msg` - the message will always be marked with `Status::SUCCESS`Logic error$0
- Chakra: Handler's `receive_cross_chain_callback()` will always set the `tx_status` to `SETTLED` on source chain & burn the tokens (MintBurn Mode) even when the msg fails on destinationBridge exploit$0
- Chakra: Bridging from Starknet to Starknet causes mismatch between minted ckrBTC and BTC transferred to MuSig2Bridge exploit$0
- Chakra: In `settlement.cairo::receive_cross_chain_msg` - the `payload_type` can be passed by the user, confusing offchain systemsBridge exploit$0
- Chakra: A cross-chain message can be initiated with invalid parametersBridge exploit$0
- NOYA: Base tokens like USDT, USDC having different decimals on different chains can have their TVL updated incorrectlyLogic error$0
- Axelar Network: Bridge requests to remote chains where interchain tokens are not deployed can result in DoS attacksLogic error$0
- Axelar Network: Can block bridge or limit the bridgeable amount by initializing the ITSHub balance of the original chainLogic error$0
- Autonomint Colored Dollar V1: Cross-chain wrsETH amount is wrapped before the treasury have received it, which could revert the whole transactionLogic error$0
- Kakarot: No way to cancel `l1 -< l2` messagesLogic error$0
- Coded Estate: Use of `u64` for `price_per_day` and `price_per_month` limits handling tokens with 18 decimalsLogic error$0
- Thanos L2 Native Token Bridge: L1 contract can evade aliasing, spoofing unowned L2 addressBridge exploit$0
- Flayer: `ERC1155Bridgable` is not EIP-1155 compliantLogic error$0
- Flayer: `ERC721Bridgable` and `ERC1155Bridgable` are not EIP-2981 compliant, and fail to correctly collect or attribute royalties to artistsBridge exploit$0
- Flayer: ERC1155Bridgable.sol cannot receive ETH royaltiesLogic error$0
- ZetaChain: `AddToInTxTracker` doens't allow permissionless tx validation for Bitcoin chain, InTxTracker permissionless tx validation for Bitcoin chain will always failLogic error$0
- ZetaChain: `AddBlockHeader` Cannot Cope with ReorgsLogic error$0
- ZetaChain: Inbound transactions submitted to the `InTxTracker` that contain multiple `ZetaSent` and `Deposited` events are not processed correctly by the observers resulting in a loss of fundsBridge exploit$0
- ZetaChain: Lagging median gas price when the set of observers changesLogic error$0
- ZetaChain: Arbitrary destination gas limit for `CoinType_Zeta` cctxs results in paying lower gas feesLogic error$0
- ZetaChain: Outbound zEVM cross-chain messages ignore the user-specified gas limit and may fail with an out-of-gas errorLogic error$0
- ZetaChain: Observer can halt outbound cctxs and steal fundsLogic error$0
- ZetaChain: Inability to reliably verify inbound transactions may result in missed inbound transactionsLogic error$0
- ZetaChain: ERC-20 deposit cctxs are refunded to the EOA instead of an intermediary contractLogic error$0
- ZetaChain: Inbound Tx Confirmation Bypass via Malicious ObserverLogic error$0
- ZetaChain: Incorrect genesis initialization of pending noncesLogic error$0
- ZetaChain: The outbound transaction tracker only keeps track of a maximum of two different transaction hashes, preventing cctxs from being efficiently confirmed and blocking the outbound transaction queueLogic error$0
- ZetaChain: The `Sender` of an outbound cctx originating from the zEVM is potentially set to an incorrect sender address resulting in lost assets during a refundLogic error$0
- ZetaChain: A single malicious observer can fill the block space with `MsgGasPriceVoter` messages without proper gas compensation resulting in griefing blocksLogic error$0
- ZetaChain: ZRC20 Token Pause Check BypassLogic error$0
- ZetaChain: Zeta token supply checker incorrectly classifies in-transit cctxs as settled resulting in misleading checksLogic error$0
- ZetaChain: Limited Voting Options Allow Ballot Creation SpamLogic error$0
- ZetaChain: `PayGasFeeInZetaAndUpdateCctx()` is prone to slippage, causing sender overpays the revert gas and lose returned fundsLogic error$0
- Proof Of Humanity V2: V1 Profiles Can Avoid Penalties Using `transferHumanity`Logic error$0
- Winnables Raffles: Anyone can cancel a raffle with tickets == minTicketsThreshold, griefing all participantsLogic error$0
- Olas: Attacker can cancel claimed staking incentives on ArbitrumAccess control$0
- Olas: The `msg.value - cost` for multiple cross-chain bridges are not refunded to usersBridge exploit$0
- Olas: Arbitrary tokens and data can be bridged to `GnosisTargetDispenserL2` to manipulate staking incentivesAccess control$0
- Olas: Attacker can make claimed staking incentives irredeemable on Gnosis ChainBridge exploit$0
- Olas: Non-normalized amounts sent via Wormhole lead to failure to redeem incentivesInteger overflow/underflow$0
- Olas: Users will lose all ETH sent as `cost` parameter in transactions to and from OptimismBridge exploit$0
- Olas: In `retain` function, `checkpoint` nominee function is not called which can cause zero amount of tokens being retainedLogic error$0
- Olas: The `refundAccount` is erroneously set to `msg.sender` instead of `tx.origin` when `refundAccount` specified as `address(0)`Bridge exploit$0
- Olas: Refunds for unconsumed gas will be lost due to incorrect refund chain IDBridge exploit$0
- Olas: Removed nominee doesn't receive staking incentives for the epoch in which they were removed which is against the intended behaviourLogic error$0
- Olas: Loss of incentives if total weight in an epoch is zeroBridge exploit$0
- Curves Protocol: A subject creator within a single block can claim holder fees without holding due to unprotected reentrancy pathReentrancy$0
- Illuminex: A malicious/ inactive relayer of VaultBitcoinWallet can make withdrawal mechanism stuck foreverBridge exploit$0
- Illuminex: Potential Congestion due to lack of `batchingInterval` and `maxTransfersPerBatch` modification Function in `OutgoingQueue` ContractLogic error$0
- Illuminex: VaultBitcoinWallet` contract can not disable `relayersWhitelist` via `toggleRelayersWhitelistEnabled()` functionLogic error$0
- SYMMIO v0.83 Update: Suspended bridge transactions cannot be restoredLogic error$0
- SYMMIO v0.83 Update: Wrong precision when adding balance within the `restoreBridgeTransaction` functionLogic error$0
- Arbitrum Foundation: Inconsistent sequencer unexpected delay in DelayBuffer may harm users calling `forceInclusion()`Bridge exploit$0
- Renzo: Incorrect exchange rate provided to Balancer poolsOracle manipulation$0
- Renzo: Fetched price from the oracle is not stored in `xRenzoDeposit`Reentrancy$0
- Renzo: Not handling the failure of cross chain messagingReentrancy$0
- Renzo: Potential arbitrage opportunity in the `xRenzoDeposit` L2 contractFront-running / MEV$0
- Renzo: Fixed hearbeat used for price validation is too stale for some tokensOracle manipulation$0
- Renzo: `L1::xRenzoBridge` and `L2::xRenzoBridge` uses the `block.timestamp` as dependency, which can cause issuesLogic error$0
- Renzo: The amount of `xezETH` in circulation will not represent the amount of `ezETH` tokens 1:1Oracle manipulation$0
- PoolTogether: The Prize Layer for DeFi: The RNG finish draw auction rewards are overpaid due to missing to account for the time it takes to fulfill the Witnet randomness requestLogic error$0
- PoolTogether: The Prize Layer for DeFi: Potential ETH Loss Due to transfer Usage in Requestor Contract on `zkSync`Logic error$0
- PoolTogether: The Prize Layer for DeFi: Draws can be retried even if a random number is available or the current draw has finishedLogic error$0
- zkSync: User might be able to double withdraw during migrationBridge exploit$0
- zkSync: L2SharedBridge l1LegacyBridge is not setBridge exploit$0
- Tapioca DAO: `MagnetarMintXChainModule.sol`:`mintBBLendXChainSGL` can be used to manipulate user positions by abusing whitelist privilegesGovernance attack$0
- Tapioca DAO: Incorrect return value of function `BaseTapiocaOmnichainEngine._payNative()`Bridge exploit$0
- Tapioca DAO: `depositYBLendSGLLockXchainTOLP` function of the MagnetarAssetXChainModule will not work because it transfers Singularity tokens to the user before `_withdrawToChain`Logic error$0
- Tapioca DAO: `_internalRemoteTransferSendPacket()` can't send the difference back to the userLogic error$0
- Tapioca DAO: Layerzero fee refund address is not handled correctlyLogic error$0
- Coinbase: Remove owner calls can be replayed to remove a different owner at the same index, leading to severe issues when combined with lack of last owner guardLogic error$0
- Taiko: A recalled ERC20 bridge transfer can lock tokens in the bridgeBridge exploit$0
- Taiko: Invocation delays are not honoured when protocol unpausesFront-running / MEV$0
- Taiko: Bridge watcher can forge arbitrary message and drain bridgeAccess control$0
- Taiko: Malicious caller of `processMessage()` can pocket the fee while forcing `excessivelySafeCall()` to failBridge exploit$0
- Taiko: Bridged tokens would be lost if sender and receiver are contracts that don't implement fallback/receiveBridge exploit$0
- Optimism Fault Proofs: Incorrect game type can be proven and finalized due to unsafe castBridge exploit$0
- Most Aleph Zero Bridge: Changing committee to a higher signature threshold will render a request from the previous committee un-processableLogic error$0
- Decent: Permanent loss of tokens if swap data gets outdatedBridge exploit$0
- Decent: Potential loss of capital due to fixed fee calculationsBridge exploit$0
- Decent: DecentEthRouter.sol#_bridgeWithPayload() - Any refunded ETH (native token) will be refunded to the DecentBridgeAdapter, making them stuckBridge exploit$0
- Decent: Missing access control on UTB:receiveFromBridge allows UTB swaps to be executed without spending bridge fees while bypassing fee/swap instruction signature verificationAccess control$0
- Decent: Users will lose their cross-chain transaction if the destination router do not have enough WETH reserves.Logic error$0
- Decent: Due to missing checks on minimum gas passed through LayerZero, executions can fail on the destination chainBridge exploit$0
- Decent: Users can use the protocol freely without paying any fees by calling the `DecentEthRouter::bridgeWithPayload()` function directly.Access control$0
- Decent: Anyone can update the address of the Router in the DcntEth contract to any address they would like to set.Access control$0
- Decent: When `DecentBridgeExecutor.execute` fails, funds will be sent to a random addressAccess control$0
- Most Aleph Zero Bridge: Inconsistency in Handling WETH in `eth::most::receiveRequest`Bridge exploit$0
- Most Aleph Zero Bridge: Most will not work with tokens with high decimals due to overflow Integer overflow/underflow$0
- Most Aleph Zero Bridge: Attacker can initialize `Most.sol` to set critical parametersAccess control$0
- Perpetual: SpotHedgeBaseMaker LPs will be able to extract value during a USDT/USDC de-pegLogic error$0
- Tapioca: Balancer using safeApprove may lead to revert.Logic error$0
- Tapioca: USDO’s MSG_TAP_EXERCISE compose messages where exercised options must be withdrawn to another chain will always fail due to wrongly requiring sendParam's to address to be whitelisted in the ClusterBridge exploit$0
- Tapioca: All ETH can be stolen during rebalancing for `mTOFTs` that hold nativeBridge exploit$0
- Tapioca: Gas parameters for Stargate swap are hardcoded leading to stuck messagesLogic error$0
- Tapioca: Unverified `_srcChainSender` parameter allows to impersonate the senderBridge exploit$0
- Tapioca: TOFTOptionsReceiverModule miss cross-chain transformation for deposit and lock amountsLogic error$0
- Tapioca: Withdrawing to other chain when exercising options won’t work as expected, leading to DoSBridge exploit$0
- zkSync: `Mailbox.requestL2Transaction()` checks the deposit limit of `msg.sender` (`L1WethBridge`) instead of the real depositor of weth from L1, as a result, after certain time, nobody will be able to deposit weth anymore from L1Bridge exploit$0
- zkSync: Deployment Nonce Does not Increment For a Reverted Child ContractLogic error$0
- Ethereum Credit Guild: Auction manipulation by block stuffing and reverting on ERC-777 hooksAccess control$0
- Olas: LP rewards in `liquidity_lockbox` can be arbitragedFlash loan attack$0
- Olas: Withdraw amount returned by `getLiquidityAmountsAndPositions` may be incorrectBridge exploit$0
- Olas: Possible DOS when withdrawing liquidity from Solana LockboxBridge exploit$0
- Catalyst Exchange: No access control on IncentivzedMessageEscrow's ``submitMessage`` can lead to a short-term dos of usersAccess control$0
- Maia DAO: No deposit cross-chain calls/communication can still originate from a removed branch bridge agentBridge exploit$0
- Maia DAO: Redeeming a Settlement won't work for unsigned messages when the communicating dApps have different addresses on the different chainsBridge exploit$0
- Maia DAO: `addGlobalToken()` `localAdress` could be overwrittenBridge exploit$0
- Maia DAO: if the Virtual Account's owner is a Contract Account (multisig wallet), attackers can gain control of the Virtual Accounts by gaining control of the same owner's address in a different chainAccess control$0
- Maia DAO: Incorrect flag results to `_hasFallbackToggled` always set to false on `createMultipleSettlement`.Bridge exploit$0
- Maia DAO: `ArbitrumBranchBridgeAgent::_performFallbackCall` function does not refund users their excess native gas depositBridge exploit$0
- Maia DAO: When using BaseBranchRouter as a router on the 'Arbitrum' branch, we are unable to invoke the 'callOutAndBridge' function.Bridge exploit$0
- Maia DAO: If `RootBridgeAgent.lzReceiveNonBlocking` reverts internally, the native token sent by relayer to RootBridgeAgent is left in RootBridgeAgentBridge exploit$0
- Maia DAO: Incorrect source address decoding in RootBridgeAgent and BranchBridgeAgent's `_requiresEndpoint` breaks LayerZero communicationReentrancy$0
- Maia DAO: Message channels can be blocked resulting in DoSBridge exploit$0
- Maia DAO: `BaseBranchRouter._transferAndApproveToken` may revert in some casesBridge exploit$0
- Maia DAO: Depositors could lose all their deposited tokens (including the hTokens) if their address is blacklisted in one of all the deposited underlyingTokensBridge exploit$0
- Tapioca DAO: Anybody can buy collateral on behalf of other users without having any allowance using the multiHopBuyCollateral()Oracle manipulation$0
- Tapioca DAO: `twTAP.participate()` can be permanently frozen due to lack of access control on host-chain-only operationsAccess control$0
- Tapioca DAO: TOFT `exerciseOption` can be used to steal all underlying erc20 tokensGovernance attack$0
- Tapioca DAO: `BaseTOFT.sol`: `removeCollateral` can be used to manipulate other user's positions and steal tokens due to absent approval checkFront-running / MEV$0
- Tapioca DAO: Refund mechanism for failed cross-chain transactions does not workBridge exploit$0
- Tapioca DAO: A user with a TapiocaOFT allowance >0 could steal all the underlying ERC20 tokens of the ownerGovernance attack$0
- Tapioca DAO: `_sendToken` implementation in `Balancer.sol` is wrong which will make the underlying erc20 be send to a random address and lostBridge exploit$0
- Tapioca DAO: `twTAP.sol`: Reward tokens stored in index 0 can be stolenGovernance attack$0
- Tapioca DAO: All assets of (m)TapiocaOFT can be stealed by depositing to strategy cross chain call with 1 amount but maximum shares possibleBridge exploit$0
- Tapioca DAO: `multiHopSellCollateral()` will fail due to call on an invalid market address causing bridged collateral to be locked upBridge exploit$0
- Tapioca DAO: `BaseTOFT.sol`: `retrieveFromStrategy` can be used to manipulate other user's positions due to absent approval checkFront-running / MEV$0
- Tapioca DAO: Exercise option cross chain message in the (m)TapiocaOFT will always revert in the destination, losing debited funds in the source chainGovernance attack$0
- Tapioca DAO: Attacker can pass duplicated reward token addresses to steal the reward of contract `twTAP.sol`Bridge exploit$0
- Tapioca DAO: Magnetar contract has no approval checkingOracle manipulation$0
- Centrifuge: `onlyCentrifugeChainOrigin()` can't require `msg.sender` equal `axelarGateway`Bridge exploit$0
- Maia DAO Ecosystem: Inconsistencies in reading the encoded parameters received in the `_sParams` argument in `BranchBridgeAgent::clearTokens()`Bridge exploit$0
- Maia DAO Ecosystem: Ulysses omnichain - `addbridgeagentfactory` in `rootPort` is not functionalAccess control$0
- Maia DAO Ecosystem: `BranchBridgeAgent._normalizeDecimalsMultiple` will always revert because of the lack of allocating memoryBridge exploit$0
- Maia DAO Ecosystem: An attacker can mint an arbitrary amount of `hToken` on `RootChain`Access control$0
- Maia DAO Ecosystem: Incorrect accounting logic for `fallback` gas will lead to insolvencyBridge exploit$0
- Maia DAO Ecosystem: Overpaying remaining gas to the user for failing `anyExecute` call due to an incorrect gas unit calculation in `BranchBridgeAgent`Access control$0
- Maia DAO Ecosystem: Use of `slot0` to get `sqrtPriceLimitX96` can lead to price manipulation.Oracle manipulation$0
- Maia DAO Ecosystem: Replenishing gas is missing in `_payFallbackGas` of `RootBridgeAgent`Bridge exploit$0
- Maia DAO Ecosystem: An attacker can steal Accumulated Awards from `RootBridgeAgent` by abusing `retrySettlement()`Bridge exploit$0
- Maia DAO Ecosystem: Accessing the incorrect offset to get the nonce when a flag is 0x06 in `RootBridgeAgent::anyExecute()` will lead to marked as executed incorrect nonces and could potentially cause a DoSBridge exploit$0
- Maia DAO Ecosystem: Lack of a return value handing in `ArbitrumBranchBridgeAgent._performCall()` could cause users' deposit to be locked in contractBridge exploit$0
- Maia DAO Ecosystem: An attacker can redeposit gas after `forceRevert()` to freeze all deposited gas budget of `Root Bridge Agent`Reentrancy$0
- Maia DAO Ecosystem: A malicious user can set any contract as a local `hToken` for an underlying token since there is no access control for `_addLocalToken`Reentrancy$0
- Maia DAO Ecosystem: DoS of `RootBridgeAgent` due to missing negation of return values for `UniswapV3Pool.swap()`Integer overflow/underflow$0
- Maia DAO Ecosystem: `RootBridgeAgent.redeemSettlement` can be front-run using `RootBridgeAgent.retrySettlement`, causing redeem to DoSAccess control$0
- Maia DAO Ecosystem: Depositing gas through `depositGasAnycallConfig` should not withdraw the `nativeToken`Bridge exploit$0
- Maia DAO Ecosystem: The difference between `gasLeft` and `gasAfterTransfer` is greater than `TRANSFER_OVERHEAD`, causing `anyExecute` to always failAccess control$0
- Maia DAO Ecosystem: User may underpay for the remote call `ExecutionGas` on the root chainBridge exploit$0
- Maia DAO Ecosystem: Missing the unwrapping of native token in `RootBridgeAgent.sweep()` causes fees to be stuckBridge exploit$0
- Maia DAO Ecosystem: A user can call `callOutSigned` without paying for gas by reentering `anyExecute` with Virtual AccountReentrancy$0
- Maia DAO Ecosystem: Multiple issues with `retrySettlement()` and `retrieveDeposit()` will cause loss of users' bridging depositsBridge exploit$0
- Maia DAO Ecosystem: When the `anyExecute` call is made to `RootBridgeAgent` with a `depositNonce` that has been recorded in `executionHistory`, `initialGas` and `userFeeInfo` will not be updated, which would affect the next caller of `retrySettlement`.Bridge exploit$0
- Maia DAO Ecosystem: `RootBridgeAgent->CheckParamsLib#checkParams` does not check that `_dParams.token` is underlying of `_dParams.hToken`Bridge exploit$0
- Maia DAO Ecosystem: Reentrancy attack possible on `RootBridgeAgent.retrySettlement()` with missing access control for `RootBridgeAgentFactory.createBridgeAgent()`Reentrancy$0
- Maia DAO Ecosystem: `MIN_FALLBACK_RESERVE` (in `BranchBridgeAgent`) doesn't consider the actual gas consumption in ``AnyCall`` contracts, which lets the user underpay the actual cost when replenishing the execution budgetAccess control$0
- Maia DAO Ecosystem: On Ulysses omnichain - `RetrieveDeposit` might never be able to trigger the `Fallback` functionBridge exploit$0
- Maia DAO Ecosystem: Due to inadequate checks, an adversary can call `BranchBridgeAgent#retrieveDeposit` with an invalid `_depositNonce`, which would lead to a loss of other users' deposits.Bridge exploit$0
- Maia DAO Ecosystem: Multiple issues with decimal scaling will cause incorrect accounting of hTokens and underlying tokensBridge exploit$0
- Maia DAO Ecosystem: The user is enforced to overpay for the `fallback` gas when calling `retryDeposit`Bridge exploit$0
- Maia DAO Ecosystem: Incorrectly reading the offset from the received data parameter to get the `depositNonce` in the `BranchBridgeAgent::anyFallback()` functionBridge exploit$0
- Maia DAO Ecosystem: Cross-chain messaging via `Anycall` will failBridge exploit$0
- Biconomy: Cross-Chain Signature Replay AttackSignature replay$0