DeFiFoundry
50,000 USDC
View results
Submission Details
Severity: low
Invalid

Insecure Perpetual Vault Assignment in GMXProxy Contract

Summary

The report evaluates the design where the perpetual vault is set via the _perpVault parameter in GMXProxy. The concern is that if _perpVault is assigned an externally owned account (EOA) instead of a properly implemented contract, required callback functions and business logic will be missing, leading to failures during execution.

Vulnerability Details

  • Design Assumption: The GMXProxy contract expects the perpetual vault to implement various functions (e.g., afterOrderExecution, afterLiquidationExecution, afterOrderCancellation) as defined in the IPerpetualVault interface.

  • Risk: If an EOA is used for _perpVault, callback calls will fail, resulting in reverted transactions or unexpected behavior.

  • Implementation Issue: The setPerpVault function does not restrict the type of address passed, hence there's a risk of assigning an EOA inadvertently.

  • Callback Expectations: During order execution or cancellation, the GMXProxy contract makes external calls to the vault. Without a contract to handle these callbacks, these calls will not execute business logic properly.

Impact

  • Loss of Funds: Failed callbacks could interrupt critical workflow steps like token transfers, potentially leading to locked or lost funds.

  • System Disruption: The overall logic of GMXProxy might halt or behave erratically if the vault does not respond as expected.

  • Security Posture: The misconfiguration could be exploited if the vault functionality is assumed during auditing or deployment.

Tools Used

Manual review

Recommendations

  • Enforce Contract Checks: Implement a validation in setPerpVault to ensure that _perpVault is a contract by using extcodesize to check for non-zero code size.

  • Interface Verification: Consider verifying that the provided address supports required functions.

Updates

Lead Judging Commences

n0kto Lead Judge 5 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
Assigned finding tags:

Admin is trusted / Malicious keepers

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."

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.