# All collateral in Velodrome vault will be permantly locked if either asset in liquidity pair stays outside of min/max price

Oracle min/max price bounds revert pricing calls, so if either LP asset exits its range, closeLoan reverts and all Velodrome vault collateral is permanently locked.

- Payout: Contest reward
- Severity: medium
- Program: Isomorph
- Credited: 0x52
- Disclosed: 2022-11-05
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2022-11-isomorph-judging/issues/70
- Library page: https://bugbountylibrary.com/r/sherlock%3A2022-11-isomorph%3AM-13
- Tags: domain:web3 impact:dos impact:funds-loss kind:contest platform:sherlock sev:medium tech:solidity technique:source-review vuln:dos vuln:oracle-manipulation

**Target:** Vault_Velo.sol closeLoan / getOraclePrice
**Root cause:** getOraclePrice reverts when the Chainlink price is outside immutable min/max bounds; closeLoan prices collateral before allowing withdrawal, so out-of-range prices block all loan closure.
**Steps:**
1. Call closeLoan on Vault_Velo with collateral in a Velodrome LP pair.
2. closeLoan calls _calculateProposedReturnedCapital -> getOraclePrice for the collateral.
3. getOraclePrice reverts with 'Upper/Lower price bound breached' if signedPrice outside [_minPrice,_maxPrice].
4. Withdrawal reverts; collateral cannot be removed.
**How found:** Code review of getOraclePrice's require bounds and tracing that closeLoan prices collateral before permitting withdrawal, noting the only exit path depends on that pricing call.
**Exploitation:** Not an attack; a liveness failure. Any user attempting closeLoan while either LP asset trades outside the immutable oracle bounds has the transaction revert, trapping collateral until Chainlink updates the aggregator bounds.
**Insight:** When an oracle has hard min/max revert guards, audit every exit/liquidation path that depends on pricing: a bounded oracle turns a price move into a permanent lock. Check whether full-repay paths still price collateral unnecessarily.
