The _mint_dsc() function calls extcall DSC.mint() but does not check the return value. The comment explicitly acknowledges this with "Note, we are not checking success here".
When the mint fails silently (returns false instead of reverting), the user's user_to_dsc_minted balance is incremented but no tokens are actually minted, creating an accounting mismatch that breaks the protocol's invariants and could lead to insolvency.
Likelihood: Medium
Reason 1 // Depends on DSC token implementation behavior
Reason 2 // Some ERC-20 implementations return false on failure instead of reverting
Impact: High
Impact 1 // User's debt is recorded but no tokens received
Impact 2 // Protocol accounting becomes inconsistent
Impact3 // User cannot burn tokens they don't have to clear their debt
Impact 4 // Collateral becomes permanently locked
The following scenario demonstrates how a user can have debt recorded without receiving tokens. When the DSC mint function returns false instead of reverting on failure, the user's collateral becomes trapped since they cannot burn DSC tokens they never received to free their collateral.
Check the return value of the mint call and revert if it fails. This ensures atomic execution where either both the accounting update and token mint succeed, or the entire transaction reverts with no state changes.
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.