Aave is a DeFi liquidity protocol for users to supply and borrow assets. This contest focuses on its v3.3 version, optimising different components of the system like liquidations or bad debt management
Scope
On what chains are the smart contracts going to be deployed?
Ethereum, Base, Arbitrum, Avalanche, Optimism, Polygon, Metis, Gnosis, BNB Chain, Scroll, Zksync Era
If you are integrating tokens, are you allowing only whitelisted tokens to work with the codebase or any complying with the standard? Are they assumed to have certain properties, e.g. be non-reentrant? Are there any types of weird tokens you want to integrate?
Aave only allows whitelisted tokens, that by design should not have “weird” traits, like ERC777, or activated fee-on-transfer, amongst others. This “whitelisting” is applied before the listing happens via on-chain governance, with a technical pre-analysis performed by development teams contributing to the Aave protocol.
Exceptions are managed ad-hoc like it can be the case of USDT (with theoretically potential fee-on-transfer).
Are there any limitations on values set by admins (or other roles) in the codebase, including restrictions on array lengths?
All permissioned entities are trusted (Owner, Admin, Umbrella).
Are there any limitations on values set by admins (or other roles) in protocols you integrate with, including restrictions on array lengths?
We assume protocols the codebase has as dependencies (e.g. Chainlink, assets listed themselves) behave non-maliciously, and its fundamentals don’t change, for example, by upgrading proxies to any breaking implementation.
Is the codebase expected to comply with any specific EIPs?
No.
Are there any off-chain mechanisms involved in the protocol (e.g., keeper bots, arbitrage bots, etc.)? We assume these mechanisms will not misbehave, delay, or go offline unless otherwise specified.
Nothing within the context of Aave v3.3, aside from external entities like the Chainlink price feeds, which are assumed to function and not miss-behave.
What properties/invariants do you want to hold even if breaking them has a low/unknown impact?
Apart from all the extra information in this document, a list of properties of the system can be found in the Aave-v3.3-properties file in the repository.
Please discuss any design choices you made.
As Aave v3.3 is an upgrade on top of Aave v3.2, special care was taken to not break any existing integrations.
Some debatable compromises are being made in the upgrade:
StErMi
. The alternatives would have required different compromises and/or an upgrade of vGHO/aGHO which we did not want to include in an upgrade.uint256.max
would revert instead of liquidating max, as described in the Certora
audit. The decision was taken to accept this minor UX issue as it can only appear in edge case scenarios, and the solution would have required extensive changes on liquidationLogic.A full description of the design on v3.3 can be found in the Aave-v3.3-features file on the repository.
Please provide links to previous audits (if any).
Please list any relevant protocol resources.
Additional audit information.
The exact project scope is reflected on the sherlock scope page. The v3.3 pr on the aave-v3-origin repository includes additional helpers and tests, which are not included in the scope
The Aave protocol has a working system of liquidations, the goal of this contest is to detect any problem that could:
Some extra assumptions and limitations:
Total Rewards
Contest Pool
Lead Senior Watson
Judging Pool
Lead Judge
160,000 USDC
16,000 USDC
1,900 USDC
3,100 USDC
Status
Scope
Start Time
End Time
Judging Rules
Reserved Auditors