The protocol's core collateral valuation system fails to validate price data freshness, allowing critical financial operations to execute using obsolete NFT valuations. This affects both the price oracle (RAACHousePrices
) and lending pool (LendingPool
), enabling undercollateralized borrowing, invalid liquidations, and premature NFT withdrawals. The absence of timestamp checks creates systemic risk where delayed price updates could be exploited to manipulate loan positions and protocol solvency, representing a high-severity vulnerability in the protocol's risk management framework.
The protocol lacks critical staleness checks for oracle price updates in two key locations:
Oracle Contract Price Retrieval
The RAACHousePrices.getLatestPrice
function (RAACHousePrices.sol#L34-L38) returns price data without validating the freshness of the information. This allows the protocol to operate using arbitrarily outdated price values.
Lending Pool Price Validation
The LendingPool.getNFTPrice
function (LendingPool.sol#L591-L595) consumes oracle data without performing secondary staleness verification, despite being responsible for critical collateral valuation in borrowing/liquidation operations.
This dual-layer failure enables several dangerous scenarios:
Loans issued against collateral valued using obsolete prices
Liquidations triggered/avoided based on inaccurate valuations
Withdrawals permitted using deprecated NFT valuations
The absence of timestamp validation in both the data source (oracle) and data consumer (lending pool) violates fundamental oracle security practices, leaving the protocol vulnerable to price manipulation through delayed updates.
This vulnerability creates systemic risk across the protocol's core financial mechanisms, with severe consequences:
Collateral Valuation Failures
Outdated NFT prices enable undercollateralized borrowing, exposing lenders to bad debt accumulation when collateral value declines unreported.
Withdrawal Exploitation
The LendingPool.withdrawNFT
function uses stale prices to evaluate collateralization ratios, allowing withdrawals of NFTs while their real-world value has dropped below safe thresholds.
Liquidation Mechanism Breakdown
Liquidations may:
Fail to trigger when collateral values drop below safe thresholds
Wrongly liquidate positions still above water due to stale high prices
Price Manipulation Vulnerability
Malicious actors could exploit delayed price updates to:
Take oversized loans against temporarily overvalued NFTs
Avoid legitimate liquidations during price declines
Artificially inflate protocol TVL metrics
Protocol Insolvency Risk
Accumulation of improperly collateralized loans could lead to cascading defaults, threatening the entire system's solvency during market volatility.
This vulnerability represents a high severity risk as it enables direct value extraction through delayed price updates while undermining core protocol solvency safeguards.
Manual Review
Implement a two-layer staleness verification system:
Oracle-Level Enforcement
Add time validation to RAACHousePrices.getLatestPrice
:
Implement token-specific timestamp tracking rather than global lastUpdateTimestamp.
Consumer-Level Validation
Enhance LendingPool.getNFTPrice
with:
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.