Platform: Code4rena
Start Date: 25/01/2023
Pot Size: $36,500 USDC
Total HM: 11
Participants: 173
Period: 5 days
Judge: kirk-baird
Total Solo HM: 1
Id: 208
League: ETH
Rank: 163/173
Findings: 1
Award: $2.59
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: adriro
Also found by: 0xMAKEOUTHILL, 0xMirce, 7siech, AkshaySrivastav, AlexCzm, Awesome, Aymen0909, Cryptor, Deivitto, DimitarDimitrov, ElKu, Garrett, Jayus, Josiah, Kenshin, KrisApostolov, RaymondFam, SovaSlava, Timenov, UdarTeam, amaechieth, btk, c3phas, codeislight, fellows, frankudoags, gzeon, hansfriese, luxartvinsec, millersplanet, mookimgo, navinavu, oberon, paspe, pavankv, petersspetrov, pfapostol, prestoncodes, rbserver, sakshamguruji, shark, thekmj, trustindistrust, tsvetanovv, usmannk, vagrant, vanko1, xAriextz, yosuke
2.5852 USDC - $2.59
https://github.com/rabbitholegg/quest-protocol/blob/8c4c1f71221570b14a0479c216583342bd652d8d/contracts/RabbitHoleReceipt.sol#L58-L61 https://github.com/rabbitholegg/quest-protocol/blob/8c4c1f71221570b14a0479c216583342bd652d8d/contracts/RabbitHoleReceipt.sol#L98-L104
yosuke
The mint function in RabbitHoleReceipt.sol uses the onlyMinter modifier. This modifier is shown below, and the revert is not working, so anyone can pass the check.
modifier onlyMinter() { msg.sender == minterAddress; //Where is revert()? _; }
Furthermore, since the mint function is public and can be easily called from outside the contract, an attacker who is not on-chain-tasked can mint multiple receipts. An attacker who mints them can exchange them for ERC20 or ERC1155, draining funds from the contract and fatally damaging the protocol. Also, those who are originally entitled to the rewards will not get them. For these reasons, I consider this bug to be highly serious.
https://github.com/rabbitholegg/quest-protocol/blob/8c4c1f71221570b14a0479c216583342bd652d8d/contracts/RabbitHoleReceipt.sol#L58-L61 https://github.com/rabbitholegg/quest-protocol/blob/8c4c1f71221570b14a0479c216583342bd652d8d/contracts/RabbitHoleReceipt.sol#L98-L104
pen and paper
Please fix the onlyMinter modifier as shown below.
modifier onlyMinter() { if(msg.sender != minterAddress) revert NotMinter(); _; }
#0 - c4-judge
2023-02-06T08:44:30Z
kirk-baird marked the issue as duplicate of #9
#1 - c4-judge
2023-02-14T08:37:41Z
kirk-baird marked the issue as satisfactory