Platform: Code4rena
Start Date: 13/12/2022
Pot Size: $36,500 USDC
Total HM: 5
Participants: 77
Period: 3 days
Judge: gzeon
Total Solo HM: 1
Id: 191
League: ETH
Rank: 21/77
Findings: 1
Award: $110.27
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: Trust
Also found by: Apocalypto, Madalad, Matin, aga7hokakological, evan, kaliberpoziomka8552, mookimgo, poirots, subtle77, wagmi, yixxas
110.2711 USDC - $110.27
https://github.com/code-423n4/2022-12-forgeries/blob/main/src/VRFNFTRandomDraw.sol#L33
"MONTH_IN_SECONDS" is an immutable uint256 variable, declared to calculate 1 month in seconds, and is wrongly multiplied by the number 7. In this case it stands for 7 months rather than 1 month.
With multiplication by 7, the "MONTH_IN_SECONDS" extends the time interval. As a result, assigning large time intervals accidentally in "settings" struct inside the VRFNFTRandomDrawFactory contract will pass the requirements. Now, with triggering the startDraw() function, the drawTimeLock variable extends also: https://github.com/code-423n4/2022-12-forgeries/blob/main/src/VRFNFTRandomDraw.sol#L159 In a scenario when the owner wants to call redraw() function, he/she should wait till the block.timestamp fill in the required interval: https://github.com/code-423n4/2022-12-forgeries/blob/main/src/VRFNFTRandomDraw.sol#L204
Manual analysis
correct the definition of "MONTH_IN_SECONDS" to 1 month by deleting the *7 part
#0 - c4-judge
2022-12-17T12:53:20Z
gzeon-c4 marked the issue as duplicate of #273
#1 - c4-judge
2022-12-17T12:53:54Z
gzeon-c4 marked the issue as satisfactory