Core Contracts

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

Controller cannot operate a gauge normally

Summary

Controller cannot operate a gauge normally, due to missing several functions.

Vulnerability Details

The gauge controller lacks functions to invoke updatePeriod, setEmission and setInitialWeight, however these function have onlyController modifier meaning that only this contract would be able to call them.

https://github.com/Cyfrin/2025-02-raac/blob/main/contracts/core/governance/gauges/BaseGauge.sol#L452

function updatePeriod() external override onlyController {
// ...
}
function setEmission(uint256 emission) external onlyController {
// ...
}
function setInitialWeight(uint256 weight) external onlyController {
// ...
}

Impact

Controller cannot operate properly his gauges.
Emissions won't be configurable.
votingPeriod will never be made, except the one in the constructor, but this one is only 1 week and when it passes it's over.
Periods are the way that rewards are distributed inside gouges and without them they won't distribute rewards properly.

Tools Used

Manual review

Recommendations

Add functions inside the controller to operate properly those gauges.

Updates

Lead Judging Commences

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Validated
Assigned finding tags:

`setWeeklyEmission`, `setBoostParameters`, `setEmission` and `setInitialWeight` cannot be called due to controller access control - not implemented in controller

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Validated
Assigned finding tags:

`setWeeklyEmission`, `setBoostParameters`, `setEmission` and `setInitialWeight` cannot be called due to controller access control - not implemented in controller

Appeal created

inallhonesty Lead Judge 6 months ago
Submission Judgement Published
Validated
Assigned finding tags:

`setWeeklyEmission`, `setBoostParameters`, `setEmission` and `setInitialWeight` cannot be called due to controller access control - not implemented in controller

GaugeController::updatePeriod doesn't call the gauge's updatePeriod function, preventing periodState.distributed from resetting and eventually causing distributeRewards to permanently fail

Support

FAQs

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

Give us feedback!