The contract lacks protection against request ID collisions and reuse in the Oracle request system, potentially leading to data corruption or manipulation.
Severity: Medium
Likelihood: Medium
The contract's request ID handling mechanism doesn't implement safeguards against ID collisions or reuse, which could lead to weather data being incorrectly mapped to NFTs.
Root Cause:
Initial State:
Contract manages multiple concurrent oracle requests
Request IDs are generated using Chainlink's system
Attack Scenario:
Multiple weather update requests are made
Request ID collision occurs due to similar input parameters
Later request overwrites earlier request's data
NFTs receive incorrect weather updates
Data corruption
Incorrect weather updates
Lost oracle responses
Potential NFT value manipulation
System reliability compromised
Manual Review
Add request ID tracking and validation:
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.