Open howlbot-integration[bot] opened 6 months ago
The execution layer rewards come in the RewardsHandler contract which are then forwarded to depositQueue periodically by NativeEthRestakeAdmin
.
CloudEllie marked the issue as primary issue
The README specifies that the DepositQueue contract is supposed to receive the Execution Layer Rewards. It doesn't, but the codebase has an alternative way to allow the functionality to happen. The issue is then downgraded to Low (QA) because it is just a deviation from specifications with no lasting impact.
alcueca changed the severity to QA (Quality Assurance)
alcueca marked the issue as grade-a
alcueca marked the issue as grade-b
Lines of code
https://github.com/code-423n4/2024-04-renzo/blob/main/contracts/Deposits/DepositQueue.sol#L163-L183
Vulnerability details
The DepositQueue::receive() function is supposed to:
The function is expected to collect a fee from the rewards, fill the
WithdrawQueue
withdraw buffer if necessary and keep the remaining of the rewards in the contract:However, execution layer rewards don't trigger the
receive()
functions of smart contracts, the balance just gets updated and no code gets executed. Because of this theDepositQueue
contract will not take a fee from execution layer rewards.Impact
The
DepositQueue
contract will not collect a fee on execution layer rewards.Recommended Mitigation Steps
Use a dedicated contract to receive execution layer rewards. In that contract add an external function that allows to send the collected rewards to the
DepositQueue
, which will trigger thereceive()
function as expected and collect the appropriate fees.Assessed type
ETH-Transfer