Description: The contract uses a single-owner model for the upgrades, creating a central point of failure. If the owner's key is compromised, an attacker could upgrade the contract to a malicious implementation.
The contract uses a UUPS upgradeable pattern, but the _authorizeUpgrade function is empty, allowing the owner to upgrade the contract without any restrictions.
and
Impact:
An attacker gains access to the owner's private key.
The attacker deploys a new malicious implementation contract.
The attacker calls the upgrade function to replace the current implementation with the malicious one.
All future interactions with the wallet now use the malicious code, potentially allowing the attacker to steal funds or perform other malicious actions.
The owner could maliciously upgrade the contract, potentially draining user funds or introducing backdoors.
Recommended Mitigation:
Implement a timelock mechanism for upgrade:
This solution will add a timelock period between proposing and executing an upgrade, giving users time to react if a malicious upgrade is proposed. It also improves transparency by emitting events for upgrade-related actions.
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.