Kelp DAO | rsETH - AerialRaider's results

A collective DAO designed to unlock liquidity, DeFi and higher rewards for restaked assets through liquid restaking.

General Information

Platform: Code4rena

Start Date: 10/11/2023

Pot Size: $28,000 USDC

Total HM: 5

Participants: 185

Period: 5 days

Judge: 0xDjango

Id: 305

League: ETH

Kelp DAO

Findings Distribution

Researcher Performance

Rank: 162/185

Findings: 1

Award: $2.76

QA:
grade-b

🌟 Selected for report: 0

🚀 Solo Findings: 0

Awards

2.7592 USDC - $2.76

Labels

bug
downgraded by judge
grade-b
insufficient quality report
QA (Quality Assurance)
duplicate-69
Q-73

External Links

Lines of code

https://github.com/code-423n4/2023-11-kelp/blob/main/src/LRTDepositPool.sol#L183

Vulnerability details

Impact

These input validation enhancements in the transferAssetToNodeDelegator function are designed to safeguard against potential errors and misuse. By ensuring that inputs are within expected bounds and meaningful (non-zero), the contract becomes more robust, secure, and user-friendly.

Proof of Concept

In the transferAssetToNodeDelegator function of the LRTDepositPool contract, the suggested enhancements involve adding input validation checks. These are intended to ensure the function handles only valid and expected data, enhancing its security and reliability. Suggested Changes: Validation for ndcIndex: Added a check to ensure the ndcIndex (Node Delegator Contract Index) is within the bounds of the nodeDelegatorQueue array.

require(ndcIndex < nodeDelegatorQueue.length, "InvalidIndex: NDC index out of bounds");

Validation for amount: Added a check to ensure the amount being transferred is greater than 0.

require(amount > 0, "InvalidAmount: Transfer amount must be greater than 0");

here is the modified function:

function transferAssetToNodeDelegator(uint256 ndcIndex, address asset, uint256 amount) external { require(ndcIndex < nodeDelegatorQueue.length, "InvalidIndex: NDC index out of bounds"); require(amount > 0, "InvalidAmount: Transfer amount must be greater than 0");

// Existing code...

}

Tools Used

VS code

Rationale Behind the Changes: Index Bounds Check: Ensuring that the ndcIndex is within the bounds of the nodeDelegatorQueue array prevents out-of-bounds access, which is a common source of errors in programming. Accessing an array with an invalid index could lead to unexpected behavior or even cause the contract to revert unexpectedly. This check adds a layer of protection against both inadvertent mistakes and potential malicious attempts to disrupt the contract's functionality. Non-Zero Amount Check: The check for a non-zero transfer amount is crucial to prevent wasteful transactions that don't actually transfer any assets. Transferring zero assets could still consume gas and clutter the blockchain with meaningless transactions. It also helps in maintaining logical consistency within the contract, ensuring that every call to this function has a tangible effect.

Assessed type

Access Control

#0 - c4-pre-sort

2023-11-16T05:13:42Z

raymondfam marked the issue as insufficient quality report

#1 - c4-pre-sort

2023-11-16T05:13:52Z

raymondfam marked the issue as duplicate of #69

#2 - c4-judge

2023-11-29T20:58:12Z

fatherGoose1 changed the severity to QA (Quality Assurance)

#3 - c4-judge

2023-11-29T21:02:13Z

fatherGoose1 marked the issue as grade-b

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