The root cause is that the function doesn't check that the collateral depth plus bonus is it greater than the user's actual collateral that he deposited.
Impact:
Now if you subtract the high amount from the low amount and you into fifty six, the wipers will give you... will revert. And, uh, this way, the most deeply underwater positions can't be liquidated.
in the liquidated function, the d s c underscore engine dot v y contract. There's a missing check that... if the user's position is deeply under watered and that even his deposited amount is less than the depth that he has now, so that's... in that case, he can't be liquidated because of the underflow error that we have in the liquidated function.
Likelihood:
The likelihood is high because, uh, crypto is known as for its volatile prices, and prices can go can go up and down very violently. So that's why it can happen... this can happen very likely.
Impact:
And, also, the impact would be that the protocol won't be able to liquidate the users. most positions are DP and water.
In normal liquidation:
Liquidator gets: debt collateral + 10% bonus
Everyone is happy
But in deeply underwater position:
Full amount + bonus > what user actually has
So instead of reverting — just take everything the user has left
Liquidator gets less than 10% bonus — but at least they get something
Bad debt gets cleared — protocol is saved
Think of it like this. Real world example.
Someone owes you $100 but only has $80 left. You have two choices:
Say "I want my full $100 or nothing" — you get nothing, debt stays forever
Say "okay give me your $80, I'll take the loss on $20" — at least you recover something
The fix forces option 2. Take whatever is available, clear the position, move on.
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.