# Paribus: oracle manipulation via Camelot PBX pool drains lending markets

Paribus NFT lending pool priced collateral via manipulable Camelot PBX/USDT pool, letting attacker flash-loan, inflate PBX, and borrow ~86k across pETH/pARB/pWBTC/pUSDT.

- Payout: Real-world hack
- Severity: high
- Program: Paribus
- Credited: DeFiHackLabs
- Disclosed: 2025-01-18
- Write-up quality: 6/10
- Original: https://github.com/SunWeb3Sec/DeFiHackLabs/blob/main/src/test/2025-01/Paribus_exp.sol
- Library page: https://bugbountylibrary.com/r/dhl%3A20250118-paribus
- Tags: domain:web3 impact:funds-loss kind:incident platform:defihacklabs sev:high tech:evm tech:solidity technique:chained vuln:flash-loan vuln:oracle-manipulation

**Target:** NFT-collateralized lending protocol on Arbitrum (ControllerNFT / PBXToken markets)
**Root cause:** Collateral valuation for the minted Camelot NFT position relied on a spot price from a thin, manipulable Camelot PBX/USDT pool rather than a robust oracle.
**Steps:**
1. Flash-loan 3,093,209.807085 USDT from Aave.
2. Swap 1,000,000 USDT -> PBX on Camelot to move the pool price.
3. Mint a Camelot NFT position with PBX/USDT (tick -870000..870000, ~789.7e18 PBX, 500e9 USDT) and approve it to PNFTTokenDelegator (tokenId 224023).
4. Call `ComptrollerNFT.enterNFTMarkets([PNFTTokenDelegator])` then `PNFTTokenDelegator.mint(224023)` to post the inflated NFT as collateral.
5. Borrow pETH 12.599e18, pARB 6510.27e18, pWBTC 36,729,789, pUSDT 3,924,210,566 against the mispriced collateral.
6. Swap 31,033,846.713e18 PBX -> USDT on Camelot and 36,729,789 WBTC -> USDT on Uniswap V3 to repay the flash loan.
7. Keep remaining borrowed assets (~86k) as profit.
**How found:** Post-mortem by BitFinding identified the Camelot PBX/USDT pool as the price source for the NFT position collateral; the thin liquidity made spot-price manipulation via a single swap viable.
**Exploitation:** Attacker flash-borrowed USDT, pumped the PBX price in the Camelot pool used for NFT-position valuation, minted and posted an overvalued NFT collateral, borrowed four assets from Paribus markets, then unwound the PBX and WBTC positions to repay Aave and retain the borrowed funds.
**Escalation:** Single manipulated pool used to overvalue collateral across four separate borrow markets (pETH, pARB, pWBTC, pUSDT), amplifying extraction.
**Insight:** When a lending market accepts LP/NFT positions as collateral, check which pool and which price function values them; a single low-liquidity pool that the borrower can swap against is a direct oracle-manipulation vector, and one inflated position can unlock every borrow market at once.
