20,000 USDC
View results
Submission Details
Severity: gas
Valid

Loop Exhaustion Attack

Summary

The potential security vulnerability here lies in the fact that the number of iterations in this loop is equal to the length of the loanIds array, which is supplied as an argument when the function is called. If this loanIds array is very large, the function will require a large amount of gas to execute.

Vulnerability Details

the function seizeLoan contains a loop that iterates over an array of loanIds. The number of iterations—and consequently the computational work performed by the function—is directly proportional to the size of this array.

If a function requires more gas than the block limit, it cannot be executed within a single block, causing the transaction to fail. If an attacker can control or influence the size of the loanIds array, they could cause this function to exceed the block gas limit, rendering it inoperable.

Impact

If this vulnerability is exploited, it could prevent the normal operation of the seizeLoan function, effectively causing a disruption in the operations of the entire contract. The function could consistently fail due to exceeding the block's gas limit, leading to a Denial of Service condition. In this state, no one can seize loans anymore, which could lead to serious implications for the contract users and possibly loss of funds or opportunities.

Tools Used

Manual

Recommendations

To mitigate this kind of vulnerability, you might want to consider imposing a maximum limit on the size of the loanIds array that can be processed in one transaction.

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.