Submitted by AuditsAreUS
The Lido adapter incorrectly calculates the price of WETH in terms of WstETH.
The function returns the price of WstETH in terms of stETH. The underlying token which we desire is WETH.
Since stETH does not have the same value as WETH the output price incorrect.
The impact is severe as all the balance calculations require the price of the yield token converted to underlying. The incorrect price may over or understate the harvestable amount which is a core calculation in the protocol.
The function IWstETH(token).getStETHByWstETH() only converts WstETH to stETH. Thus, price() returns the value of WstETH in terms of stETH.
Add extra steps to price() to approximate the rate for converting stETH to ETH. This can be done using the same curve pool that is used to convert stETH to ETH in unwrap().
0xfoobar (Alchemix) disputed and commented:
0xleastwood (judge) decreased severity to Medium and commented:
