The MembershipERC1155
contract is upgradeable but lacks a storage gap variable. This makes the contract vulnerable to storage collisions during future upgrades, particularly when new variables need to be added. The absence of a storage gap variable is a significant risk for upgradeable contracts as it could lead to storage layout corruption.
The contract MembershipERC1155
inherits from ERC1155Upgradeable
and AccessControlUpgradeable
and is deployed behind a proxy, When deployed via the factory:
The contract allows implementation upgrades through updateMembershipImplementation
However, there's no storage gap to reserve slots for future variable additions, making upgrades potentially dangerous.
Storage Collision Risk
Adding new state variables in upgraded versions could overwrite existing storage
Cannot safely add new storage variables in upgrades
Reduces contract flexibility and maintainability
Storage collisions could corrupt token balances
Manual Review
Add explicit storage layout versioning
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.