setSymbolsPrice() can use the priceSig from a long time ago
`setSymbolsPrice()` only restricts the maximum value of `priceSig.timestamp`, but not the minimum time This allows a malicious user to choose a malicious `priceSig` from a long time ago A malicious `priceSig.upnl` can seriously harm `partyB`\\n`setSymbolsPrice()` only restricts the maximum value of `priceSig.timestamp`, but not the minimum time\\n```\\n    function setSymbolsPrice(address partyA, PriceSig memory priceSig) internal {\\n        MAStorage.Layout storage maLayout = MAStorage.layout();\\n        AccountStorage.Layout storage accountLayout = AccountStorage.layout();\\n      LibMuon.verifyPrices(priceSig, partyA);\\n        require(\\n          priceSig.timestamp <=\\n                maLayout.liquidationTimestamp[partyA] + maLayout.liquidationTimeout,\\n            "LiquidationFacet: Expired signature"\\n        );\\n```\\n\\nLibMuon.verifyPrices only check sign, without check the time range\\n```\\n    function verifyPrices(PriceSig memory priceSig, address partyA) internal view {\\n        MuonStorage.Layout storage muonLayout = MuonStorage.layout();\\n        require(priceSig.prices.length == priceSig.symbolIds.length, "LibMuon: Invalid length");\\n        bytes32 hash = keccak256(\\n            abi.encodePacked(\\n                muonLayout.muonAppId,\\n                priceSig.reqId,\\n                address(this),\\n                partyA,\\n                priceSig.upnl,\\n                priceSig.totalUnrealizedLoss,\\n                priceSig.symbolIds,\\n                priceSig.prices,\\n                priceSig.timestamp,\\n                getChainId()\\n            )\\n        );\\n        verifyTSSAndGateway(hash, priceSig.sigs, priceSig.gatewaySignature);\\n    }\\n```\\n\\nIn this case, a malicious user may pick any `priceSig` from a long time ago, and this `priceSig` may have a large negative `unpl`, leading to `LiquidationType.OVERDUE`, severely damaging `partyB`\\nWe need to restrict `priceSig.timestamp` to be no smaller than `maLayout.liquidationTimestamp[partyA]` to avoid this problem
restrict `priceSig.timestamp` to be no smaller than `maLayout.liquidationTimestamp[partyA]`\\n```\\n    function setSymbolsPrice(address partyA, PriceSig memory priceSig) internal {\\n        MAStorage.Layout storage maLayout = MAStorage.layout();\\n        AccountStorage.Layout storage accountLayout = AccountStorage.layout();\\n\\n        LibMuon.verifyPrices(priceSig, partyA);\\n        require(maLayout.liquidationStatus[partyA], "LiquidationFacet: PartyA is solvent");\\n        require(\\n            priceSig.timestamp <=\\n                maLayout.liquidationTimestamp[partyA] + maLayout.liquidationTimeout,\\n            "LiquidationFacet: Expired signature"\\n        );\\n+     require(priceSig.timestamp >= maLayout.liquidationTimestamp[partyA],"invald price timestamp");\\n```\\n
Maliciously choosing the illegal `PriceSig` thus may hurt others user
```\\n    function setSymbolsPrice(address partyA, PriceSig memory priceSig) internal {\\n        MAStorage.Layout storage maLayout = MAStorage.layout();\\n        AccountStorage.Layout storage accountLayout = AccountStorage.layout();\\n      LibMuon.verifyPrices(priceSig, partyA);\\n        require(\\n          priceSig.timestamp <=\\n                maLayout.liquidationTimestamp[partyA] + maLayout.liquidationTimeout,\\n            "LiquidationFacet: Expired signature"\\n        );\\n```\\n