CVE-2025-68156 (CNNVD-202512-2778)

HIGH
中文标题:
Expr 安全漏洞
英文标题:
Expr has Denial of Service via Unbounded Recursion in Builtin Functions
CVSS分数: 7.5
发布时间: 2025-12-16 18:24:11
漏洞类型: 其他
状态: PUBLISHED
数据质量分数: 0.40
数据版本: v3
漏洞描述
中文描述:

Expr是Expr开源的一个 Go 的表达式语言和表达式求值。 Expr 1.17.7之前版本存在安全漏洞,该漏洞源于多个内置函数未强制执行最大递归深度,可能导致堆栈溢出和进程崩溃。

英文描述:

Expr is an expression language and expression evaluation for Go. Prior to version 1.17.7, several builtin functions in Expr, including `flatten`, `min`, `max`, `mean`, and `median`, perform recursive traversal over user-provided data structures without enforcing a maximum recursion depth. If the evaluation environment contains deeply nested or cyclic data structures, these functions may recurse indefinitely until exceed the Go runtime stack limit. This results in a stack overflow panic, causing the host application to crash. While exploitability depends on whether an attacker can influence or inject cyclic or pathologically deep data into the evaluation environment, this behavior represents a denial-of-service (DoS) risk and affects overall library robustness. Instead of returning a recoverable evaluation error, the process may terminate unexpectedly. In affected versions, evaluation of expressions that invoke certain builtin functions on untrusted or insufficiently validated data structures can lead to a process-level crash due to stack exhaustion. This issue is most relevant in scenarios where Expr is used to evaluate expressions against externally supplied or dynamically constructed environments; cyclic references (directly or indirectly) can be introduced into arrays, maps, or structs; and there are no application-level safeguards preventing deeply nested input data. In typical use cases with controlled, acyclic data, the issue may not manifest. However, when present, the resulting panic can be used to reliably crash the application, constituting a denial of service. The issue has been fixed in the v1.17.7 versions of Expr. The patch introduces a maximum recursion depth limit for affected builtin functions. When this limit is exceeded, evaluation aborts gracefully and returns a descriptive error instead of panicking. Additionally, the maximum depth can be customized by users via `builtin.MaxDepth`, allowing applications with legitimate deep structures to raise the limit in a controlled manner. Users are strongly encouraged to upgrade to the patched release, which includes both the recursion guard and comprehensive test coverage to prevent regressions. For users who cannot immediately upgrade, some mitigations are recommended. Ensure that evaluation environments cannot contain cyclic references, validate or sanitize externally supplied data structures before passing them to Expr, and/or wrap expression evaluation with panic recovery to prevent a full process crash (as a last-resort defensive measure). These workarounds reduce risk but do not fully eliminate the issue without the patch.

CWE类型:
CWE-770
标签:
(暂无数据)
受影响产品
厂商 产品 版本 版本范围 平台 CPE
expr-lang expr < 1.17.7 - - cpe:2.3:a:expr-lang:expr:<_1.17.7:*:*:*:*:*:*:*
解决方案
中文解决方案:
(暂无数据)
英文解决方案:
(暂无数据)
临时解决方案:
(暂无数据)
参考链接
https://github.com/expr-lang/expr/security/advisories/GHSA-cfpf-hrx2-8rv6 x_refsource_CONFIRM
cve.org
访问
https://github.com/expr-lang/expr/pull/870 x_refsource_MISC
cve.org
访问
CVSS评分详情
3.1 (cna)
HIGH
7.5
CVSS向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
机密性
NONE
完整性
NONE
可用性
HIGH
时间信息
发布时间:
2025-12-16 18:24:11
修改时间:
2025-12-16 19:59:24
创建时间:
2026-01-12 02:12:28
更新时间:
2026-01-26 02:11:37
利用信息
暂无可利用代码信息
数据源详情
数据源 记录ID 版本 提取时间
CVE cve_CVE-2025-68156 2025-12-19 03:24:33 2026-01-12 02:12:28
NVD nvd_CVE-2025-68156 2025-12-19 03:25:39 2026-01-12 02:28:10
CNNVD cnnvd_CNNVD-202512-2778 2026-01-11 06:15:08 2026-01-12 02:38:01
版本与语言
当前版本: v3
主要语言: EN
支持语言:
EN ZH
安全公告
暂无安全公告信息
变更历史
v3 CNNVD
2026-01-12 02:38:01
vulnerability_type: 未提取 → 其他; cnnvd_id: 未提取 → CNNVD-202512-2778; data_sources: ['cve', 'nvd'] → ['cnnvd', 'cve', 'nvd']
查看详细变更
  • vulnerability_type: 未提取 -> 其他
  • cnnvd_id: 未提取 -> CNNVD-202512-2778
  • data_sources: ['cve', 'nvd'] -> ['cnnvd', 'cve', 'nvd']
v2 NVD
2026-01-12 02:28:10
data_sources: ['cve'] → ['cve', 'nvd']
查看详细变更
  • data_sources: ['cve'] -> ['cve', 'nvd']