StabilityPool
is not using the correct implementation of the reentrancy guard. The contract should be upgradeable but instead is using the non upgradeable reentrancy guard implementation provided by OpenZeppelin.
The StabilityPool
contract is intended to be upgradeable; however, it imports the non-upgradeable version of ReentrancyGuard from OpenZeppelin. This can lead to issues, as the non-upgradeable version does not have the necessary initializers and storage gap reserved for upgradeable contracts, which are essential for upgradeability mechanisms.
An attacker can call StabilityPool::initialize
and pass arbitrary arguments
Manual Review
Inherit the appropriate contract:
and change the import
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.