Platform: Code4rena
Start Date: 13/11/2023
Pot Size: $24,500 USDC
Total HM: 3
Participants: 120
Period: 4 days
Judge: 0xTheC0der
Id: 306
League: ETH
Rank: 78/120
Findings: 1
Award: $4.08
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: chaduke
Also found by: 0xpiken, Bauchibred, Matin, MohammedRizwan, MrPotatoMagic, OMEN, Pheonix, SandNallani, T1MOH, Topmark, ZanyBonzy, adriro, aslanbek, ayden, bareli, bart1e, bin2chen, btk, cheatc0d3, codynhat, critical-or-high, d3e4, erebus, firmanregar, hunter_w3b, jasonxiale, kaveyjoe, ksk2345, lsaudit, max10afternoon, merlinboii, nailkhalimov, osmanozdemir1, peanuts, pep7siup, pontifex, sbaudh6, shenwilly, sl1, tourist, wisdomn_, young, zhaojie
4.0797 USDC - $4.08
The current implementation may prevent users from creating new shares, leading to frustration and potentially harming the app's reputation.
When creating new share via Market.createNewShare
, there is a check to ensure that the shareName
is unique:
Market.sol#L120
function createNewShare( string memory _shareName, address _bondingCurve, string memory _metadataURI ) external onlyShareCreator returns (uint256 id) { ... require(shareIDs[_shareName] == 0, "Share already exists"); ... }
A malicious party could observe the mempool and frontrun createNewShare
transactions, causing them to revert. This effectively blocks the user from registering new shares in the app.
While this issue wouldn't be a problem initially as creators are whitelisted, this could be problematic as the app opens to the public.
createNewShare
tx.Reconsider the necessity of unique shareName
values. If on-chain uniqueness is important, implement strategies to counteract frontrunning, such as imposing a small fee or employing a commit-reveal process during share creation.
DoS
#0 - c4-pre-sort
2023-11-18T16:28:58Z
minhquanym marked the issue as duplicate of #124
#1 - c4-judge
2023-11-29T00:41:47Z
MarioPoneder changed the severity to QA (Quality Assurance)
#2 - c4-judge
2023-11-29T22:46:42Z
MarioPoneder marked the issue as grade-b