CVE-2025-68156
Stack Overflow DoS in Expr Builtin Functions via Recursive Calls
Publication date: 2025-12-16
Last updated on: 2026-03-05
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| expr-lang | expr | to 1.17.7 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-770 | The product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated. |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
CVE-2025-68156 is a denial-of-service (DoS) vulnerability in the Go package Expr, affecting versions prior to 1.17.7. Several builtin functions like flatten, min, max, mean, and median perform recursive traversal over user-supplied data structures without limiting recursion depth. If these functions encounter deeply nested or cyclic data structures, they can recurse indefinitely, causing a stack overflow panic that crashes the host application. This vulnerability arises when Expr evaluates expressions against untrusted or dynamically constructed data containing cyclic references or very deep nesting, leading to process crashes instead of recoverable errors. [1, 2]
How can this vulnerability impact me? :
This vulnerability can cause your application to crash unexpectedly due to a stack overflow panic when Expr evaluates expressions involving deeply nested or cyclic data structures. This results in a denial-of-service (DoS) condition, making the application unavailable. The crash occurs at the process level, which means the entire host application can terminate, impacting availability and reliability. [1, 2]
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability can be detected by monitoring for application crashes or stack overflow panics when Expr evaluates expressions involving the affected builtin functions (flatten, min, max, mean, median) on user-supplied data. Detection involves checking if the application logs show stack overflow panics or crashes related to recursive evaluation. Since the issue arises from deeply nested or cyclic data structures causing infinite recursion, you can test by supplying crafted expressions with cyclic or deeply nested data to the Expr evaluation environment and observing if the application crashes. There are no specific commands provided in the resources, but wrapping expression evaluation with panic recovery and logging errors can help detect attempts to exploit this vulnerability. [1, 2]
What immediate steps should I take to mitigate this vulnerability?
Immediate mitigation steps include: 1) Upgrade Expr to version 1.17.7 or later, which includes a maximum recursion depth limit and prevents stack overflow panics. 2) If upgrading is not immediately possible, ensure that evaluation environments do not contain cyclic references by validating or sanitizing externally supplied data structures before evaluation. 3) Wrap expression evaluation calls with panic recovery to prevent full process crashes as a last-resort defensive measure. These mitigations reduce risk but do not fully eliminate it without the patch. Additionally, users can customize the maximum recursion depth via the builtin.MaxDepth parameter in the patched version to balance between robustness and legitimate deep data structures. [1, 2]
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
The vulnerability primarily causes a denial-of-service (DoS) by crashing the host application due to stack overflow from unbounded recursion. It does not impact confidentiality or integrity of data, only availability. While availability is a component of many compliance standards like GDPR and HIPAA, the provided information does not explicitly state any direct compliance impact or regulatory violations caused by this vulnerability. Therefore, the effect on compliance depends on how the affected application is used and whether availability disruptions violate specific regulatory requirements. No direct compliance impact is detailed in the provided resources. [1]