漏洞概述 在 项目中, 扫描功能在处理 设备时,会静默吞掉 错误,导致返回假阴性结果。具体来说,当非 root 用户(或不在 组中的进程)尝试打开这些设备时,会收到 错误,但当前代码忽略了这一错误,导致 报告“未找到虚拟设备”,即使实际上存在虚拟设备。 影响范围 受影响文件: - :静默吞掉 失败。 - :调用者处理返回值。 安全影响: - 在 PAM 认证上下文中,模块通常以 root 运行,因此检查功能在生产环境中正常工作。 - 然而,以普通用户身份运行 的管理员可能会观察到没有虚拟设备检测,即使存在虚拟(远程桌面)设备,导致错误地认为 功能正在工作。 - 这会在设置和测试期间产生虚假的安全感,可能掩盖会留下 静默不活动的配置错误。 修复方案 修复代码: - 修改 以跟踪权限被拒绝的错误,并返回一个独特的哨兵值。 - 更新 以处理新的哨兵值。 验证 1. 在有虚拟输入设备(例如,VM 中的 Wacom 平板或 创建的设备)的情况下,以非 root 用户身份运行 ,确认权限警告已记录。 2. 以 root 身份运行 ,确认行为未改变——虚拟设备仍被检测到,无警告发出。 3. 制作测试用例。 4. 更新 以覆盖 返回路径(模拟 返回 )。 委员会归因 根据 Matthew Garrett 原则:永远不要信任硬件/软件边界。由于权限错误未能检测到设备,并不等同于设备不存在。调用者应被告知这种区分。 参考:安全审计第 4 轮。正在进行的审计的一部分,跟踪在 #355。调查分支 。