The contract allows the same user (or any user) to call fulfillMintRequest
multiple times with the same requestId
, resulting in multiple NFTs being minted for a single weather request.
Likelihood:
This will occur whenever a user (or attacker) calls fulfillMintRequest
more than once with the same requestId
, as there is no restriction in place to prevent repeated minting for the same request.
Automated bots or malicious users can exploit this by monitoring events and repeatedly calling the function.
Impact:
Multiple NFTs can be minted for a single weather request, breaking NFT uniqueness.
Users or attackers can obtain more NFTs than they paid for, leading to economic loss and loss of trust in the platform.
This test should be passing to confirm it is not allowed (revert is expected on second function call:
Add a fulfillment tracking mapping and require statement to prevent multiple mints per request:
The `WeatherNFT::fulfillMintRequest` allows a malicious user to call multiple times the function with the same `requestId`.
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.