Three critical protocol functions are gated solely behind onlyOwner:
| Function | Risk if owner is malicious or compromised |
|---|---|
setAllowedToken() line 227 |
Add malicious token, delist legitimate ones |
updateFlashLoanFee() line 253 |
Set fee to 100% blocking all flash loans |
_authorizeUpgrade() line 280 |
Upgrade proxy to malicious implementation |
Likelihood:
Requires the owner's private key to be compromised or the owner to act maliciously; not exploitable by external parties.
Impact:
A single compromised private key can effectively rug the entire protocol.
All three critical functions are callable by a single EOA with no delay or multi-party approval:
Replace the EOA owner with a Gnosis Safe multi-sig and wrap upgrade and fee functions behind a timelock so LPs have a window to exit before changes take effect. Parameter changes should require multiple signers to execute.
Use a multi-sig (e.g. Gnosis Safe) as the owner address rather than an EOA
Apply a timelock on upgradeTo and updateFlashLoanFee so LPs have time to exit before changes take effect
Consider a governance mechanism for protocol parameter changes
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.