node-tar爆严重漏洞:Gzip炸弹可瞬间耗尽磁盘,拒绝服务攻击

node-tar npm库爆严重漏洞CVE-2026-59873,攻击者可通过小型Gzip炸弹快速耗尽服务器磁盘空间,导致拒绝服务。文章详细分析漏洞原理、PoC攻击链及防御措施,适用于Node.js安全运维与供应链安全防护。

🔓 Critical 漏洞利用

npm包node-tar中存在严重解压拒绝服务漏洞(CVE-2026-59873),攻击者通过构造小型Gzip炸弹,利用库缺乏解压总量限制的缺陷,在目标服务器上快速写入数GB数据,导致磁盘空间耗尽、服务崩溃。

来源:OSV | 2026-07-20 | 原文链接

🔍 关键发现

  • node-tar的解压过程未对总解压字节数、条目数量或压缩比设置硬上限,导致可被Gzip炸弹攻击。
  • 攻击者仅需一个声称10GB大小的tar头与可压缩数据(如零字节),即可在数秒内生成5GB以上实际写入数据。
  • 漏洞影响所有使用node-tar处理不可信tar/zip输入的应用,包括npm注册表、CI/CD流水线、文件共享平台等。

⚔️ 攻击链分析

1. 攻击者构造一个恶意tar存档,其中文件头声称大小为10GB,实际内容为高度可压缩数据(如全零)。 2. 将该存档gzip压缩成极小体积(数KB)发送给目标服务。 3. 目标服务使用node-tar解压时,库无限制地持续接收并写入解压数据到磁盘。 4. 磁盘空间被迅速耗尽,导致系统服务中断或崩溃。

🚩 失陷指标 (IOC)

  • 解压目录下出现名为'payload'的文件,大小异常快速增长
  • TAR头部字段: 文件大小字段(偏移124, 11位八进制)设置极大值如10000000000

🛡️ 缓解建议

  • ✅ 立即升级node-tar至最新修复版本(若存在);临时可通过补丁或进程内限制解压字节总量。
  • ✅ 在应用层实施资源限制:如使用磁盘配额(Linux quota)、cgroup内存/IO限制或容器化沙箱。
  • ✅ 对不可信输入文件实施解压前检查:文件头大小声明超过阈值(如1GB)直接拒绝。

涉及漏洞:["CVE-2026-59873"]


⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。

🤖 常见问题解答(FAQ)

❓ 攻击是否需要认证?

不需要,任何能向服务提交tar.gz文件的未认证攻击者均可利用此漏洞进行拒绝服务攻击。

❓ 如何检测是否被攻击?

监控磁盘使用率急剧上升;查看解压目录是否有名为'payload'且大小异常的文件;审计tar头大小字段是否异常巨大。

❓ 受影响版本范围?

官方公告尚未明确影响版本,建议所有node-tar用户检查版本并关注GitHub安全通告,通常涉及旧版(< 6.x)可能受影响。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)