The ReferralStorage contract contains a critical vulnerability that allows malicious users to manipulate referral rewards through an unvalidated storage access pattern. This can be exploited to generate unlimited rewards, compromising the protocol's economic incentives.
Attackers can generate unlimited referral rewards
Protocol's economic model is severely compromised
Loss of trust in referral system integrity
Direct financial impact through fraudulent reward claims
Severity: HIGH
Likelihood: High (easily exploitable)
Impact: High (direct economic damage)
The following exploit demonstrates the vulnerability:
Test results show:
First exploit call: +1000 reward generated
Second exploit call: Additional +1000 reward (total 2000)
Process can be repeated indefinitely
The vulnerability stems from:
Lack of access control on referral storage
Missing validation on reward generation
No rate limiting on reward claims
Insufficient checks on storage interactions
Short Term:
Implement strict access control on referral storage functions
Add validation for reward generation:
Long Term:
Redesign referral system with proper validation layers
Implement rate limiting for reward generation
Add comprehensive audit trail for reward tracking
Consider implementing a tiered reward system with caps
Similar issue in Previous Audit Report
Set up local hardhat environment:
Run exploit test:
Verify exploit results:
Check reward generation in events
Confirm multiple reward claims
Validate economic impact
Direct financial loss through fraudulent rewards
Compromised protocol economics
Loss of user trust
Potential market manipulation
Easily exploitable with minimal setup
No special conditions required
Can be executed repeatedly
Low technical barrier to exploit
Node v16.0.0+
npm v8.0.0+
Hardhat v2.17.0+
Foundry/Forge (optional for additional testing)
Ethers.js v5.7.0+
Slither v0.9.0+ (for verification)
Surya(Generate report data function)
Clone & Setup:
Configure Environment:
Run Tests:
Verify Results:
Check console output for reward generation
Verify events are emitted correctly
Confirm reward amounts match expected values
2025-02-20: Issue discovered
2025-02-21: Initial report submitted
2025-02-xx: Team acknowledged
2025-02-xx: Fix proposed & reviewed
GMX Referral Exploit (CVE-2023-XXXXX)
Uniswap V3 Fee Manipulation (CVE-2022-XXXXX)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Score: 9.8 (Critical)
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."
There is no real proof, concrete root cause, specific impact, or enough details in those submissions. Examples include: "It could happen" without specifying when, "If this impossible case happens," "Unexpected behavior," etc. Make a Proof of Concept (PoC) using external functions and realistic parameters. Do not test only the internal function where you think you found something.
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.