Skip to content
$1,000,000 in security audit grants are live now, Apply here →

Security review · December 2024

OFT Updates

for Abracadabra Money

Guardian's review of OFT Updates for Abracadabra Money, published December 2024. The report records 4 findings, including 4 low.

Published
Review window
December 24 to 30, 2024
Language
Solidity
Chains
Ethereum, Arbitrum
Sector
Cross-chain, Stablecoins
  • 0 Critical
  • 0 High
  • 0 Medium
  • 4 Low
  • 0 Informational

4 pending

Scope

Findings 4

  1. L-01 Low Missing Aggregator Checks Warning Pending

    Description

    In the FeeHandler contract the latestAnswer on the configured aggregator contract is queried without checking the latestRoundData result with the updated time. Furthermore for FeeHandlers on L2s with sequencers like Arbitrum there is no check to ensure that the sequencer is active. This means the price used to denominate the native asset can be inaccurate beyond the allowed threshold if the aggregator feed is stale. It may instead be better to fallback to the fixed native fee in instances where the oracle price has not been updated as expected.

    Recommendation

    Consider using the fixed native fee as a fallback in the event that the aggregator price is stale or the sequencer is down.

  2. L-02 Low feeTo Assigned To Zero Validation Pending

    Description

    In the FeeHandler contract the feeTo address may be assigned to the zero address in the setFeeTo function. However there is no check to see if the feeTo address is the zero address when sending the fee to the feeTo address in the SenderWithFees._lzSend function.

    Recommendation

    Consider either validating that the feeTo is not address(0) in the setFeeTo function or include logic to skip the fee handler fee if the feeTo is address(0) in the SenderWithFees contract.

  3. L-03 Low Missing disableInitializers Validation Pending
    Location
    Global

    Description

    In the AbraOFTAdapterUpgradeable and AbraOFTUpgradeable contracts the constructors do not include calls to _disableInitializers to disable the initializer functions from being called on the implementation contract directly. This is not a significant risk as the upgradeable contracts are not UUPS proxies, however it is a best practice to disable the initializers for upgradeable contracts.

    Recommendation

    Consider including a call to the _disableInitializers function in the constructor for the AbraOFTAdapterUpgradeable and AbraOFTUpgradeable contracts.

  4. L-04 Low Excess Ether Is Lost Trapped Funds Pending

    Description

    The _lzSend function in the OAppSenderUpgradeable contract performs validation on the msg.value to ensure that it matches the provided _fee.nativeFee with the _payNative function. This validation is however missing from the _lzSend implementation in the SenderWithFees contract. As a result users may accidentally provide a msg.value that exceeds the _fee.nativeFee specified and this amount will be lost to the caller and credited to the next user who calls the _lzSend function.

    Recommendation

    Consider including the _payNative validation in the _lzSend function in the SenderWithFees contract.

More from Abracadabra Money

All 19 reports
  1. MagicGLP Upgrade

    11 findings1 high 11 findings: 1 high, 10 low
  2. PurrSwap Aerodrome

    105 findings9 high 105 findings: 9 high, 23 medium, 45 low, 28 informational
  3. PurrSwap ve33

    74 findings5 critical · 10 high 74 findings: 5 critical, 10 high, 20 medium, 39 low
  4. Hyperliquid OFT Deployment

    3 findings 3 findings: 1 low, 2 informational

Put your code through the same review.

This review started with a conversation about scope. Tell us what you are building and we will plan yours with you.

Get a quote