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
Scope
Findings 4
-
L-01 Low Missing Aggregator Checks Warning Pending
Description
In the
FeeHandlercontract thelatestAnsweron 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.
-
L-02 Low feeTo Assigned To Zero Validation Pending
Description
In the
FeeHandlercontract thefeeToaddress may be assigned to the zero address in thesetFeeTofunction. However there is no check to see if thefeeToaddress is the zero address when sending the fee to thefeeToaddress in theSenderWithFees._lzSendfunction.Recommendation
Consider either validating that the
feeTois notaddress(0)in thesetFeeTofunction or include logic to skip the fee handler fee if thefeeToisaddress(0)in theSenderWithFeescontract. -
L-03 Low Missing disableInitializers Validation Pending
Description
In the
AbraOFTAdapterUpgradeableandAbraOFTUpgradeablecontracts the constructors do not include calls to_disableInitializersto 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
_disableInitializersfunction in the constructor for theAbraOFTAdapterUpgradeableandAbraOFTUpgradeablecontracts. -
L-04 Low Excess Ether Is Lost Trapped Funds Pending
Description
The
_lzSendfunction in theOAppSenderUpgradeablecontract performs validation on themsg.valueto ensure that it matches the provided_fee.nativeFeewith the_payNativefunction. This validation is however missing from the_lzSendimplementation in theSenderWithFeescontract. As a result users may accidentally provide amsg.valuethat exceeds the_fee.nativeFeespecified and this amount will be lost to the caller and credited to the next user who calls the_lzSendfunction.Recommendation
Consider including the
_payNativevalidation in the_lzSendfunction in theSenderWithFeescontract.
No findings match.
More from Abracadabra Money
All 19 reports-
MagicGLP Upgrade
11 findings1 high 11 findings: 1 high, 10 low -
PurrSwap Aerodrome
105 findings9 high 105 findings: 9 high, 23 medium, 45 low, 28 informational -
PurrSwap ve33
74 findings5 critical · 10 high 74 findings: 5 critical, 10 high, 20 medium, 39 low -
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.
