免责声明: 本仓库仅用于教育目的。所有内容均基于 Qualys 于 2026 年 3 月 17 日发布的原始安全公告。该漏洞已被修复——请始终确保您的系统保持最新状态。请勿将本材料用于您不拥有或未经明确书面许可测试的系统。
CVE-2026-3888 是一个影响 Ubuntu Desktop >= 24.04 默认安装的本地权限提升(LPE)漏洞。该漏洞由 Qualys 于 2026 年 3 月发现并公开披露。
正如 Qualys 自己所指出,该漏洞之所以特别有趣,在于它并非源于某个单一的缺陷组件。相反,它产生于两个各自安全的程序之间的交互:
| 组件 | 作用 |
|---|---|
snap-confine | SUID-root 二进制文件,为 snap 应用程序构建挂载命名空间(沙箱) |
systemd-tmpfiles | 以 root 身份运行的守护进程,定期清理 /tmp 中的过期文件 |
这两个程序单独来看都没有问题。但组合在一起,它们创造了一个可利用的时间窗口。
原始公告: https://cdn2.qualys.com/advisory/2026/03/17/snap-confine-systemd-tmpfiles.txt
致谢: Qualys 安全研究团队
cve-2026-3888/
├── README.md ← 您在这里
├── analysis/
│ ├── 01-vulnerability.md ← 深入分析该漏洞
│ ├── 02-race-condition.md ← TOCTOU 竞态如何运作
│ ├── 03-backpressure-technique.md ← AF/UNIX 背压技巧
│ ├── 04-exploitation-steps.md ← 完整的分步演练
│ └── 05-mitigations.md ← 修复了什么以及如何修复
└── src/
├── firefox_2404.c ← 竞态辅助程序(带注释)
└── librootshell.c ← 动态加载器 shellcode(带注释)
| Ubuntu 版本 | 清理期限 | 实际等待时间 |
|---|---|---|
| 24.04 LTS | 30 天 | 30 天 |
| > 24.04 | 10 天 | 10 天 |
修复版本: snapd 2.74.2
root:root 0755 权限创建 /tmp/.snap/tmp 活跃,但让 /tmp/.snap 变为过期状态systemd-tmpfiles 删除过期的 /tmp/.snap——由于 /tmp 是全局可写的,攻击者重新创建 .snap 并拥有它snap-confine 的执行进行单步调试snap-confine 以 root 身份将攻击者拥有的库绑定挂载到命名空间中ld-linux-x86-64.so.2——在此命名空间中执行的任何 SUID 二进制文件都会以 root 身份运行我们的代码/var/snap/firefox/common/ 逃逸 AppArmor 限制,获得完全特权的 shell