The PerMarketsStorage upgradable contrct serves as the storage of PerMarkets. But it does not have access modifiers to enforce access control to ensure only authorized entities can modify or read sensitive This exposes any contract interfacing with it to cross function reentrancies.
PerMarketsStorage.offerInfoMap can be used in cross function reentrancies:
PreMarktes.abortAskOffer(address,address)
PreMarktes.abortBidTaker(address,address)
PreMarktes.closeOffer(address,address)
PreMarktes.createOffer(CreateOfferParams)
PreMarktes.createTaker(address,uint256)
PreMarktes.getStockInfo(address)
PreMarktes.listOffer(address,uint256,uint256)
PreMarktes.relistOffer(address,address)
PreMarktes.settleAskTaker(address,address,uint256,uint256)
PerMarketsStorage.stockInfoMap
PreMarktes.updateStockStatus(address,StockStatus)
exposes the protocol to reentrancy attacks, making the protocol to lose assets
manual review
for PerMarketsStorage UpgradeableStorage contract
i. Follow OpenZeppelin's recommended practices for upgradeable contracts.
For any contract interfacing with the PerMarketsStorage UpgradeableStorage contract
ii. You can implement a reentrancy guard or
iii. Implement Check-Effects-Interactions (CEI) Pattern
Invalid, all [vague generalities](https://docs.codehawks.com/hawks-auditors/how-to-determine-a-finding-validity#vague-generalities) talking about possible reentrancies 11and afaik, reentrancy is not possible and not proven.
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.