The fulfillRequest()
function has no access control, allowing any user to spoof an oracle response and mint NFTs arbitrarily.
Normally, only the Chainlink Oracle should call fulfillRequest()
.
The function is external
and has no require(msg.sender == oracle)
.
Likelihood:
fulfillRequest()
callable by anyone.
tx.origin
used instead of msg.sender
.
Impact:
NFT minting logic can be triggered with fake weather data.
Complete bypass of the oracle system.
An attacker simulates a successful mint and calls the function directly to mint an NFT.
Add an onlyOracle
modifier or validation inside fulfillRequest()
:
There is no check to ensure that the caller of the `fulfillMintRequest` function is actually the owner of the `requestId`. This allows a malicious user to receive a NFT that is payed from someone else.
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.