High · published December 17, 2025
⚡ Recursive functions gone wild! Before version 1.17.7, Expr's builtin functions could spiral into a never-ending loop, crashing your application with a stack overflow! 😱 Think of it like a hamster wheel that just keeps spinning faster and faster without a way to stop. If your data structures are too twisted or deep, it's like the hamster getting trapped in an endless cycle, leading straight to a crash instead of a happy exit! An attacker can exploit this vulnerability by injecting deeply nested or cyclic data, leading to an application crash that feels absolutely devastating! Imagine your server suddenly stopping in its tracks, leaving users stranded and affecting overall service availability – that's the risk of this denial-of-service scenario.
Think of it like a hamster wheel that just keeps spinning faster and faster without a way to stop. If your data structures are too twisted or deep, it's like the hamster getting trapped in an endless cycle, leading straight to a crash instead of a happy exit! The vulnerability in Expr arises because several builtin functions, like `flatten` and `mean`, do not enforce maximum recursion depth, allowing an attacker to cause a stack overflow. This results in a crash rather than returning a recoverable error, especially when handling untrusted data structures.
An attacker can exploit this vulnerability by injecting deeply nested or cyclic data, leading to an application crash that feels absolutely devastating! Imagine your server suddenly stopping in its tracks, leaving users stranded and affecting overall service availability – that's the risk of this denial-of-service scenario. Upgrade to Expr version 1.17.7 immediately to implement the new maximum recursion depth limit. If you can't upgrade right away, validate and sanitize your data structures, and consider wrapping evaluations with panic recovery to mitigate crashes. Don't take this lightly! You've got this! By following these steps, you can protect your application and keep it running smoothly! 🛡️
| Product | Versions | Fixed in |
|---|---|---|
| expr-lang/expr | < 1.17.7 | 1.17.7 |