Holograph contest - caventa's results

Omnichain protocol for deploying, minting, & bridging NFTs between blockchains.

General Information

Platform: Code4rena

Start Date: 18/10/2022

Pot Size: $75,000 USDC

Total HM: 27

Participants: 144

Period: 7 days

Judge: gzeon

Total Solo HM: 13

Id: 170

League: ETH

Holograph

Findings Distribution

Researcher Performance

Rank: 109/144

Findings: 1

Award: $0.00

QA:
grade-c

🌟 Selected for report: 0

🚀 Solo Findings: 0

Lines of code

https://github.com/code-423n4/2022-10-holograph/blob/main/src/enforcer/HolographERC20.sol#L31 https://github.com/code-423n4/2022-10-holograph/blob/main/src/enforcer/HolographERC20.sol#L382 https://github.com/code-423n4/2022-10-holograph/blob/main/contracts/library/ECDSA.sol#L2 https://github.com/code-423n4/2022-10-holograph/blob/main/src/enforcer/HolographERC20.sol#L361

Vulnerability details

Impact

OpenZeppelin has a vulnerability in versions lower than 4.7.3, which can be exploited by an attacker. The project uses a vulnerable version 4.4.1 (See ECDSA.sol#L2)

Proof of Concept

All of the conditions from the advisory are satisfied: the signature comes in a single bytes argument, ECDSA.recover() (See HolographERC20.sol#L382) is used, and the signatures themselves are used for replay protection checks https://github.com/OpenZeppelin/openzeppelin-contracts/security/advisories/GHSA-4h98-2769-gh6h

If a user calls permit() (See HolographERC20.sol#L361), notices a mistake, then calls permit() again, an attacker can use signature malleability to re-submit the first change request, as long as the old request has not expired yet.

Tools Used

Manual review

Use at least the patched version of @openzeppelin/contracts 4.7.3.

#0 - gzeoneth

2022-10-28T07:29:33Z

./library is out-of-scope

#1 - gzeoneth

2022-10-30T15:31:05Z

Duplicate of #385

#2 - gzeoneth

2022-11-21T07:17:32Z

As QA report

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