CVE-2026-23745:毁灭之沥青坑:在 node-tar 中逃离根目录

发布: (2026年1月17日 GMT+8 06:08)
3 min read
原文: Dev.to

Source: Dev.to

末日陷阱:逃离 node-tar 的根目录

漏洞编号: CVE-2026-23745
CVSS 分数: 8.2
发布时间: 2026-01-16

在广泛使用的 node-tar 库中存在一个关键的路径遍历漏洞,恶意归档可以绕过提取根目录的限制。通过对硬链接和符号链接目标使用绝对路径进行操控,攻击者能够覆盖任意系统文件或投毒符号链接,实质上将普通的解压操作变成了武器化的文件系统攻击。

TL;DR

node-tar ≤ 7.5.2 未对硬链接和符号链接的目标进行清理。如果归档中包含指向绝对路径(例如 /etc/passwd)的链接,node-tar 会直接创建它,忽略预期的提取目录。这导致 任意文件覆盖 并可能通过配置文件篡改实现 RCE。

⚠️ 利用状态: 概念验证

技术细节

  • CWE 编号: CWE‑22(路径遍历)
  • CVSS 4.0: 8.2(高危)
  • 攻击向量: 本地(归档上传)
  • 受影响组件: unpack.ts(链接/符号链接处理)
  • 影响: 任意文件覆盖 / 符号链接投毒
  • 利用状态: 已提供概念验证

受影响系统

  • 使用 node-tar 的 Node.js 应用程序
  • 处理不可信归档的 CI/CD 流水线
  • 具备文件上传/解压功能的服务器端应用

易受攻击的版本: node-tar ≤ 7.5.2
已修复于: 7.5.3

代码分析

Commit: 340eb28Fix: strip absolute paths from link targets

@@ -150,7 +150,8 @@
-      if (!this[CHECKPATH](entry))
+      if (
+        !this[STRIPABSOLUTEPATH](entry, 'path') ||
+        !this[STRIPABSOLUTEPATH](entry, 'linkpath')
+      )

利用细节

缓解策略

  • 输入验证: 在执行文件系统操作前,确保对所有归档条目进行路径遍历检查。
  • 最小特权原则: 在受限的沙箱环境中运行解压进程,限制文件系统访问。
  • 依赖管理: 定期审计并更新深层依赖。

修复步骤

  1. 使用 npm audityarn audit 识别易受攻击的实例。
  2. node-tar 升级至 7.5.3 或更高版本。
  3. 确认未在非必要情况下启用 preservePaths
  4. 重新生成 lock 文件,确保子依赖使用已修补的版本。

参考资料

Back to Blog

相关文章

阅读更多 »

Rapg:基于 TUI 的密钥管理器

我们都有这种经历。你加入一个新项目,首先听到的就是:“在 Slack 的置顶消息里查找 .env 文件”。或者你有多个 .env …

技术是赋能者,而非救世主

为什么思考的清晰度比你使用的工具更重要。Technology 常被视为一种魔法开关——只要打开,它就能让一切改善。新的 software,...

踏入 agentic coding

使用 Copilot Agent 的经验 我主要使用 GitHub Copilot 进行 inline edits 和 PR reviews,让我的大脑完成大部分思考。最近我决定 t...