CVE-2026-35378uutils coreutils项目中的expr工具存在逻辑漏洞。该漏洞源于在解析阶段而非执行阶段评估带括号子表达式,导致无法正确实现逻辑OR和AND操作的短路机制。这使得本应被忽略的死分支中的算术错误(例如除以零)被引发为致命错误,从而导致兼容GNU expr的Shell脚本意外终止,破坏了正常的控制流程,影响系统脚本的可用性。
该漏洞的根源在于uutils coreutils的expr实现中,对带括号子表达式的评估时机不正确。标准的GNU expr实现采用短路评估:在逻辑OR(|)运算中,如果第一个操作数为真,则不评估第二个;在逻辑AND(&)中,如果第一个为假,则不评估第二个。然而,受影响的uutils版本在解析AST(抽象语法树)时就已经评估了括号内的表达式,而不是在运行时根据逻辑流进行评估。攻击者可以通过构造包含除以零等错误的特定表达式,并将其置于本应不被执行的条件分支中。例如,`expr 1 | 1 / 0` 在短路逻辑下应返回1而不报错,但受影响版本会触发除以零错误并退出。这虽然不是远程代码执行,但在自动化脚本中可能导致拒绝服务。