_reqId
) before storing associated minting information, allowing bots or malicious actors to track and act on it. Impact: An attacker could front-run the asynchronous process and attempt to spoof or fulfill the request before the legitimate user, leading to the minting of a weather NFT with incorrect or manipulated weather metadata.
Normally, the contract sends a Chainlink Functions request and maps the resulting request ID to the user’s mint intent.
The request ID is emitted and accessible to everyone before internal mappings are secured, allowing attackers to exploit the delay.// Root cause in the codebase with @> marks to highlight the relevant section
Likelihood:
Request ID is visible to bots immediately after being created.
Exploitation possible before the mint is finalized.
Impact:
Wrong NFT metadata may be minted.
Trust in the minting process is broken—users may not get NFTs aligned with their actual location/weather.
s_currentMintPrice
.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.