Platform: Code4rena
Start Date: 15/12/2022
Pot Size: $128,000 USDC
Total HM: 28
Participants: 111
Period: 19 days
Judge: GalloDaSballo
Total Solo HM: 1
Id: 194
League: ETH
Rank: 108/111
Findings: 1
Award: $9.93
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: 0xdeadbeef0x
Also found by: 0Kage, 0xc0ffEE, 0xmint, AkshaySrivastav, Allarious, Ch_301, Franfran, HollaDieWaldfee, IllIllI, Jeiwan, Lirios, Manboy, adriro, ak1, bin2chen, caventa, chaduke, clems4ever, cozzetti, datapunk, imare, immeas, kaliberpoziomka8552, ladboy233, pauliax, peritoflores, rvierdiiev, sces60107, sk8erboy, stealthyz, unforgiven, wagmi, wallstreetvilkas, yixxas
9.9345 USDC - $9.93
Detailed description of the impact of this finding.
1.Any validator, while creating a pool can submit different validator's nodeId and change the pool's status to prelaunch. It can only change to prelaunch if the current pool's status is withdrawable. Now imagine if the attacker submits nodeId of the validator's pool which is withdrawable. He cannot withdraw, because while withdrawing, it reverts because it's not a valid pool state transition. 2. The pool's data gets reset, clearing out the previous pool data set by victim validator leading to a loss of validator funds.
Provide direct links to all referenced code in GitHub. Add screenshots, logs, or any other relevant proof that illustrates the concept.
The if statement checks if a pool for NodeId exists. It incorrectly assumes that the person calling the function uses their own NodeId. It then resets the pool associated with NodeId, which isn't the caller, but some innocent validator. All the attacker needs to do is to just call the function createMinipool() and set the NodeId to someone else's. That's it.
Manual review
Check if there's already an existing pool associated with specified NodeId, and then check if msg.sender is the actual owner of the pool or not.
#0 - 0xminty
2023-01-04T00:07:45Z
dupe of #805
#1 - c4-judge
2023-01-09T12:37:34Z
GalloDaSballo marked the issue as duplicate of #213
#2 - c4-judge
2023-02-03T12:33:01Z
GalloDaSballo changed the severity to 2 (Med Risk)
#3 - c4-judge
2023-02-03T19:26:10Z
GalloDaSballo changed the severity to 3 (High Risk)
#4 - c4-judge
2023-02-08T08:26:45Z
GalloDaSballo changed the severity to 2 (Med Risk)
#5 - c4-judge
2023-02-08T08:50:11Z
GalloDaSballo changed the severity to 3 (High Risk)
#6 - c4-judge
2023-02-08T20:29:05Z
GalloDaSballo marked the issue as satisfactory
#7 - c4-judge
2023-02-09T08:53:06Z
GalloDaSballo changed the severity to QA (Quality Assurance)
#8 - Simon-Busch
2023-02-09T12:53:15Z
Changed severity back from QA to H as requested by @GalloDaSballo