requestId generated during a mint request and use it to call fulfillMintRequest(requestId) to mint an NFT, even if they are not the original msg.sender who initiated the mint request
The vulnerability lies in the fulfillMintRequest function, which does not validate the caller's identity:
fulfillMintRequest function does not validate that the caller is the original user who initiated the mint request.Initial State: A user initiates a mint request, and the requestId is emitted in the WeatherNFTMintRequestSent event.
Step 1: A malicious user observes the blockchain event and extracts the requestId.
Step 2: The malicious user calls fulfillMintRequest(requestId) to mint an NFT.
Outcome: The malicious user mints an NFT they did not pay for.
Implications: This leads to unauthorized minting, financial losses for legitimate users, and potential abuse of the system.
fulfillMintRequest.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.