
CVE-2026-23745 的概念验证(PoC),这是 node-tar(<7.5.2)中的一个高危路径遍历漏洞。
该库未能对硬链接和符号链接的 linkpath 字段中的绝对路径进行清理。这允许恶意 tar 归档绕过解压根目录,覆盖主机系统上的任意文件,即使设置了 preservePaths: false 也是如此。
位于 src/unpack.ts 中。该库对未清理的用户输入使用了 path.resolve():
// 漏洞:如果第二个参数是绝对路径,path.resolve 会忽略 'cwd'
const target = path.resolve(this.cwd, String(entry.linkpath))
如果攻击者在 tar 头中提供绝对路径(例如 /etc/passwd),node-tar 会将其解析为系统根目录,而不是解压目录。
附带的 poc.js 会生成一个恶意归档,并尝试覆盖本地的 secret.txt 文件。
安装存在漏洞的版本:
npm install [email protected]
运行漏洞利用生成器:
node poc.js
输出:
[+] VULN CONFIRMED: Hardlink overwrite successful
Target file content changed to: OVERWRITTEN
已在 v7.5.3 中修复。该更新添加了 stripAbsolutePath(),用于在解析前清理链接目标。
参考: