Wrong Price will be Returned When Asset is PToken for WstETH
Iron Bank allows a PToken market to be created for an underlying asset in addition to a lending market. PTokens can be counted as user collaterals and their price is fetched based on their underlying tokens. However, wrong price will return when PToken's underlying asset is WstETH.\\nRetrieving price for WstETH is a 2 step process. WstETH needs to be converted to stETH first, then converted to ETH/USD. This is properly implemented when the market is WstETH through checking `if (asset==wsteth)`. But when PToken market is created for WstETH, this check will by bypassed because PToken contract address will be different from wsteth address.\\nPToken market price is set through `_setAggregators()` in PriceOracle.sol where base and quote token address are set and tested before writing into `aggregators` array. And note that quote token address can either be ETH or USD. When asset price is accessed through `getPrice()`, if the input asset is not `wsteth` address, `aggregators` is directly pulled to get chainlink price denominated in ETH or USD.\\n```\\n//PriceOracle.sol\\n//_setAggregators()\\n                require(\\n                    aggrs[i].quote == Denominations.ETH ||\\n                        aggrs[i].quote == Denominations.USD,\\n                    "unsupported quote"\\n                );\\n```\\n\\n```\\n//PriceOracle.sol\\n    function getPrice(address asset) external view returns (uint256) {\\n        if (asset == wsteth) {\\n            uint256 stEthPrice = getPriceFromChainlink(\\n                steth,\\n                Denominations.USD\\n            );\\n            uint256 stEthPerToken = WstEthInterface(wsteth).stEthPerToken();\\n            uint256 wstEthPrice = (stEthPrice * stEthPerToken) / 1e18;\\n            return getNormalizedPrice(wstEthPrice, asset);\\n        }\\n        AggregatorInfo memory aggregatorInfo = aggregators[asset];\\n        uint256 price = getPriceFromChainlink(\\n            aggregatorInfo.base,\\n            aggregatorInfo.quote\\n        );\\n       // rest of code\\n```\\n\\nThis creates a problem for PToken for WstETH, because `if (asset==wsteth)` will be bypassed and chainlink aggregator price will be returned. And chainlink doesn't have a direct price quote of WstETH/ETH or WstETH/USD, only WstETH/stETH or stETH/USD. This means most likely aggregator price for stETH/USD will be returned as price for WstETH.\\nSince stETH is a rebasing token, and WstETH:stETH is not 1 to 1, this will create a wrong valuation for users holding PToken for WstETH as collaterals.
In `getPrice()`, consider adding another check whether the asset is PToken and its underlying asset is WstETH. If true, use the same bypass for pricing.
Since users holding PToken for WstETH will have wrong valuation, this potentially creates opportunities for malicious over-borrowing or unfair liquidations, putting the protocol at risk.
```\\n//PriceOracle.sol\\n//_setAggregators()\\n                require(\\n                    aggrs[i].quote == Denominations.ETH ||\\n                        aggrs[i].quote == Denominations.USD,\\n                    "unsupported quote"\\n                );\\n```\\n