The StabilityPool
contract in the system contains an unbounded managerList
dynamic array that grows without a cap when managers are added via the addManager
function. This unbounded growth leads to a potential denial-of-service (DoS) risk, as view functions like getManagers()
and state-changing functions like removeManager
could exceed Ethereum’s block gas limit as the list size increases, rendering them uncallable.
If managerList grows too large, getManagers() becomes uncallable, preventing external systems or users from retrieving the list of managers, disrupting monitoring or management operations. This could affect reliance on the function for off-chain analytics or governance.
removeManager could also fail due to high gas costs, complicating the removal of managers and potentially locking the contract into an unusable state if the list becomes too large.
Malicious actors or unintentional overuse by the contract owner could exploit this to render critical functions unusable, impacting the stability and reliability of the StabilityPool.
Manual
Introduce a constant MAX_MANAGERS in the StabilityPool contract and enforce it in addManager:
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.