CVE-2026-23950
node-tar 在 macOS APFS 上存在通过 Unicode 连字冲突导致的路径预留竞态条件
- 已发布
- 2026年1月20日
- 已更新
- 2026年9月1日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月25日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:H/A:L低 · 未来 30 天
- 百分位
- 17.7%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
# node-tar 存在竞态条件漏洞,可导致任意文件覆盖 node-tar(Node.js 的 Tar 库)在 7.5.3 及更早版本中存在竞态条件漏洞。该漏洞源于 `path-reservations` 系统对 Unicode 路径冲突的处理不完整。在不区分大小写或不区分规范化形式的文件系统(例如 macOS APFS,该漏洞已在其上完成测试)上,该库无法锁定冲突路径(例如 `ß` 和 `ss`),从而允许它们被并行处理。这会绕过库内部的并发安全机制,并允许通过竞态条件发起符号链接投毒(Symlink Poisoning)攻击。该库使用 `PathReservations` 系统来确保对同一路径的元数据检查和文件操作被串行化,以防止一个条目并发覆盖另一个条目时产生竞态条件。这是一个可导致任意文件覆盖(Arbitrary File Overwrite)的竞态条件漏洞。 该漏洞影响在 macOS(APFS/HFS+)上使用 node-tar 的用户和系统。由于使用了 `NFD` Unicode 规范化形式(在该形式下 `ß` 和 `ss` 被视为不同),在忽略 Unicode 规范化的文件系统(例如 APFS,其中 `ß` 会与 `ss` 产生 inode 冲突)上,冲突路径的顺序无法被正确保留。这使得攻击者能够利用恶意 tar 归档中的冲突文件名,绕过内部的并行化锁(`PathReservations`)。 7.5.4 版本中的补丁更新了 `path-reservations.js`,改用与目标文件系统行为匹配的规范化形式(例如 `NFKD`),随后依次执行 `toLocaleLowerCase('en')` 和 `toLocaleUpperCase('en')`。作为临时缓解措施,无法及时升级且以编程方式使用 `node-tar` 解压任意 tarball 数据的用户,应过滤掉所有 `SymbolicLink` 条目(正如 npm 所做的那样),以防御通过此文件系统条目名称冲突问题导致的任意文件写入。
来源
1概念验证,演示 tar npm 包(v7.5.3)中的竞态条件,该问题会在并行解压期间导致文件冲突,进而造成数据损坏或覆盖。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。