CVE-2023-42456
sudo-rs 会话文件相对路径遍历漏洞
- 已发布
- 2023年9月21日
- 已更新
- 2026年6月10日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月8日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H低 · 未来 30 天
- 百分位
- 45.7%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
# Sudo-rs 路径遍历漏洞 Sudo-rs 是 sudo 和 su 的一种内存安全实现,它允许用户不必在每次 sudo 尝试时都输入认证信息,而只需在每个终端或进程组中每隔一段时间进行一次认证。只有经过可配置的超时时间后,用户才需要重新进行认证。支持此功能的是为每个用户存储的一组会话文件(时间戳),存放在 `/var/run/sudo-rs/ts` 中。这些文件根据发起 sudo 尝试的用户名(原始用户)来命名。在 0.2.1 之前的版本中发现了一个问题,包含 `.` 和 `/` 字符的用户名可能导致文件系统上特定文件的损坏。由于用户名通常不受字符限制,因此可以构造一个看似相对路径的用户名。例如,我们可以在系统中添加一个用户名为 `../../../../bin/cp` 的用户。当以该名称的用户登录时,该用户可以运行 `sudo -K` 来清除其会话记录文件。会话代码随后通过将用户名与会话文件存储目录拼接来构造会话文件的路径,从而得到解析后的路径 `/bin/cp`。代码随后清除该文件,导致 `cp` 二进制文件实际上从系统中被移除。攻击者需要能够以构造的用户名登录。鉴于这样的用户名不太可能存在于现有系统中,他们还需要能够创建具有构造用户名的用户。该问题已在 sudo-rs 0.2.1 版本中得到修复。Sudo-rs 现在使用用户的 uid 而不是用户名来确定文件名。请注意,升级到此版本将导致现有会话文件被忽略,用户将被迫重新进行认证。同时,由于 uid 始终是整数值,这也完全消除了任何路径遍历的可能性。即使某个用户没有 sudo 访问权限,`sudo -K` 和 `sudo -k` 命令也可以运行。作为临时解决方案,请确保系统中不存在任何具有特制用户名的用户。只要满足此条件,并且不受信任的用户无法在系统上创建任意用户,就不应能够利用此问题。
来源
1用于 CVE-2023-42456 的概念验证漏洞利用程序,演示通过 chroot 注入劫持 sudo NSS 库实现权限提升。包含自动化版本检测、Payload 生成以及 chroot 逃逸功能,适用于授权安全测试。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。