Platform: Code4rena
Start Date: 29/03/2024
Pot Size: $36,500 USDC
Total HM: 5
Participants: 72
Period: 5 days
Judge: 3docSec
Total Solo HM: 1
Id: 357
League: ETH
Rank: 53/72
Findings: 1
Award: $8.28
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: immeas
Also found by: 0xAkira, 0xCiphky, 0xGreyWolf, 0xJaeger, 0xMosh, 0xabhay, 0xlemon, 0xmystery, 0xweb3boy, Aamir, Abdessamed, Aymen0909, Breeje, DanielArmstrong, DarkTower, Dots, EaglesSecurity, FastChecker, HChang26, Honour, IceBear, JC, K42, Krace, MaslarovK, Omik, OxTenma, SAQ, Shubham, Stormreckson, Tigerfrake, Tychai0s, VAD37, ZanyBonzy, albahaca, arnie, ast3ros, asui, b0g0, bareli, baz1ka, btk, caglankaan, carrotsmuggler, cheatc0d3, dd0x7e8, grearlake, igbinosuneric, jaydhales, kaden, kartik_giri_47538, m4ttm, ni8mare, niser93, nonn_ac, oualidpro, pfapostol, pkqs90, popeye, radev_sw, samuraii77, slvDev, zabihullahazadzoi
8.2807 USDC - $8.28
The setMintFee() function in the contract does not properly validate the _mintFee parameter. The current implementation checks the variable mintFee instead of validating the _mintFee function argument. This flaw creates a vulnerability as it allows a malicious user to set a mint fee that exceeds the intended limit. Once set at a high mintFee, it will initially result in miscalculations and disruption to the intended functionality of the contract and then setMintFee() will revert on every subsequent call due to the require(mintFee < 200) and this can be considered a DoS.
A malicious user sets _mintFee to a value greater than 200, for example 500. Since the require command only checks mintFee the function continues execution, because it checks the current mintFee and not the new that is coming from function parameter _mintFee. The mintFee is then set to the maliciously supplied value 500, bypassing the intended check. Once set at a high mintFee, it will initially result in miscalculations, and then setMintFee() will revert on every subsequent call due to the require(mintFee < 200) and this can be considered a DoS.
None
To address this vulnerability, it is critical to validate the _mintFee function parameter against the intended limit in the setMintFee() function instead of mintFee.
DoS
#0 - c4-pre-sort
2024-04-04T04:50:30Z
0xRobocop marked the issue as duplicate of #181
#1 - c4-judge
2024-04-09T14:51:56Z
3docSec changed the severity to QA (Quality Assurance)
#2 - c4-judge
2024-04-09T14:53:16Z
3docSec marked the issue as grade-b