You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When the score oracle in BinaryEligibilityOracleEarningPowerCalculator.sol becomes stale or paused, _amountStaked is returned as the earning power instead of the old earning power. As a result, a keeper can bump all ineligible deposits to eligible deposits when the oracle becomes stale/paused and bump them back to ineligible once the oracle becomes fresh/unpaused.
Vulnerability Detail
Let’s say there are 1,000 deposits delegated to ineligible delegatees, so their earning powers are currently zero.
Due to some reason, the oracle becomes stale or paused.
In this situation, the getNewEarningPower function of the binary eligibility calculator returns _amountStaked as the earning power instead of zero because of the following line:
if (_isOracleStale() || isOraclePaused) return (_amountStaked, true);
As a result, keepers can bump all these ineligible deposits, as their earning powers change from zero to non-zero, and collect bump tips.
Once the oracle becomes normal again, those deposits can be bumped back, changing their earning powers from non-zero to zero, allowing keepers to extract bump tips again.
Return _oldEarningPower when oracle becomes stale or paused.
The text was updated successfully, but these errors were encountered:
jokrsec
changed the title
Deposits Can Be Maliciously Bumped When Oracle Becomes Stale/Paused
Deposits can be maliciously bumped when oracle becomes stale/paused
Dec 7, 2024
We believe the severity should be lowered to low/info. In this scenario depositors that want to avoid the extra bump fee will have the updateEligibilityDelay to switch their delegatee before being bumped down again. As mentioned if the oracle becomes malicious oldEarningPower could be destructive to the system. For example, if the oracle gives earning power to a set of malicious delegates than depositors would be incentivized to delegate to those malicious delegates.
Summary
When the score oracle in
BinaryEligibilityOracleEarningPowerCalculator.sol
becomes stale or paused,_amountStaked
is returned as the earning power instead of the old earning power. As a result, a keeper can bump all ineligible deposits to eligible deposits when the oracle becomes stale/paused and bump them back to ineligible once the oracle becomes fresh/unpaused.Vulnerability Detail
getNewEarningPower
function of the binary eligibility calculator returns_amountStaked
as the earning power instead of zero because of the following line:Impact
Deposits lose their rewards unfairly.
Code Snippet
Tool used
Manual Review
Recommendation
Return
_oldEarningPower
when oracle becomes stale or paused.The text was updated successfully, but these errors were encountered: