Escher contest - Awesome's results

A decentralized curated marketplace for editioned artwork.

General Information

Platform: Code4rena

Start Date: 06/12/2022

Pot Size: $36,500 USDC

Total HM: 16

Participants: 119

Period: 3 days

Judge: berndartmueller

Total Solo HM: 2

Id: 189

League: ETH

Escher

Findings Distribution

Researcher Performance

Rank: 115/119

Findings: 1

Award: $0.61

🌟 Selected for report: 0

🚀 Solo Findings: 0

Lines of code

https://github.com/code-423n4/2022-12-escher/blob/main/src/minters/LPDA.sol#L105

Vulnerability details

Impact

Using payable.transfer() is not recommended because it can lead to the locking of funds.

The transfer() call requires that the recipient has a payable callback, and only provides 2300 gas for its operation. This means the following cases can cause the transfer to fail:

  • The contract does not have a payable callback

  • The contract's payable callback spends more than 2300 gas (which is only enough to emit something)

  • The contract is called through a proxy which itself uses up the 2300 gas

If a user falls into one of the above categories, they'll be unable to receive funds from the vault in a migration wrapper.

Proof of Concept

src/minters/LPDA.sol#L105

Line 105: payable(msg.sender).transfer(owed);

As we can see line 105 uses payable.transfer()

References

Stop Using Solidity's transfer() Now

Use address.call{value:x}() instead

#0 - c4-judge

2022-12-10T00:29:46Z

berndartmueller marked the issue as duplicate of #99

#1 - c4-judge

2023-01-03T12:46:07Z

berndartmueller marked the issue as satisfactory

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