hu1y40's blog

hu1y40'blog
天堂的穹空遍布地狱之火的颜色,但也是天堂。
  1. 首页
  2. 漏洞分析
  3. WEB
  4. DoS
  5. 正文

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

2023年10月7日 1052点热度 0人点赞 0条评论

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.1 漏洞简介

  • 漏洞名称:拒绝服务漏洞
  • 漏洞编号:CVE-2021-35515
  • 漏洞类型:CWE-835 无限循环
  • CVSS评分:CVSS v3.1:7.5
  • 漏洞危害等级:高危

3.1.2 漏洞概述

当读取一个特别精心构造的7Z压缩文件时,解压缩条目的编解码器列表的构建可能会导致无限循环。这可能被用来对使用Compress的sevenz包的服务发动拒绝服务攻击。

3.1.3 漏洞利用条件

使用的Apache Commons Compress为漏洞影响版本。

3.1.4 影响版本

Apache Commons Compress 1.6 ~ 1.20

3.1.5 漏洞分析

查看漏洞修复补丁。

fig:

从该补丁得出列表l检查是否存在重复元素便修复了该漏洞,因而结合漏洞描述可以猜测该漏洞的成因就是添加同一元素导致的无限循环,并且添加元素的时候current无增加。

查看交叉引用,发现其会被readEncodedHeader函数调用,其函数是解析7z压缩包的编码的文件头,该文件头通过NextHeader标识位置。

fig:

因此我们需要通过设计一个可以无限循环的NextHeader让程序解析,其设计有几个需要满足的条件:

  1. Folder中的coder属性有Is Complex Coder标识
  2. NumBindPair > 0
  3. 且NumBindPair的0号元素的InIndex和OutIndex均为0

构造文件可参考7z文件标准。

3.1.6 漏洞复现

首先先改一下压缩文件的NextHeader,最后读取的kFolder与此相关。

fig:

然后配置一下kFolder的数据,

fig:

按照这下面首先要满足Is Complex Coder,其次保证numbindpairs的两个数据为0,这也就满足了无限循环的条件。

fig:

代码中pair为从bindpairs中取出的数据,所以如果其为0,那么就会从第一个pair中取数据,然后取的还是0,这也就无线循环了,current永续为0。

fig:

结果符合推测。l的size已经很大了,但是程序没什么推进,bindpairs也就只有6个元素。

fig:

注:由于修改文件会造成CRC的变动,在调试过程中可以PatchCommons Compress源码以跳过CRC校验。

3.1.7 漏洞修复

1.升级Apache Commons Compress至已修复版本

升级Apache Commons Compress > 1.20

由于1.6-1.20版本出现了许多漏洞,不建议只针对7z文件进行过滤,而是选择将组件升级到漏洞不存在的版本。

标签: 漏洞
最后更新:2023年10月7日

hu1y40

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 0x01 概述
  • 0x02 组件使用场景
  • 0x03 漏洞信息
    • 3.1.1 漏洞简介
    • 3.1.2 漏洞概述
    • 3.1.3 漏洞利用条件
    • 3.1.4 影响版本
    • 3.1.5 漏洞分析
    • 3.1.6 漏洞复现
    • 3.1.7 漏洞修复

分类目录

  • 0day安全
  • Bypass
  • C++Prime
  • CTF
  • DoS
  • DoS
  • FUZZ
  • iot
  • JSONP
  • MISC
  • MISC
  • PHP伪协议
  • Python
  • REVERSE
  • sqli-labs
  • SQL注入
  • Trick
  • UAF
  • WEB
  • WEB
  • XXE
  • 书籍阅读
  • 二进制
  • 代码阅读
  • 信息搜集
  • 信息泄露
  • 加密与解密
  • 双重释放漏洞
  • 反序列化
  • 命令执行
  • 命令执行
  • 堆溢出
  • 密码学
  • 弱加密
  • 提权漏洞
  • 整数溢出
  • 文件上传
  • 未分类
  • 栈溢出
  • 格式化字符串漏洞
  • 模型
  • 汇编语言
  • 渗透测试
  • 漏洞分析
  • 漏洞利用
  • 漏洞战争
  • 漏洞挖掘
  • 病毒分析
  • 越界读取
  • 路径遍历
  • 逻辑漏洞
  • 配置不当
  • 钓鱼
  • 靶场
最新 热点 随机
最新 热点 随机
加密算法 2023年度总结 RTSPServer StackOverflow Vulnerability FUZZ 总览篇 MP4Box 无限循环漏洞 CVE-2023-40477 Winrar RCE漏洞分析
AFL代码阅读 II sqli-labs 41-50 加密与解密 第4章 针对GitHub仓库的RepoJacking攻击 bugku 三色绘恋 AFL代码阅读 I

COPYRIGHT © 2023 hu1y40's blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2021009673号-1