Renzo - MSaptarshi's results

A protocol that abstracts all staking complexity from the end-user and enables easy collaboration with EigenLayer node operators and a Validated Services (AVSs).

General Information

Platform: Code4rena

Start Date: 30/04/2024

Pot Size: $112,500 USDC

Total HM: 22

Participants: 122

Period: 8 days

Judge: alcueca

Total Solo HM: 1

Id: 372

League: ETH

Renzo

Findings Distribution

Researcher Performance

Rank: 71/122

Findings: 2

Award: $1.89

🌟 Selected for report: 0

🚀 Solo Findings: 0

Awards

0.4071 USDC - $0.41

Labels

bug
3 (High Risk)
satisfactory
sufficient quality report
upgraded by judge
:robot:_71_group
duplicate-326

External Links

Lines of code

https://github.com/code-423n4/2024-04-renzo/blob/519e518f2d8dec9acf6482b84a181e403070d22d/contracts/Delegation/OperatorDelegator.sol#L503

Vulnerability details

Impact

If the protocol receives any ETH, from Eigen Layer maybe as reward it is sent for fullWithdrawl via the DepositQueue contract after filling the withdraw buffer.

The withdrawQueue contract get filled by 3 ways -> New Deposits Daily Rewards Coming in the Protocol. Manual withdrawal from EigenLayer. Permissioned call from OperatorDelegator.

So for rewards coming in to the protcol users can claim those by calling the withdraw -> claim

An attacker can take advantage of this to steal a part of the rewards:

Mint a sensible amount of LRTTokens by depositing an accepted asset Call WithdawlQueue.withdraw, after which the value of the LRTTokens just minted will immediately increase. then claim those by claim

Proof of Concept

https://github.com/code-423n4/2024-04-renzo/blob/519e518f2d8dec9acf6482b84a181e403070d22d/contracts/Withdraw/WithdrawQueue.sol#L206

https://github.com/code-423n4/2024-04-renzo/blob/519e518f2d8dec9acf6482b84a181e403070d22d/contracts/Withdraw/WithdrawQueue.sol#L279

Here it only checks the cooldown period with the time when withdraw req was initiated for any type of withdrawl, which makes the possibility for sandwiching the rewards.

https://github.com/code-423n4/2024-04-renzo/blob/519e518f2d8dec9acf6482b84a181e403070d22d/contracts/Withdraw/WithdrawQueue.sol#L287

However the amount required to deposit for minting ezETH must be very high to disrupt the price ,since there is a presence of deposit buffer which might make it more costly

Tools Used

Manual Review

Making the distribution of rewards in a delayed manner

Assessed type

Error

#0 - c4-judge

2024-05-17T12:56:18Z

alcueca changed the severity to 3 (High Risk)

#1 - c4-judge

2024-05-17T12:56:37Z

alcueca marked the issue as duplicate of #326

#2 - c4-judge

2024-05-17T12:56:42Z

alcueca marked the issue as satisfactory

Awards

1.479 USDC - $1.48

Labels

bug
2 (Med Risk)
satisfactory
sufficient quality report
:robot:_19_group
duplicate-484

External Links

Lines of code

https://github.com/code-423n4/2024-04-renzo/blob/519e518f2d8dec9acf6482b84a181e403070d22d/contracts/RestakeManager.sol#L491

Vulnerability details

Impact

The deposit function of the DepositQueue contract, enables users to deposit any erc20 assets that is supported into the protocol, getting ezETH tokens in return. The function doesn't have any type of slippage control; this is relevant in the context of the deposit function, since the amount of tokens received by the user is determined by an internal calculation, meaning that the amount received in return may vary indefinitely while the request is waiting to be executed.

Proof of Concept

The protocol uses chainlink price feeds to fetch the price for collateral amount so, users will have no defense against price manipulations attacks, if they where to be found after the protocol's deployment. https://github.com/code-423n4/2024-04-renzo/blob/519e518f2d8dec9acf6482b84a181e403070d22d/contracts/RestakeManager.sol#L507 As can be observed by looking at its parameters and implementation, the deposit function of the DepositQueue contract, doesn't have any type of slippage protection: https://github.com/code-423n4/2024-04-renzo/blob/519e518f2d8dec9acf6482b84a181e403070d22d/contracts/RestakeManager.sol#L491

Tools Used

Manual Review

USe a minAmountOut for a user expected deposit amountout

Assessed type

Other

#0 - c4-judge

2024-05-17T13:28:46Z

alcueca marked the issue as satisfactory

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter