_mint_dsc and _burn_dsc call DSC.mint and DSC.burn_from without checking the external call result — the code even comments that it is skipping the check.
The engine's internal user_to_dsc_minted ledger is updated regardless of whether the token operation actually moved supply.
Likelihood:
Low. The in-scope snekmate DSC reverts on failure, so the bug is latent unless the DSC token is upgraded/replaced or wraps a non-reverting implementation.
Impact:
High. If the DSC token ever returns false instead of reverting (or mint is paused), the engine still credits/debits user_to_dsc_minted. On burn that means a user's debt is cleared without the DSC actually being destroyed, breaking the 1:1 supply-vs-debt invariant and letting circulating DSC exceed backed debt — a depeg / bad-debt vector.
Point the engine at a DSC mock whose burn_from returns false instead of reverting.
Make the interface return a bool and assert it (or rely only on revert-on-failure semantics explicitly).
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.