executeOperation validates the caller and initiator correctly but routes entirely on the decoded OperationType from _params without verifying that the encoded FlashLoanParams or UnwindParams fields are consistent with the actual flash loan values received from Aave (_asset, _amount).
Likelihood:
Any future code change that passes mismatched params to flashLoanSimple would be silently accepted by the callback
If Aave upgrades and delivers a different asset or amount than requested, the discrepancy goes undetected
Impact:
Decoded FlashLoanParams.collateralToken could differ from _asset, causing incorrect token approvals and supply calls
Inconsistent amounts between encoded params and actual flash loan could produce undercollateralized positions
Cross-check the decoded collateralToken / debtToken against the actual _asset received from Aave at the start of the callback. This ensures the contract's internal accounting always matches what Aave actually delivered, catching encoding errors before any state changes occur.
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.
The contest is complete and the rewards are being distributed.