GmxProxy.sol::setMinEth GmxProxy.sol::withdrawEth()
The GmxProxy.sol contract grants the owner privileged control over critical protocol functions, including the ability to modify system parameters and withdraw ETH. This introduces a centralization risk, where a malicious or compromised owner could disrupt operations or drain funds.
The owner can arbitrarily change the minimum ETH balance required for contract operations.
If set too high, it could block the protocol’s functionality.
The owner has unrestricted access to withdraw all ETH from the contract.
If the owner is compromised, they could drain the contract’s ETH holdings.
Malicious Owner Scenario
If an attacker gains access to the owner account, they could execute the following actions:
Set minEth to an excessively high value, preventing any contract operations.
Call withdrawEth() to remove all ETH from the contract, leading to a complete loss of funds.
Funds Theft: A compromised or malicious owner could withdraw all ETH.
Denial of Service (DoS): Setting extreme values for minEth could prevent transactions.
Protocol Trust Issues: Centralized control contradicts DeFi principles and reduces user confidence.
Manual Review
Aderyn
Implement a Multi-Signature Governance Model
Replace onlyOwner with a multi-signature wallet (e.g., Gnosis Safe) to prevent single-party control.
Introduce Time-Locked Operations
Require a time delay before executing privileged functions, allowing users to react.
Restrict Withdrawals with Hardcoded Limits
Prevent excessive ETH withdrawals in a single transaction.
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelihood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point.
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelihood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point. Keepers are added by the admin, there is no "malicious keeper" and if there is a problem in those keepers, that's out of scope. ReadMe and known issues states: " * System relies heavily on keeper for executing trades * Single keeper point of failure if not properly distributed * Malicious keeper could potentially front-run or delay transactions * Assume that Keeper will always have enough gas to execute transactions. There is a pay execution fee function, but the assumption should be that there's more than enough gas to cover transaction failures, retries, etc * There are two spot swap functionalies: (1) using GMX swap and (2) using Paraswap. We can assume that any swap failure will be retried until success. " " * Heavy dependency on GMX protocol functioning correctly * Owner can update GMX-related addresses * Changes in GMX protocol could impact system operations * We can assume that the GMX keeper won't misbehave, delay, or go offline. " "Issues related to GMX Keepers being DOS'd or losing functionality would be considered invalid."
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelihood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point.
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelihood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point. Keepers are added by the admin, there is no "malicious keeper" and if there is a problem in those keepers, that's out of scope. ReadMe and known issues states: " * System relies heavily on keeper for executing trades * Single keeper point of failure if not properly distributed * Malicious keeper could potentially front-run or delay transactions * Assume that Keeper will always have enough gas to execute transactions. There is a pay execution fee function, but the assumption should be that there's more than enough gas to cover transaction failures, retries, etc * There are two spot swap functionalies: (1) using GMX swap and (2) using Paraswap. We can assume that any swap failure will be retried until success. " " * Heavy dependency on GMX protocol functioning correctly * Owner can update GMX-related addresses * Changes in GMX protocol could impact system operations * We can assume that the GMX keeper won't misbehave, delay, or go offline. " "Issues related to GMX Keepers being DOS'd or losing functionality would be considered invalid."
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.