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
HighMissing Permission Check for Function `setBridge()`Fixed

There is a missing permission check for the function `setBridge`. This could be used for DDoS attacks.

MediumERC-677 Standard Not Adhered to/Return Value UncheckedFixed

0. `packages\arb-bridge-peripherals\contracts\tokenbridge\libraries\gateway\ArbitrumGateway.sol`: function `inboundEscrowAndCall` does not check for whether an external call to `ERC677Receiver` actually succeeds. It is part of the [ERC677 proposal](https://github.com/ethereum/EIPs/issues/677) that `onTokenTransfer` returns a boolean that signifies success or failure. There is an assumption here that `_to` necessarily implements a revert system too. It would be much better to check for return boolean of `onTokenTransfer` and revert on failure. 0. `packages\arb-bridge-peripherals\contracts\tokenbridge\libraries\ERC677Token.sol`: `transferAndCall` ignores return value of `transfer`; same for `onTokenTransfer`.

Low[False Positive] Function `initialize()` Not ProtectedFixed

Function `initialize` is used as a `constructor`-like function and used to set important state variables for a contract. However, it seems to be `public` and not protected. Typically you expect some sort of modifier that checks whether the contract has already been initialized. It could be used as an implementation with a proxy that protects `initialize`, but this is not clear with the current scope of the audit. If that assumption is wrong then this is a severe exploit waiting to happen.

LowPrivileged Roles and OwnershipFixed

There are some actions that could have important consequences for end-users. 0. The owner of the `packages\arb-bridge-peripherals\contracts\tokenbridge\ethereum\gateway\L1GatewayRouter.sol` can call functions `setDefaultGateway` and `setGateways` at any point in time, to alter the existing token contract and gateway addresses mapping record.

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