CVE-2026-35366CVE-2026-35366 是 uutils coreutils 软件包中 printenv 工具的一个安全漏洞。该漏洞源于 printenv 无法正确显示包含无效 UTF-8 字节序列的环境变量。尽管 POSIX 标准允许环境字符串中包含任意字节,但 uutils 的实现选择静默跳过这些条目,而不是打印原始字节。这种行为允许恶意环境变量(例如恶意的 LD_PRELOAD 值)逃避管理员或安全审计工具的检查。攻击者可利用此特性隐藏恶意配置,可能导致库注入或其他基于环境的攻击未被察觉,从而影响系统的机密性和完整性。
该漏洞的核心在于 uutils coreutils 的 printenv 命令对环境变量字符串的处理逻辑存在缺陷。在 Unix/Linux 系统中,环境变量本质上是以 null 结尾的字节序列,POSIX 标准规定它们可以包含任意二进制数据,并不强制要求必须是有效的 UTF-8 编码。然而,uutils(通常用 Rust 编写)在实现 printenv 时,倾向于将环境变量视为字符串处理。当遇到无法解码为 UTF-8 的字节序列时,程序并未按标准要求输出原始字节,而是触发了错误处理机制,直接跳过这些变量的显示。这种行为造成了安全盲点。攻击者可以设置包含非 UTF-8 字符(如二进制数据)的环境变量,其中包含恶意的载荷,例如指向恶意共享库的路径(LD_PRELOAD)或被修改的 PATH 变量。当管理员运行 `printenv` 以审核环境状态进行调试或安全取证时,这些恶意变量将保持不可见。因此,依赖 `printenv` 输出的标准安全基线检查将无法检测到库注入攻击或通过环境变量建立的持久化机制,从而有效地绕过了安全监控。