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
Rank: 41/110
Findings: 1
Award: $148.46
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: bart1e
Also found by: 00xSEV, 0xDING99YA, Ryonen, Tricko, hals, wintermute
148.462 USDC - $148.46
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.
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.
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.
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