50167 sc high retroactive reward drain via incomplete reward debt reset
Description
address[] storage historicalTokens = $.historicalRewardTokens;
for (…) {
updateRewardsForValidatorAndToken($, user, validatorId, historicalTokens[i]);
}address[] memory rewardTokens = $.rewardTokens;
for (…) {
updateRewardPerTokenForValidator($, token, validatorId);
$.userValidatorRewardPerTokenPaid[user][validatorId][token] =
$.validatorRewardPerTokenCumulative[validatorId][token];
$.userValidatorRewardPerTokenPaidTimestamp[user][validatorId][token] = block.timestamp;
}Impact
Recommendation
Proof of Concept
Previous50822 sc high deployer can cpgrade arctoken to malicious implementation and steal all user fundsNext51863 sc low lack of winning ticket removal in handlewinnerselection leads to unfair prize distribution and economic exploitation
Was this helpful?