分析CVE-2018-18557与复现

本文详细介绍了CVE-2018-18557,这是一个LibTIFF 4.0.9中的安全漏洞,因在JBIGDecode函数中未验证缓冲区大小导致堆溢出。通过编译安装、理解TIFF文件格式、触发漏洞的步骤,以及使用gdb调试和源码分析,揭示了漏洞的成因及复现过程。
摘要由CSDN通过智能技术生成

前言

cve描述

LibTIFF 4.0.9 (with JBIG enabled) decodes arbitrarily-sized JBIG into a buffer, ignoring the buffer size, which leads to a tif_jbig.c JBIGDecode out-of-bounds write.

该cve发生在LibTIFF 4.0.9版本中,由于在解码JBIG的时候没有对size 进行验证,在JBIGDecode函数中会造成大量数据的堆溢出

编译安装

为了复现该漏洞,需要使得LibTIFF 支持jbig解码功能,所以需要先安装libjbig-dev

sudo apt-get install libjbig-dev

然后编译安装LibTIFF 4.0.9,链接在此

./configure --prefix=/xxxx/xxx/build

make && make install

tiff文件格式

TIFF是Tagged Image File Format的缩写 , 标签图像文件格式

TIFF与其他文件格式最大的不同在于除了图像数据,它还可以记录很多图像的其他信息。它记录图像数据的方式也比较灵活, 理论上来说, 任何其他的图像格式都能为TIFF所用, 嵌入到TIFF里面。比如JPEG, Lossless JPEG, JPEG2000和任意数据宽度的原始无压缩数据都可以方便的嵌入到TIFF中去。由于它的可扩展性, TIFF在数字影响、遥感、医学等领域中得到了广泛的应用。TIFF文件的后缀是.tif或者.tiff

Tiff的结构大概是这样的组成:

文件头信息区(IFH)、图像文件目录(IFD)和图像数据区

而IFD又包含了很多DE( Directory Entry )

简单的说,IFD用于存储描述图像的属性信息,如图像的 长、宽、分辨率等 ,DE就是一个个不同属性描述。而图像数据区则直接存储像素信息的二进制数据

这里只做简单介绍,详细可见: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值