There is a possibility that the VaultDepositController::deposit
function could be called by an external contract or any other address without using delegatecall
.
According to the documentation, function VaultDepositController::deposit
should only be called by VaultControllerStrategy
using delegatecall
. however, no check has been made to ensure that this function is only called only using delegatecall
and by no other address than address(VaultControllerStrategy)
. This means that any address can call this function and by direct calls.
In the VaultControllerStrategy
abstract contract, we can see that access control is applied to the VaultControllerStrategy::deposit
function and that the VaultDepositController::deposit
function is called via delegatecall :
So the VaultDepositController::deposit
function will be executed in the context of the staking pool
as desired. But no restrictions have been placed on this function to ensure that it is only called by delegatecall and only by the staking pool
.
Unexpected behavior. And If any external user or contract is able to call deposit
directly and transfer tokens, it could lead to undesirable outcomes, such as unauthorized deposits or incorrect token transfers.
Manual review.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.