This vulnerability occurs when a program runs a loop too many times because it lacks proper limits on its iterations.
When an attacker can control or influence the loop's conditions, they can force it to run far more times than intended. This quickly drains system resources like CPU cycles and memory, potentially causing slowdowns, service denial, or crashes. Even a loop that isn't technically infinite can be dangerous if each pass consumes significant resources. For developers, the core issue is trusting unvalidated input to control loop counters or termination logic. To prevent this, always enforce explicit, reasonable upper bounds on all iterative processes, especially those influenced by external data like user input, file contents, or network responses.
Impact: DoS: Resource Consumption (CPU)DoS: Resource Consumption (Memory)DoS: AmplificationDoS: Crash, Exit, or Restart
Excessive looping will cause unexpected consumption of resources, such as CPU cycles or memory. The product's operation may slow down, or cause a long time to respond. If limited resources such as memory are consumed for each iteration, the loop may eventually cause a crash or program exit due to exhaustion of resources, such as an out-of-memory error.
void do_something_recursive (int flg) {
cvoid do_something_recursive (int flg) {
cjava
// get inventory count for book* int inventoryCount = inventory.getIventoryCount(bookISBN);
java
javajava
// validate rateSold variable* if (rateSold < 1) { ``` return isReorder; } ... }