Aave strategies approve wrong token to Permit2, blocking emergency migration mechanism during protocol upgrades.
Vulnerability Details
Description
The Aave V3 strategy implementations pass the wrong token (underlying asset) instead of the receipt token (aToken) to the parent MYTStrategy constructor. This causes Permit2 to receive approval for a token the strategy doesn't hold, while having no approval for the token the strategy actually holds.
Root Cause
In all three Aave strategies, the constructor passes the underlying asset (_usdc or _weth) instead of the Aave receipt token (_aUSDC or _aWETH) as the fourth parameter to MYTStrategy:
The MYTStrategy constructor then approves this token to Permit2:
Affected Code Locations
File
Line
Current Code
Should Be
src/strategies/optimism/AaveV3OPUSDCStrategy.sol
31
MYTStrategy(..., _usdc)
MYTStrategy(..., _aUSDC)
src/strategies/arbitrum/AaveV3ARBUSDCStrategy.sol
31
MYTStrategy(..., _usdc)
MYTStrategy(..., _aUSDC)
src/strategies/arbitrum/AaveV3ARBWETHStrategy.sol
31
MYTStrategy(..., _weth)
MYTStrategy(..., _aWETH)
Impact Details
Defeats the purpose of Permit2 integration for these strategies