Weather Witness

First Flight #40
Beginner FriendlyFoundrySolidityNFT
100 EXP
View results
Submission Details
Severity: high
Valid

Unprotected 'performUpkeep' (Missing Registry Check + LINK Drain).

Description: 'performUpkeep' is 'external override' with no 'require(msg.sender == keeperRegistry) guard'.

Impact: Any EOA can call 'performUpkeep', triggering new weather requests and draining LINK from the contract or user’s deposit.

Proof of Concept:

// Simple repro: from any address
performUpkeep(data) -> LINK balance decreases, and no access control prevents it.

Recommended Mitigation: Restrict callers to the Chainlink Keeper registry:

function performUpkeep(bytes calldata performData) external override {
+ require(msg.sender == s_keeperRegistry, "Only Keeper registry");
...
}
Updates

Appeal created

bube Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Anyone can call `performUpkeep` function

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.

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.