漏洞概述 该漏洞涉及在将ZIP文件转换为TAR格式时,未对ZIP文件的解压大小进行限制,导致可能引发内存耗尽或拒绝服务(DoS)攻击。具体表现为: ZIP文件解压后的输出超过上传限制。 转换过程中,小压缩归档文件不再在内存中扩展。 超过配置扩展限制的ZIP上传返回413请求实体过大错误。 损坏的ZIP内容返回400错误,而不是作为内部错误处理。 影响范围 所有使用ZIP上传并转换为TAR格式的应用程序。 特别是那些依赖ZIP文件上传功能的服务,如文件存储服务、邮件附件处理等。 修复方案 1. 添加归档级别预检检查:在转换前检查ZIP文件的预期大小。 2. 添加写入端聚合限制:在写入TAR文件时限制其大小。 3. 传播错误:在写入过程中传播错误,而不是丢弃它们。 4. 分类损坏的ZIP条目元数据和内容不匹配:返回400错误。 5. 返回413错误:当扩展的ZIP内容过大时。 6. 返回400错误:对于无效的ZIP归档内容。 7. 添加回归测试:针对过大的ZIP扩展和无效的ZIP元数据。 POC代码 总结 该漏洞通过限制ZIP文件解压后的输出大小和添加预检检查,有效防止了潜在的内存耗尽和拒绝服务攻击。修复方案包括多个层面的检查和错误处理,确保系统的安全性和稳定性。