Hi Rocket Pool team,
I noticed that after a user deposits ETH into the RocketVault, the RPL approval granted in StakingVault remains active even after the deposit completes.
Specifically, in StakingVault.sol:93:
RPL.approve(address(rocketVault), type(uint256).max);
This approval persists after rocketVault.deposit{value: msg.value}() (line 114). While the RPL can currently only be used via withdrawERC20, a stale max approval:
- Increases attack surface if a new function is added that uses RPL
- Violates the principle of least privilege
My questions:
- Is this approval intentionally left active for future use?
- Would it be valuable to revoke it after deposit completes?
Thanks for clarifying!
Hi Rocket Pool team,
I noticed that after a user deposits ETH into the
RocketVault, the RPL approval granted inStakingVaultremains active even after the deposit completes.Specifically, in
StakingVault.sol:93:This approval persists after
rocketVault.deposit{value: msg.value}()(line 114). While the RPL can currently only be used viawithdrawERC20, a stale max approval:My questions:
Thanks for clarifying!