An user can use an attack contract to block being liquidated.
Summary
The attack is similar to my previous issue but has a different attack vector.
Where that issues explains how to drain the pool, this explains how to skip being liquidated.
While fixing the possibility to drain the pool, this issue can be left open which includes using transferIbTokens() .
Vulnerability Detail
Supply() collateral 100, borrow() 80
Call deferLiquidityCheck(), status is now DEFFERED. At external call, send all ibTokens to someone else (transferIbTokens)
transferIbTokens checks _checkAccountLiquidity but skips since status = LIQUIDITY_CHECK_DEFERRED
ibTokens are transfered
deferLiquidityCheck() continues and sets status to NORMAL
Delvir0
high
An user can use an attack contract to block being liquidated.
Summary
The attack is similar to my previous issue but has a different attack vector. Where that issues explains how to drain the pool, this explains how to skip being liquidated. While fixing the possibility to drain the pool, this issue can be left open which includes using
transferIbTokens()
.Vulnerability Detail
Impact
A user can block himself from being liquidated
Code Snippet
See above
Tool used
Manual Review
Recommendation
Consider sending the collateral instead of the ibTokens to the liquidater