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.