The StabilityPool contract contains a vulnerability in its initialization process. The initialize function lacks access control, allowing any address to call it and set critical contract parameters.
The vulnerability exists in the initialize function:
The function is marked as public with only the initializer modifier from OpenZeppelin. No additional access control is implemented even though the function accepts critical contract addresses as parameters. This makes the contract vulnerable to front-running attacks during initialization.
The vulnerability has significant implications:
Protocol Compromise: An attacker can:
Set malicious contract addresses for all core components
Control the flow of tokens and funds
Manipulate pool operations
Potentially drain user deposits
Trust Assumptions Broken:
Users assume contract parameters are set by legitimate protocol owners
Compromised initialization breaks this trust
Could lead to loss of user funds and protocol reputation
Add access control:
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.