# Sense PT redemptions do not allow for known loss scenarios

Redeemer.redeem reverts if Sense PT redemption returns less than 1:1, so legitimate Lido slashing/withdrawal losses permanently freeze Illuminate PT principal.

- Payout: Contest reward
- Severity: medium
- Program: Illuminate
- Credited: IllIllI
- Disclosed: 2022-10-15
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2022-10-illuminate-judging/issues/111
- Library page: https://bugbountylibrary.com/r/sherlock%3A2022-10-illuminate%3AM-6
- Tags: domain:web3 impact:dos impact:funds-loss kind:contest platform:sherlock sev:medium tech:evm tech:solidity technique:source-review vuln:accounting-error vuln:dos

**Target:** Redeemer.sol Sense PT redemption path
**Root cause:** Redeemer.redeem() asserts redeemed >= amount (1:1 underlying per PT), treating any shortfall as adapter malice, but Sense series can legitimately settle below par due to Lido slashing or stETH withdrawal restrictions.
**Steps:**
1. Sense series sponsor settles series at a loss-adjusted exchange rate (e.g. Lido slashing or withdrawal restrictions).
2. User calls `Redeemer.redeem()` for the Sense PT; adapter converts compounding tokens to underlying.
3. `redeemed = IERC20(u).balanceOf(address(this)) - starting` is less than `amount` (PT balance).
4. Check `if (redeemed < amount) revert Exception(13,...)` fires, blocking redemption.
5. Illuminate PT redemptions are share-of-underlying based, so all PT holders absorb the shortfall and principal is frozen absent admin `withdraw()`.
**How found:** Code review of Redeemer.redeem() noting the strict 1:1 assertion, cross-referenced with Sense Divider's handling of losses and Lido's documented slashing/price risks.
**Exploitation:** Not an attacker-driven exploit; a malicious series sponsor could deliberately trigger Lido losses (DoS validators or force withdrawal restrictions) so settlement exchange rate drops, causing Illuminate PT holders to lose principal since redemptions are share-based rather than token-based.
**Insight:** When a redemption path asserts 1:1 backing, check whether the underlying yield source (Lido, rebasing/staked tokens) can legitimately settle below par; strict equality checks turn normal loss events into permanent fund freezes.
