Apache Commons Compress拒绝服务漏洞 CVE-2021-35515

ApacheCommonsCompress的CVE-2021-35515:Java库中的7z无限循环拒绝服务漏洞,
这篇文章详细描述了ApacheCommonsCompress库中的CVE-2021-35515漏洞,该漏洞源于处理特定构造的7z压缩文件时的无限循环,可能导致拒绝服务攻击。漏洞影响版本为1.6至1.20,建议升级到1.20以上版本以修复。

0x01 概述

Apache Commons Compress 是一个 Java 库,旨在提供用于压缩和解压缩各种压缩格式的功能。它是 Apache 软件基金会的一个项目,为 Java 开发人员提供了处理压缩文件和流的通用接口和工具。

笔者通过对数百个真实项目引入组件的分析选出了Commons Compress组件的常见漏洞进行分析。本次分析的是CVE-2021-35515,Commons Compress对7z压缩文件解压时造成的无限循环漏洞

0x02 组件使用场景

Apache Commons Compress 是一个功能强大的 Java 库,专注于处理多种压缩格式,包括 ZIP、Tar、GZIP、BZIP2、XZ 等,适用于文件压缩、解压缩、数据存档、网络通信等多个场景。无论是创建自定义的压缩工具、优化数据传输速度,还是在有限存储空间下进行资源压缩,该库提供了一致的 API 和工具,方便开发人员处理不同压缩格式的需求,从而节省存储空间、提高效率,并简化数据处理过程。

0x03 漏洞信息

3.1 漏洞简介

漏洞名称:拒绝服务漏洞

漏洞编号:CVE-2021-35515

漏洞类型:CWE-835 无限循环

CVSS评分:CVSS v3.1:7.5

漏洞危害等级:高危

3.2 漏洞概述

当读取一个特别精心构造的7Z压缩文件时,解压缩条目的编解码器列表的构建可能会导致无限循环<

Apache Commons FileUpload 是一个广泛使用的 Java 库,用于处理 HTTP 多部分表单数据(multipart/form-data),常用于 Web 应用中的文件上传功能。CVE-2014-0050 是 Apache Commons FileUpload 在版本 1.3.1 及之前版本中存在的拒绝服务(DoS)漏洞,该漏洞源于 `MultipartStream.java` 文件中对 multipart 数据流的解析逻辑缺陷。 ### 漏洞分析 该漏洞允许远程攻击者通过构造特定的 `Content-Type` 请求头,绕过解析逻辑中的循环退出条件,从而导致无限循环。无限循环会持续消耗服务器 CPU 资源,最终导致服务不可用。由于 Apache Tomcat、JBoss Web 等 Web 容器在处理文件上传时依赖 Apache Commons FileUpload,因此使用这些容器且未更新 FileUpload 库的应用程序均可能受到影响 [^2]。 ### 影响范围 - **受影响版本**:Apache Commons FileUpload ≤ 1.3.1 - **受影响产品**:Apache Tomcat、JBoss Web 等基于 FileUpload 实现文件上传功能的 Web 应用 - **攻击方式**:远程攻击者可通过构造恶意请求,触发无限循环,造成 CPU 资源耗尽和拒绝服务 ### 解决方案 为缓解该漏洞带来的风险,建议采取以下措施: 1. **升级 Apache Commons FileUpload 至 1.3.2 或以上版本** Apache 官方已在 1.3.2 版本中修复该漏洞,升级后可有效防止恶意请求导致的无限循环问题 。 2. **检查依赖库版本并更新** 对于使用 Maven 或 Gradle 构建的项目,应检查 `pom.xml` 或 `build.gradle` 文件中是否引用了旧版本的 `commons-fileupload`,并更新为最新稳定版本。 Maven 示例: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> <!-- 或更高版本 --> </dependency> ``` 3. **在 Web 容器层面限制上传请求大小** 即使未直接使用 FileUpload 库,也建议在 Tomcat 等 Web 容器中配置最大上传大小,防止恶意请求消耗过多资源。例如在 `web.xml` 中配置: ```xml <multipart-config> <max-file-size>10485760</max-file-size> <!-- 10MB --> <max-request-size>52428800</max-request-size> <!-- 50MB --> </multipart-config> ``` 4. **部署 WAF 或应用防火墙** 可通过 Web 应用防火墙(WAF)对上传请求的 `Content-Type` 进行检测,过滤异常请求,降低攻击面。 5. **定期扫描依赖项安全性** 使用如 OWASP Dependency-Check、SonarQube 等工具对项目依赖进行安全扫描,及时发现潜在漏洞。 ### 修复验证 完成修复后,建议通过构造包含异常 `Content-Type` 的测试请求验证是否仍存在无限循环问题。可使用工具如 Burp Suite 或编写单元测试模拟上传行为,观察服务响应是否正常终止且无异常资源消耗。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值