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

CVE-2026-35371 uutils coreutils id工具输出错误漏洞

披露日期: 2026-04-22

漏洞信息

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

相关标签

逻辑错误uutils coreutilsid命令信息完整性本地漏洞

漏洞概述

uutils coreutils套件中的id工具存在逻辑缺陷。当进程的真实UID与有效UID不一致时,该工具在“漂亮打印”输出中错误地使用有效GID而非有效UID来执行用户名查找。这种错误的实现会产生误导性的诊断信息,可能导致管理员或自动化脚本在文件权限管理上做出错误判断。

技术细节

该漏洞的根本原因在于uutils coreutils项目中id命令的源代码实现存在编码错误。当程序运行在特权环境下(例如设置了setuid位),且真实UID与有效UID不一致时,id命令需要展示两个身份。但在查询有效UID对应的用户名时,代码逻辑错误地使用了有效GID作为查询参数。这导致终端显示的用户名并非实际的有效用户,而是与有效GID相关的错误信息。利用此漏洞,攻击者可以掩盖进程的真实有效身份,使得依赖id命令输出的自动化脚本或系统管理员无法准确识别当前进程的权限上下文,从而可能导致对文件权限或访问控制列表的错误配置,间接破坏系统安全策略。

攻击链分析

STEP 1
发现阶段
攻击者确认目标系统安装了存在漏洞的uutils coreutils版本。
STEP 2
诱导阶段
攻击者诱导系统管理员或运维脚本运行id命令以检查特定进程(特别是具有setuid属性的进程)的权限状态。
STEP 3
利用阶段
id命令触发漏洞逻辑,在打印有效用户信息时,错误地输出了基于有效GID的用户名,而非有效的UID对应的用户名。
STEP 4
影响阶段
基于错误的输出信息,管理员可能误判进程权限,导致错误的访问控制配置,破坏系统完整性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ PoC for CVE-2026-35371: Logic Error in uutils coreutils id utility This script demonstrates the logic flaw where the tool uses the Effective GID instead of the Effective UID for the user name lookup. """ import os import pwd import grp def get_user_name(uid): """Correctly get username by UID.""" try: return pwd.getpwuid(uid).pw_name except KeyError: return str(uid) def get_group_name(gid): """Get group name by GID.""" try: return grp.getgrgid(gid).gr_name except KeyError: return str(gid) def simulate_vulnerable_id(real_uid, effective_uid, effective_gid): print(f"--- Simulating Vulnerable Behavior (CVE-2026-35371) ---") print(f"Real UID: {real_uid} ({get_user_name(real_uid)})") # Vulnerable Logic: Uses effective GID to lookup user name for the effective UID vulnerable_lookup_name = get_group_name(effective_gid) # Mistake: using GID to get user context print(f"Effective UID: {effective_uid} ({vulnerable_lookup_name}) [INCORRECT - Used GID lookup]") print(f"Effective GID: {effective_gid} ({get_group_name(effective_gid)})") def simulate_correct_id(real_uid, effective_uid, effective_gid): print(f"\n--- Simulating Correct Behavior ---") print(f"Real UID: {real_uid} ({get_user_name(real_uid)})") print(f"Effective UID: {effective_uid} ({get_user_name(effective_uid)})") print(f"Effective GID: {effective_gid} ({get_group_name(effective_gid)})") if __name__ == "__main__": # Scenario: User (uid 1000) runs a setuid root program (uid 0), but group stays as user (gid 1000) # Note: This requires root to actually change EUID, but we simulate the lookup logic here. r_uid = 1000 e_uid = 0 e_gid = 1000 print("Scenario: Real UID=1000, Effective UID=0 (root), Effective GID=1000 (user)") simulate_vulnerable_id(r_uid, e_uid, e_gid) simulate_correct_id(r_uid, e_uid, e_gid)

影响范围

uutils coreutils (Issue #10006修复前版本)

防御指南

临时缓解措施
建议用户立即关注uutils coreutils官方发布的安全更新,并尽快升级至修复该逻辑错误的版本。在升级完成前,系统管理员应谨慎对待id命令的输出,特别是涉及setuid程序的场景,必要时可使用系统原生coreutils或其他工具辅助验证用户身份。

参考链接

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