Reproduced Exploit
Threshold USD — mintList early-return lets depositors run away with collateral
1. When BorrowerOperations is removed from thUSD.mintList, adjustment guards early-return. 2. ICR / recovery-mode checks never run for withdrawColl. 3. Alice withdraws nearly all collateral without repaying debt. 4. Trove ICR collapses to ~0 while bad debt remains against the system.
Chain
Other
Category
untagged
Date
Jun 2023
Source
AuditVault
EVM Playground
Source-level debugger — step opcodes and Solidity in sync
The attack is replayed in an in-browser EVM preloaded with the exact dumped fork state. The execution tree shows every call; step by Solidity line or by opcode across all depths — source, Stack, Memory, Storage, Balances (native / ERC-20 / NFT), Transient storage and Return value stay in sync. Click a tree node, opcode, or source line to jump. No backend, no live RPC.
Source & credit. Reproduction of a public audit finding curated by AuditVault — the original finding: 54691-requirevalidadjustmentincurrentmode-bypass-when-not-in-mintl. Standalone Foundry PoC and full write-up: 54691-requirevalidadjustmentincurrentmode-bypass-when-not-in-mintl_exp in the
evm-hack-registrymirror.
Vulnerability classes: wrong-condition · direct-drain · liquidation-underwater
Reproduction: self-contained Foundry PoC with only
forge-std— no fork. output.txt · test/54691-…sol.
AuditVault taxonomy: lang/solidity · platform/cantina · severity/high · sector/cdp · sector/lending · sector/stable · genome: wrong-condition · direct-drain · liquidation-underwater
Key info#
| Impact | HIGH — undercollateralized troves after deprecation; THUSD peg / system solvency at risk |
| Protocol | Threshold USD — BorrowerOperations._requireValidAdjustmentInCurrentMode |
| Vulnerable code | if (!thusdToken.mintList(address(this))) return; |
| Bug class | Early-return skips ICR invariants |
| Finding | Cantina — Threshold USD, Jun 2023 · #54691 · reporter Alex The Entreprenerd |
| Report | cantina_threshold_usd_june2023.pdf |
| Source | AuditVault |
| Fix | commit e05abc — same checks for normal and deprecated states |
| Compiler | ^0.8.24 (PoC) |
TL;DR#
- When
BorrowerOperationsis removed fromthUSD.mintList, adjustment guards early-return. - ICR / recovery-mode checks never run for
withdrawColl. - Alice withdraws nearly all collateral without repaying debt.
- Trove ICR collapses to ~0 while bad debt remains against the system.
Diagrams#
Impact#
All depositors on a deprecated BorrowerOperations instance can exit collateral without repayment, leaving underwater debt that threatens THUSD for that deployment.
Sources#
- AuditVault #54691
- Cantina Threshold USD Jun 2023
- Finding quotes
BorrowerOperations.sol#L542-L557; fix commit e05abc
Sources & further analysis#
Reproductions & code
- Standalone PoC + full trace: 54691-requirevalidadjustmentincurrentmode-bypass-when-not-in-mintl_exp (evm-hack-registry mirror).
- AuditVault finding: 54691-requirevalidadjustmentincurrentmode-bypass-when-not-in-mintl.
Alerts & third-party analyses
These dashboards index community alerts tweets, post-mortems, and independent write-ups. Reach them through the protocol name above to cross-check this reproduction against other analyses.