AAVE users suffered $21m in incorrect liquidations today due to a bad oracle price for wstETH. AAVE didn't suffer any bad debt, but users with healthy positions were unfairly liquidated.
Full list of liquidations can be found by going to https://community.chaoslabs.xyz/aave/risk/liquidations, and choosing wstETH as collateral, WETH as debt. We didn't check whether this impacted users who borrowed other assets, e.g. USDC.
The cause was an incorrect adjustment on the WstETHPriceCapAdapter, a part of AAVE's CAPO oracle system. The intention of the system is to prevent manipulation attacks, e.g. somehow spike the wstETH/stETH ratio -> borrow a bunch of ETH/other assets against wstETH on AAVE -> profit. It's a system that's used for correlated assets, and in general works great.
Above is a visual of how the wstETH oracle works on AAVE - it fetches the ratio from Lido, then caps it using the WstETHPriceCapAdapter, and multiplies it by the ETH price to calculate the actual fair $ price per wstETH.
The problem was that the CAPO max price was changed to 1 wstETH = 1.1933947 ETH, when the actual ratio at that time was 1.22850. The picture below shows the changes.
We don't know how Edge Risk came up with 1.191926. Its proprietary off-chain tech we don't have insights to. The scary part is that this almost happened a month earlier too, but the wstETH CAPO agent was not yet hooked up.
Because of this, we suspect this was not a compromise of compromised keys or an insider attack, but a technical issue. We don't know for certain.
This article is not meant to paint a bad picture about AAVE, nor Chaos Labs. We are BIG fans of both teams, and are simply highlighting what factually happened. Thanks for understanding, and apologies for the clickbait-y article picture.