RAACNFT's mint function relies solely on price > 0
validation from the oracle, without checking for data staleness or manipulation, enabling potential minting of NFTs at incorrect valuations.
If raac_hp.tokenToHousePrice(_tokenId)
returns 0, minting reverts, but there’s no check for stale data.
Initial State:
Oracle (raac_hp) is operational
Price data exists for valid tokenIds
Attacker identifies oracle manipulation vector
Exploitation Steps
The RAACNFT contract blindly accepts any non-zero price from the oracle, creating a fundamental security gap. The code assumes price validity based solely on the non-zero check, ignoring critical validation of data freshness and authenticity.
Resulting State:
NFTs minted at manipulated prices
Protocol accepts incorrect valuations
Asset-backing becomes misaligned
Similar to the Cream Finance oracle manipulation attack where stale prices led to $130M loss. Both cases demonstrate how implicit trust in oracle data without freshness/validity checks can lead to catastrophic asset mispricing.
Also Mango Markets oracle manipulation attack ($114M loss) demonstrates how insufficient oracle validation leads to catastrophic asset mispricing. Both cases show how DeFi protocols requiring precise asset valuation can be exploited through oracle trust assumptions.
NFTs for invalid tokenId
could be minted if the oracle is compromised.
vs
Add a whitelist for valid tokenId
ranges or implement oracle staleness checks.
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.