A blackhat can set a pool to 100% utilization preventing all operation that use withdraw of aave, including claim yield.
The issue is that both AAVE allow to withdraw only the difference between the pool's supply and debt. This means that the withdrawal operation might revert in case of 100% utilization (supply ~= debt).
So the attack steps to prevent the admin to claim yield is:
Check the mempool for a claim yield (will be deployed in mainnet)
Borrow all debt so utilization is 100%
Claim yield will fail
https://github.com/Cyfrin/2025-01-diva/blob/main/contracts/src/AaveDIVAWrapperCore.sol#L335-L353
Any method that use aave withdraw can be DOS, specially claim yield which is the main purpose of the contract.
VS Code
Solodit. Author PanProg: M-1: MultiInvoker and Manager orders execution can be DOS in key moments if AAVE/Compound utilization is at 100%
A way to solve is to send to the recipient the "aToken" in case the withdraw fails (eg aUSDC) and then
the user will be able to exchange it in a secondary market like uniswap.
I would change the code like this to return the a token:
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.