Closed code423n4 closed 1 year ago
141345 marked the issue as duplicate of #129
HickupHH3 marked the issue as unsatisfactory: Out of scope
Hello @HickupHH3,
I respect your judgment over this issue, yes we know the transfer
function is inside the Minter
contract which is out of scope but here we are talking about the affected area which is in scope.
If the user claims their earnings and their transaction failed due to the transfer
function and they face the DOS issue then the point of failure will be considered in the BoindingManager's
withdrawFees
function, not in the Minter
contract's function.
I especially for this issue confirmed by the sponsor before writing the script.
There are tons of evidence available on Solodit
, if you type out of scope
in the keyword field and search. Here I am mentioning some which help with this issue.
These all were pointing to the issue in the contracts which were in scope but were affected by the code which was out of scope.
the protocol is not meant to be used with contracts as transcoders or delegators, only EOAs
my judgement was based off this expectation. It's QA at best, as a recommendation.
@HickupHH3 Yes but they have mentioned not meant to be
and there is no any check that validation the caller should not be a contract.
Also if you know, using higher than 2300 gas might be mandatory for some multisig wallets.
I must say you should check this Cyfrin Issue - Reported by Hans and 0kage.
Thanks
it's different: in this case it's merely an inconvenience, not total breakage of fee withdrawals, as you're able to specify the recipient. so if the delegator really wants to transfer to a multisig / SC wallet, then he'd have to transfer to an EOA first.
hence, it's at best a recommendation that the sponsor can choose to adopt, but M severity will be inflated
Lines of code
https://github.com/code-423n4/2023-08-livepeer/blob/main/contracts/bonding/BondingManager.sol#L285 https://github.com/code-423n4/2023-08-livepeer/blob/main/contracts/token/Minter.sol#L192
Vulnerability details
Vulnerability Details
The
BondingManager
'swithdrawFees
function transfers the fees to the caller of this function.BondingManager.sol - Line 285
This function uses the
trustedWithdrawETH
function ofMinter
contract which uses thetransfer
function to send the funds to_recipient
.Minter.sol - Line 192
Impact
transfer() uses a fixed amount of gas (
2300
), which was used to prevent reentrancy. However this limit the protocol that need more gas than that to process the transaction.Tools Used
Manual Review
Recommended Mitigation Steps
Use
call
instead oftransfer
.Assessed type
ETH-Transfer