漏洞总结:cp -p 在 chown 失败时未正确清除 setuid/setgid 位 漏洞概述 在使用 (保留属性)复制文件时,如果目标文件无法更改所有者(例如普通用户尝试复制 root 拥有的 setuid 文件),coreutils 仍会应用源文件的完整权限模式,包括 setuid/setgid 位,导致目标文件意外获得特权位。 影响范围 受影响组件:GNU coreutils 中的 命令 触发条件: - 使用 复制文件 - 源文件具有 setuid/setgid 位 - 目标文件无法更改所有者(chown 失败) 风险:普通用户可能通过复制获得特权执行权限,属于正确性/兼容性问题和策略漏洞 修复方案 在 中约第 1698 行,chown 失败时静默忽略 第 1711 行无条件应用源权限,未检查 chown 是否成功 需修改逻辑:当 chown 失败时,应清除 setuid/setgid 位后再应用权限 POC 代码 预期行为:目标文件不应保留 setuid/setgid 位 实际行为:目标文件可能保留 setuid/setgid 位(如 )