Axelar Network v2 contest - cryptonue's results

Decentralized interoperability network.

General Information

Platform: Code4rena

Start Date: 29/07/2022

Pot Size: $50,000 USDC

Total HM: 6

Participants: 75

Period: 5 days

Judge: GalloDaSballo

Total Solo HM: 3

Id: 149

League: ETH

Axelar Network

Findings Distribution

Researcher Performance

Rank: 56/75

Findings: 1

Award: $56.15

🌟 Selected for report: 0

🚀 Solo Findings: 0

Lines of code

https://github.com/code-423n4/2022-07-axelar/blob/main/contracts/deposit-service/ReceiverImplementation.sol#L23 https://github.com/code-423n4/2022-07-axelar/blob/main/contracts/deposit-service/ReceiverImplementation.sol#L51 https://github.com/code-423n4/2022-07-axelar/blob/main/contracts/deposit-service/ReceiverImplementation.sol#L71 https://github.com/code-423n4/2022-07-axelar/blob/main/contracts/deposit-service/ReceiverImplementation.sol#L86

Vulnerability details

Using transfer() for ETH refund on ReceiverImplementation.sol

Impact

The use of the deprecated transfer() function will inevitably make the transaction fail when:

  • The receiver smart contract does not implement a payable function.
  • The receiver smart contract does implement a payable fallback which uses more than 2300 gas unit.
  • The receiver smart contract implements a payable fallback function that needs less than 2300 gas units but is called through proxy, raising the call's gas usage above 2300.

More over, using higher than 2300 gas might be mandatory for some multisig wallets.

Proof of Concept

Recommend using call() instead of transfer(), and make sure to check for reentrancy.

#0 - GalloDaSballo

2022-08-03T21:21:55Z

See #203

#1 - re1ro

2022-08-05T10:11:24Z

Duplicate of #4

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter