Root Cause: The _deposit_collateral() function only checks that amount_collateral > 0, allowing deposits of any non-zero amount including dust amounts worth fractions of a cent.
Impact: Attackers can create thousands of micro-positions that cost more gas to liquidate than they're worth. These positions accumulate as unliquidatable bad debt when they become underwater, gradually making the protocol insolvent.
Normal Behavior: Users should deposit meaningful amounts of collateral that can be economically liquidated if needed.
Issue: The _deposit_collateral() function only checks that amount_collateral > 0, allowing dust deposits. Micro-positions may cost more gas to liquidate than they're worth.
Likelihood:MEDIUM
Reason 1 : Attackers can create thousands of micro-positions cheaply
Reason 2 : Normal users may accidentally create tiny positions
Impact:
Impact 1 : Dust positions accumulate as bad debt when liquidation is uneconomical
Impact 2 : Protocol becomes cluttered with unliquidatable position
An attacker creates 1000 positions, each depositing 1 wei of ETH and minting 1 wei of DSC. Each position has collateral worth less than $0.000001. When these positions become liquidatable, the gas cost to liquidate (approximately $10 at normal gas prices) far exceeds the value recovered. These positions remain as permanent bad debt in the system.
Implement a minimum collateral value threshold in USD terms. Check that either the deposit itself or the user's total position after deposit meets this minimum. This ensures all positions can be economically liquidated.
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.