Revolution Protocol - wintermute's results

A protocol to empower communities to raise funds, fairly distribute governance, and maximize their impact in the world.

General Information

Platform: Code4rena

Start Date: 13/12/2023

Pot Size: $36,500 USDC

Total HM: 18

Participants: 110

Period: 8 days

Judge: 0xTheC0der

Id: 311

League: ETH

Collective

Findings Distribution

Researcher Performance

Rank: 41/110

Findings: 1

Award: $148.46

🌟 Selected for report: 0

🚀 Solo Findings: 0

Findings Information

🌟 Selected for report: bart1e

Also found by: 00xSEV, 0xDING99YA, Ryonen, Tricko, hals, wintermute

Labels

bug
2 (Med Risk)
satisfactory
sufficient quality report
edited-by-warden
duplicate-195

Awards

148.462 USDC - $148.46

External Links

Lines of code

https://github.com/code-423n4/2023-12-revolutionprotocol/blob/d42cc62b873a1b2b44f57310f9d4bbfdd875e8d6/packages/revolution/src/AuctionHouse.sol#L311

Vulnerability details

Impact

Malicious actor can pause AuctionHouse or it can happen or by accedent. Admin actions needed to unpause it. This would be bad expirience for users, inconvenient for admin and can damage long term protocol viability because need of constantly monitoring pause state by admin.

Proof of Concept

Add this to AuctionBasic.t.sol:

function testAuctionCreationDOS_gas() public { // create piece with lots of creators address[] memory creators = new address[](100); for (uint160 i; i < 100; i++) creators[i] = address(i+1); uint[] memory bps = new uint[](100); bps[0] = 10_000; createArtPieceMultiCreator( "test", "test", ICultureIndex.MediaType.IMAGE, "test", "test", "test", creators, bps ); // unpausing auction triggers create new auction rutine same as when settleCurrentAndCreateNewAuction vm.expectEmit(true, true, true, true); emit PausableUpgradeable.Paused(address(dao)); address(auction).call{gas: 1_000_000}(abi.encodeWithSelector(auction.unpause.selector)); }

When art piece have a lot of creatorss, 750_000 gas threshold is insufficient to write all creators to Verbs storage. Mint will revert because of OOG and pause triggered.

This happens because writing 1 creator to storage costs ~20K gas, 20K * 100 > 750_000.

Tools Used

www.evm.codes Manual Review

Raise threshold of lower max amount of creators. Another solution would be revert if return data if mint call is empty and it's (likely) because of OOG.

Assessed type

DoS

#0 - c4-pre-sort

2023-12-23T01:09:38Z

raymondfam marked the issue as sufficient quality report

#1 - c4-pre-sort

2023-12-23T01:09:56Z

raymondfam marked the issue as duplicate of #93

#2 - c4-pre-sort

2023-12-24T14:36:07Z

raymondfam marked the issue as duplicate of #195

#3 - c4-judge

2024-01-06T13:26:32Z

MarioPoneder 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