The fulfillMintRequest function allows any external account to call it with any requestId. Since this function triggers the actual minting of an NFT to msg.sender, it becomes a serious attack surface.
If a malicious actor identifies a valid and pending requestId, they can front-run or preemptively complete another user's request and mint an NFT to themselves
This also exposes users to fund loss. If a user deposited LINK (via _initLinkDeposit) as part of a request, and a malicious actor frontruns or hijacks the fulfillment, the legitimate user loses their LINK without receiving the NFT, breaking economic and trust guarantees.
Likelihood:
The function is public, and the mint flow is tied to easily observable requestId's
Impact:
Enables unauthorized NFT minting and loss of user funds this LINK deposits, once they are not being used for the user itself, undermining the security of the oracle-minting flow.
Run this test into WeatherNftForkTest:
Result:
Use the _userMintRequest.user the user that requested the mint of weatherNFT
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.