Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: medium
Invalid

Boost Manipulation in `_applyBoost()` Allows Users to Artificially Increase Rewards

The _applyBoost() function calculates a user's reward multiplier based on their veRAACToken balance at the time of the function call, without maintaining a historical record of their balance over time. This creates an exploit where a user can temporarily increase their veRAACToken balance (e.g., by borrowing, receiving a transfer, or staking at the last moment), call getReward() to claim an artificially boosted reward, and then return or transfer the veRAACToken afterward. Because _applyBoost() does not verify if the user maintained their veRAACToken balance over a meaningful period, this allows an attacker to drain a disproportionate share of rewards at the expense of honest participants.
Example exploit scenario:

// Step 1: User artificially inflates veRAACToken balance
IERC20(veRAACToken).transferFrom(friend, attacker, largeAmount);
// Step 2: Call getReward() to exploit high boost
gauge.getReward(); // Rewards calculated with inflated balance
// Step 3: Return veRAACToken to avoid detection
IERC20(veRAACToken).transfer(friend, largeAmount);

This results in the attacker stealing more rewards than fairly allocated, reducing incentives for other stakers.

Impact:

Unfair reward distribution, leading to loss of funds for honest users.

Mitigation:

Snapshot veRAACToken balances at staking or reward update events to ensure boost calculations use a historical balance rather than an easily manipulatable live balance.

Updates

Lead Judging Commences

inallhonesty Lead Judge 6 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

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