当前位置:首页 > 黑客服务 > 正文内容

CVE-2020-15999:Chrome FreeType字体库堆溢出原理分析

访客4年前 (2021-04-16)黑客服务468

漏洞简介

Google发布公告,旧版本的 chrome 浏览器的 FreeType字体库中存在堆溢出,被利用可能导致 RCE(远程代码执行)。

安全专家建议用户尽快升级到86.0.4240.111 之后的版本,以解决风险。

漏洞原理


一、TTF 嵌入图片

TTF 字体支持嵌入 PNG 格式的图片作为字形数据,在嵌入时图片数据会被保存在字体文件的 SBIX 表格中,在处理时会通过提取 SBIX 表中的 PNG 中存取的信息来实现字体渲染。SBIX 表中的格式如下图:


SBIX 中的?strikeOffset?存储了 Strikes 的数据信息的偏移,Strikes 中的?glyphDataOffset?存储了具体的字形信息的偏移,Strikes 格式和字形信息的格式如下图:


字形信息中的 data 存储了被嵌入的图片信息。下面是样本中的 SBIX 和存储的图片信息。

PNG 图片信息被保存在了?hex(0x1a30 + 0x5aaec + 0x8)=0x5c524?处。通过 IHDR 可以看到图片的一些基本信息,具体信息如下图:


二、Load_SBit_Png 函数实现

FreeType 库中 PNG 图片信息的提取是通过?Load_SBit_Png?函数实现的。Load_SBit_Png?函数的处理流程如下:

1. 将字形信息中 data 指向的内存解析为 PNG

2. 提取被解析后图片的 IHDR 存储的信息(图像宽度和高度,深度及颜色类型等)

3. 将解析后的信息提取到字形信息中

4. 按照之前解析到信息开辟内存用于保存图片信息


三、漏洞原理

漏洞发生在将解析到的图片信息提取到字形信息过程中,PNG 图片中的 IHDR 存储的宽度和高度的数据类型为?uint32,在存储到字形信息时,会被转换为?unsigned short?类型,此时如果图片的宽度和高度信息大于?0x7FFF?则会发生截断。


之后字形信息中存储的相应数据会被传递到用于存储 PNG 图片的字形信息的 bitmap 里,bitmap 中的 rows 对应图片的高度,width 对应图片的宽度,pitch 对应 bitmap 每行占据的字节数,即 宽度 * 4。之后会调用?ft_glyphslot_alloc_bitmap?函数完成 bitmap 中用于存储图片信息的内存的分配。如下图,分配的内存大小是?map->rows * (FT_ULong)map->pitch,即高度 * 每行占据的字节数。之后调用?png_read_image?读取图片信息到?bitmap->buffer。如果 PNG 图片的高度被截断,则会导致分配的内存不足,在读取图片信息时发生堆溢出。


溢出后 bitmap 信息如下图,buffer 的长度即为?0xa3 * 0xc?,查看 buffer 之后的数据可以看到已经被覆盖。



漏洞验证


一、在87.0.4247.0(开发者内部版本)验证


二、86.0.4240.111 版本修复分析

比较?imgWidth?和?imgHeight?是否大于?0x7FFF,?大于则退出。


参考


https://bugs.chromium.org/p/chromium/issues/detail?id=1139963



扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/106552.html

分享给朋友:

“CVE-2020-15999:Chrome FreeType字体库堆溢出原理分析” 的相关文章

贾秀东个人资料简介(简历及图片)

贾秀东人物概况 本页面提供了贾秀东个人资料简介(简历及图片),贾秀东是谁?贾秀东个人简介资料完整设计了网页求职找工作编辑个人简历作品所需要的贾秀东网站常用模板元素,不保证贾秀东人物数据真实,任何问题请联系管理员调整。 贾秀东图片 贾秀东个人资料简介 贾秀东,中国国际问题研究所特聘研究员。1...

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另 鸡鸭的肛门附近组织,布满大大小小的腺体,各类秽物与毒素都在这些腺体囤积;鸡鸭的肛门也有非常高密度的大肠杆菌,所以鸡鸭的屁股不是少吃的问题,而是不能吃.吃得少可能没觉出怎样,多了问题就显出来了.而且鸡鸭屁股的大肠杆菌会随着蛋生出来的时...

鸡业行情网今日鸡价,鸡业行情网下载安装

河南:新乡肉鸡价格4点45:鸡架2点鸡肉7点鸡大腿鸡翅根8点鸡爪鸡翅尖鸡翅中鸡心鸡肝,其地址为http,除江苏地区苗鸡价格略涨,烟台网肉鸡价格4点65-4点75元/斤/wyimucom/down-15679html,1点00元/羽,点击“下载文件。以市斤为单位/羽 菏泽鸡苗价格3点90-4点30元/...

铁盖子可以放入高压锅蒸吗?装酱料的铁盖子,外面的涂层有些剥落,好

铁盖子可以放入高压锅蒸吗?装酱料的铁盖子,外面的涂层有些剥落,好 铁盖子可以放入高压锅蒸吗? 装酱料的铁盖子,外面的涂层有些剥落,好象也没锈,可以拿它盖严瓶子入高压锅蒸吗? 绝对不行!既危险又不卫生。盖住的瓶子在高压锅中加热,很容易形成压力差而爆炸;铁在高压锅中的水蒸汽作用下极易变成四氧化三...

中国水产养殖网官网_中国水产价格网

只能告诉你名称了,这个,像南京就要三十几,南京六合沪江水产市场甲鱼价格就应声下落。 1-2两的黄鳝批发价格是25元/斤,19-20元/斤,水产养殖网总浏览量达100万人次,价格在35-40元一斤。按照商品鱼进行销售的话,元旦刚过。 生甲鱼200-500/斤,我这边有一个,水产养殖品,战略合作 现在市...

西安电脑黑客接单_怎么能找入侵蚊香社的黑客

sudo apt install g++-4.4SplashData剖析的这500万被走漏的暗码主要是北美和西欧的用户,成人网站走漏的暗码不包含在剖析陈述中。 支撑(V4增强)所谓0day缝隙的在野运用,一般是进犯活动被捕获时,发现其运用了某些0day缝隙(进犯活动与进犯样本剖析自身也是0day缝隙...

评论列表

弦久空宴
2年前 (2022-07-04)

的 SBIX 和存储的图片信息。PNG 图片信息被保存在了?hex(0x1a30 + 0x5aaec + 0x8)=0x5c524?处。通过 IHDR 可以看到图片的一些基本信息,具

闹旅叔途
2年前 (2022-07-05)

h,即高度 * 每行占据的字节数。之后调用?png_read_image?读取图片信息到?bitmap->buffer。如果 PNG 图片的高度被截断,则会导致分配的内存不足,在读取图片信息时发生堆溢出。溢出后 bitmap 信息如下图,buffer 的长度即为?0xa3 * 0xc?

闹旅叔途
2年前 (2022-07-04)

?bitmap->buffer。如果 PNG 图片的高度被截断,则会导致分配的内存不足,在读取图片信息时发生堆溢出。溢出后 bitmap 信息如下图,buff

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。