# Illuminate PTs can be used to mint other Illuminate PTs

Lender.mint accepted Illuminate PTs as input, letting attackers mint unbacked Illuminate PTs and inflate share supply, diluting all lenders' redemptions to zero.

- Payout: Contest reward
- Severity: high
- Program: Illuminate
- Credited: pashov
- Disclosed: 2022-10-15
- Write-up quality: 7/10
- Original: https://github.com/sherlock-audit/2022-10-illuminate-judging/issues/108
- Library page: https://bugbountylibrary.com/r/sherlock%3A2022-10-illuminate%3AH-15
- Tags: domain:web3 impact:dos impact:funds-loss kind:contest platform:sherlock sev:high tech:solidity technique:source-review vuln:accounting-error vuln:business-logic vuln:share-inflation

**Target:** Lender.mint / Redeemer.redeem share accounting
**Root cause:** Lender.mint() does not exclude the Illuminate principal (p=0) as input, so Illuminate PTs can be deposited to mint more Illuminate PTs with no new asset backing; Redeemer pays out pro-rata against inflated totalSupply.
**Steps:**
1. Call `Lender.mint(0, u, m, a)` with `a` Illuminate PTs already held (approve Lender first).
2. MarketPlace.token(u,m,0) returns the Illuminate PT itself; transferFrom pulls it in and `authMint(msg.sender, a)` mints `a` new Illuminate PTs.
3. Repeat to inflate Illuminate PT totalSupply arbitrarily.
4. When Redeemer.redeem() runs, `redeemed = amount * holdings[u][m] / token.totalSupply()` yields near-zero per token, diluting honest lenders.
**How found:** Code reading of Lender.mint: noticed `p` is passed unchecked to MarketPlace.token and principalToken() hardcodes index 0, so the Illuminate PT is itself a valid input; then traced Redeemer's share-based redemption formula to confirm dilution.
**Exploitation:** Attacker acquires Illuminate PTs (e.g. by minting legitimately or buying), then repeatedly calls mint with p=0 to inflate totalSupply without backing. After Redeemer.redeem() sweeps PTs into the Redeemer contract (which lacks a rescue function), redemptions are diluted to near-zero, permanently freezing lenders' principal.
**Escalation:** Affects all underlyings and maturities since every Illuminate PT shares the same mint path; attacker waits until Redeemer holds the PTs to defeat the Lender emergency withdraw.
**Insight:** When a protocol lets users deposit its own derivative token back into the mint function, check whether the deposit token equals the output token and whether redemption is share-based rather than 1:1 — self-referential collateral inflates supply.
