Part 2

Zaros
PerpetualsDEXFoundrySolidity
70,000 USDC
View results
Submission Details
Severity: high
Invalid

Stale Price Data in Liquidation Process

Summary: LiquidationBranch uses outdated price feeds, enabling unfair liquidations.

Vulnerability Details:
The liquidateAccounts function in LiquidationBranch.sol does not validate the freshness of Chainlink oracle data. Stale prices (e.g., due to a halted oracle) allow attackers to liquidate healthy positions or avoid liquidation of underwater accounts.

Code Reference:

// LiquidationBranch.sol
uint256 assetPrice = chainlinkOracle.latestAnswer();
// No check for updatedAt timestamp


Attack Scenario:
A Chainlink oracle fails to update for 24 hours due to a technical issue. An attacker liquidates accounts using the outdated price, unfairly seizing collateral from positions that are actually solvent at current market rates.

Impact: High – Loss of user collateral due to incorrect liquidations.

Recommendations:

  1. Add timestamp checks to ensure price data is within a valid threshold (e.g., 1 hour).

  2. Use secondary oracles for redundancy.

Updates

Lead Judging Commences

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Out of scope

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.