performUpkeep()
does not enforce a mutex or cooldown, enabling potential reentrancy and LINK depletion.
There’s no guard variable like requestInProgress
or lastRequestTime
.
Malicious actors or misconfigured keepers can re-trigger oracle requests quickly
Likelihood:
Can be reentered in back-to-back transactions.
No time guard or flag prevents double request.
Impact:
LINK rapidly depleted by repeated oracle calls.
Denial-of-service for future users.
With insufficient spacing, both will queue different requests.
Add throttling with a timestamp and mutex calls:
The `performUpkeep` function should be called by the Chainlink keepers or owners of the NFT. But there is no access control and anyone can call the function. This leads to malicious consumption of the user's LINK deposit.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.