Bridge's function getZethValue() must return locked amount of ETH, however now it returns balance of LST. Firstly LST value deviates from ETH, secondly protocol will overvalue them in case of stETH or rETH collapses.
Bridges return balance of LST, instead of ETH equivalent
For example current price of rETH is 1.085 ETH
Function getZethValue() is used in LibVault.getZethTotal(), that is used in LibVault.updateYield(). As a result yield is incorrectly calculated. I consider it redundant to describe step by step why yield is calculated in a wrong way, because pricing of locked value in vault is critical issue by definition.
But can describe it more carefully in escalation period
Incorrect pricing will definitely introduce price manipulation attack in case of price deviation of stETH or rETH.
Manual Review
Convert stETH and rETH into ETH in functions getZethValue()
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.