The contract lacks implementation of time-based update intervals to prevent frequent price manipulations, which could be exploited to manipulate liquidations in the LendingPool.
The contract documentation states it "Implements a time-based update interval to prevent too frequent price updates" but no such protection exists. The setHousePrice()
function updates prices without any cooldown period:
This is particularly concerning because the LendingPool relies on these prices using RAACHousePrices::getLatestPrice()
function to determine the current NFT Price https://github.com/Cyfrin/2025-02-raac/blob/main/contracts/core/pools/LendingPool/LendingPool.sol#L591-L592 for critical operations like:
Calculating collateral values
Determining borrowing capacity
Initiating liquidations
Without update interval protection, the owner of the RAACHousePriceOracle
contract could:
Rapidly update prices to trigger unfair liquidations
Manipulate collateral values to allow excessive borrowing
Front-run transactions by updating prices right before user actions
Manual Review
Add a minimum update interval to the RAACHousePrices
contract to prevent overly frequent updates:
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.