LiquidationPool.claimRewards() does not utilize safeTransfer() and instead utilizes transfer() when transferring funds to claimer.
The LiquidationPool.claimRewards() function utilizes ERC20.transfer(), which is inappropriate to use. This can be seen in the claimRewards() function below:
Because there are no checks done on the response of the transfer() function, the protocol is mistakenly assuming that all tokens will revert on fail, which is not always the case.
If for whatever reason the ERC20.transfer() function returns a boolean value determining whether the transaction succeeded or not, the protocol will not handle an edge case where the transfer() function failed. This will lead to the protocol assuming that the reward was distributed when it really wasn't.
Manual review
Utilize safeTransfer() instead:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.