IPBUF安全漏洞报告
English
CVE-2026-35378 CVSS 3.3 低危

CVE-2026-35378 uutils coreutils expr逻辑错误导致拒绝服务

披露日期: 2026-04-22

漏洞信息

漏洞编号
CVE-2026-35378
漏洞类型
逻辑错误
CVSS评分
3.3 低危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
uutils coreutils

相关标签

逻辑错误拒绝服务uutils coreutilsexprCVE-2026-35378

漏洞概述

uutils coreutils项目中的expr工具存在逻辑漏洞。该漏洞源于在解析阶段而非执行阶段评估带括号子表达式,导致无法正确实现逻辑OR和AND操作的短路机制。这使得本应被忽略的死分支中的算术错误(例如除以零)被引发为致命错误,从而导致兼容GNU expr的Shell脚本意外终止,破坏了正常的控制流程,影响系统脚本的可用性。

技术细节

该漏洞的根源在于uutils coreutils的expr实现中,对带括号子表达式的评估时机不正确。标准的GNU expr实现采用短路评估:在逻辑OR(|)运算中,如果第一个操作数为真,则不评估第二个;在逻辑AND(&)中,如果第一个为假,则不评估第二个。然而,受影响的uutils版本在解析AST(抽象语法树)时就已经评估了括号内的表达式,而不是在运行时根据逻辑流进行评估。攻击者可以通过构造包含除以零等错误的特定表达式,并将其置于本应不被执行的条件分支中。例如,`expr 1 | 1 / 0` 在短路逻辑下应返回1而不报错,但受影响版本会触发除以零错误并退出。这虽然不是远程代码执行,但在自动化脚本中可能导致拒绝服务。

攻击链分析

STEP 1
识别目标
确认目标系统安装并使用了受影响的uutils coreutils版本(< 0.8.0)。
STEP 2
构造恶意表达式
攻击者编写包含逻辑运算符(|或&)和算术错误(如除以零)的expr命令,并将错误置于死分支中。
STEP 3
触发漏洞
诱导用户或系统服务执行该命令。由于解析阶段的提前评估,程序触发算术异常。
STEP 4
拒绝服务
expr进程报错退出,导致依赖该命令的Shell脚本异常终止,破坏业务流程。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # PoC for CVE-2026-35378: uutils coreutils expr logic error # Demonstrates lack of short-circuit evaluation causing fatal error on dead code. # Test Case 1: Logical OR # Expected: Returns "1" (short-circuits, ignores division by zero) echo "Testing: expr 1 | 1 / 0" expr 1 | 1 / 0 # Test Case 2: Logical AND # Expected: Returns "0" (short-circuits) echo "Testing: expr 0 \& 1 / 0" expr 0 \& 1 / 0

影响范围

uutils coreutils < 0.8.0

防御指南

临时缓解措施
建议立即升级uutils coreutils至0.8.0或更高版本。若无法立即升级,可回退使用GNU coreutils的expr工具。开发者应在脚本中增加对expr命令执行结果的错误捕获逻辑,防止因未处理的算术错误导致脚本意外终止。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表