CVE-2021-32804
因绝对路径清理不足导致的任意文件创建/覆盖
- 已发布
- 2021年8月3日
- 已更新
- 2024年8月3日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月5日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N中 · 未来 30 天
- 百分位
- 96.6%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
npm 包 "tar"(又名 node-tar)在 6.1.1、5.0.6、4.4.14 和 3.3.2 之前的版本中存在任意文件创建/覆盖漏洞,原因是绝对路径清理不充分。node-tar 旨在通过将绝对路径转换为相对路径来防止提取绝对文件路径,前提是 `preservePaths` 标志未设置为 `true`。这是通过剥离 tar 文件中包含的任何绝对文件路径的绝对路径根来实现的。例如,`/home/user/.bashrc` 会变成 `home/user/.bashrc`。当文件路径包含重复的路径根(如 `////home/user/.bashrc`)时,此逻辑不够充分。`node-tar` 只会从此类路径中剥离单个路径根。当给定具有重复路径根的绝对文件路径时,生成的路径(例如 `///home/user/.bashrc`)仍会解析为绝对路径,从而允许任意文件创建和覆盖。此问题已在 3.2.2、4.4.14、5.0.6 和 6.1.1 版本中得到解决。用户无需升级即可规避此漏洞,方法是创建自定义的 `onentry` 方法来清理 `entry.path`,或创建 `filter` 方法来移除具有绝对路径的条目。有关详细信息,请参阅引用的 GitHub 安全公告。请注意 CVE-2021-32803,它修复了 tar 后续版本中的类似错误。
来源
1基于 Docker 的 CVE-2021-32804 重现环境,这是一个影响 npm 的 node-tar 中的路径遍历漏洞,配有逐步利用脚本。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。