Arbitrum Token Bridge

QuantstampFiles named in the report

Quantstamp reviewed Arbitrum (Arbitrum Token Bridge) on 4 Aug 2021: 9 findings, 0 critical; 4 marked fixed, 4 acknowledged, 1 open.

No open critical findings
Open the reportOpen Arbitrum’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings9

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High001
Medium001
Low142
LowDangerous External Calls From `TokenGateway`s to Arbitrary Contact by AnyoneAcknowledged

The function `transferExitAndCall` can be called by any user to call any external contracts. This enables a user to have privilege of the `TokenGateway` contract and could be used as a tool to conduct a complex attack.

LowGreedy ContractAcknowledged

A greedy contract is a contract that can receive ether which can never be redeemed.

LowMissing Checks if Address Is Non-ZeroAcknowledged

There are many functions that do not validate input addresses. A list of them is provided below, but they might not be comprehensive since there are too many of them. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\libraries\gateway\ArbitrumMessenger.sol`: `sendTxToL2`, `sendTxToL1`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\libraries\gateway\GatewayRouter.sol`: `_initialize`, `setDefaultGateway`, `outboundTransfer`, `finalizeInboundTransfer`, `inboundExcrowAndCall`, `getOutboundCalldata`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\ethereum\gateway\L1GatewayRouter.sol`: `_initialize`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\libraries\gateway\ArbitrumGateway.sol`: `_initialize`, `outboundTransfer`, `finalizeInboundTransfer`, `inboundExcrowAndCall`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\libraries\gateway\TokenGateway.sol`: `_initialize`, `isRouter`, `isCounterpartGateway`, `calculateL2TokenAddress`, `getOutboundCalldata`, `finalizeInboundTransfer`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\ethereum\gateway\L1ArbitrumGateway.sol`: `_initialize` `getExternalCall`, `createOutboundTx`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\ethereum\gateway\L1ArbitrumExtendedGateway.sol`: `transferExitAndCall`, `getExternalCall`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\ethereum\gateway\L1CustomGateway.sol`: `initialize`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\arbitrum\gateway\L2ArbitrumGateway.sol`: `_initialize`, `createOutboundTx`, `getOutboundCalldata`, `outboundTransfer`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\libraries\L2GatewayToken.sol`: `_initialize`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\arbitrum\gateway\L2ERC20Gateway.sol`: `_initialize`, `handleNoContract`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\arbitrum\gateway\L2WethGateway.sol`: `_initialize`, `handleNoContract`, `outBoundEscrowTransfer`, `_calculateL2TokenAddress`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\arbitrum\gateway\L2CustomGateway.sol`: `_initialize`, `handleNoContract`. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\libraries\aeWETH.sol`: `_initialize`.

LowUnlocked PragmaAcknowledged

Every Solidity file specifies in the header a version number of the format pragma solidity (^)0.8.*. The caret (^) before the version number implies an unlocked pragma, meaning that the compiler will use the specified version and above, hence the term "unlocked".

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (36)

  • tokenbridge/test/GatewayTest.sol
  • tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol
  • tokenbridge/libraries/BytesParser.sol
  • tokenbridge/libraries/gateway/ICustomGateway.sol
  • tokenbridge/libraries/gateway/GatewayRouter.sol
  • tokenbridge/test/TestPostDepositCall.sol
  • tokenbridge/libraries/gateway/ArbitrumGateway.sol
  • tokenbridge/arbitrum/gateway/L2GatewayRouter.sol
  • tokenbridge/libraries/ClonableBeaconProxy.sol
  • tokenbridge/libraries/gateway/ITokenGateway.sol
  • tokenbridge/arbitrum/gateway/L2CustomGateway.sol
  • tokenbridge/ethereum/gateway/L1ArbitrumExtendedGateway.sol
  • tokenbridge/libraries/gateway/IGatewayRouter.sol
  • tokenbridge/test/TestERC20.sol
  • tokenbridge/test/TestCustomTokenL1.sol
  • tokenbridge/arbitrum/gateway/L2ERC20Gateway.sol
  • tokenbridge/ethereum/gateway/L1WethGateway.sol
  • tokenbridge/ethereum/gateway/L1ERC20Gateway.sol
  • tokenbridge/libraries/ITransferAndCall.sol
  • tokenbridge/libraries/L2GatewayToken.sol
  • tokenbridge/arbitrum/IArbToken.sol
  • tokenbridge/libraries/aeWETH.sol
  • tokenbridge/libraries/gateway/ArbitrumMessenger.sol
  • tokenbridge/test/TestArbCustomToken.sol
  • tokenbridge/ethereum/ICustomToken.sol
  • tokenbridge/libraries/IWETH9.sol
  • tokenbridge/test/TestWETH9.sol
  • tokenbridge/libraries/gateway/TokenGateway.sol
  • tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol
  • tokenbridge/arbitrum/gateway/L2WethGateway.sol
  • tokenbridge/libraries/TransferAndCallToken.sol
  • tokenbridge/test/InboxMock.sol
  • tokenbridge/ethereum/gateway/L1GatewayRouter.sol
  • tokenbridge/arbitrum/StandardArbERC20.sol
  • tokenbridge/ethereum/gateway/L1CustomGateway.sol
  • tokenbridge/libraries/aeERC20.sol

Part of Arbitrum’s security record

Arbitrum
Audits1 audit by 1 firmLast audit Aug 2021, by Quantstamp.
Critical findingsNo open critical findingsIn 1 report.
Open Arbitrum’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us