研究人员在Facebook instagram 安卓和iOS 版本APP 中发现了一个高危漏洞,攻击者利用该漏洞可以拒绝用户访问APP,完全控制用户账户,甚至利用手机设备监听用户。
威县网站建设公司创新互联,威县网站设计制作,有大型网站制作公司丰富经验。已为威县上千家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的威县做网站的公司定做!
漏洞细节
该漏洞存在于instagram 处理图像的方式中,从技术上将该漏洞是一个堆溢出漏洞(CVE-2020-1895),当instagram 尝试发送大一点的文件时会触发该漏洞。攻击者只需通过常见的消息平台或邮件向攻击目标发送精心伪造的图片就可以触发该漏洞。
有漏洞的函数为read_jpg_copy_loop,会在解压缩过程中引发整数溢出。
Read_jpg_copy_loop代码段
在处理JPEG 图像文件时,有漏洞的函数会处理图像尺寸。下面是有漏洞的代码的伪代码:
- width = rect->right - rect->bottom;
- height = rect->top - rect->left;
- allocated_address = __wrap_malloc(width*height*cinfo->output_components);// output_scanline;
- if ( (unsigned int)output_scanline >= cinfo->output_height )
- break;
- //reads one line from the file into the cinfo buffer
- jpeg_read_scanlines(cinfo, line_buffer, 1);
- if ( output_scanline >= Rect->left && output_scanline < Rect->top )
- {
- memcpy(allocated_address + bytes_copied , line_buffer, width*output_component);// <--Oops
- bytes_copied += width * output_component;
- }
- }
其中:
_wrap_malloc 函数会根据图像尺寸的3个参数来分配内存块。Width和height 都是16位的整数(uint16_t)。
cinfo->output_component 告诉我们有多少个字节用来表示每个像素。变量的值分别代表不同的意思,1表示Greyscale、3表示RGB、4表示RGB + Alpha\CMYK等。
除了height和width外,output_component 也可以完全被攻击者控制。因为在分析的过程中并不会与文件中的其他数据进行验证。
__warp_malloc 希望其参数在32位的寄存器中进行处理。也就是说如果分配的大小超过 (2^32) 字节,那么就可以引发整数溢出。
分配的大小是通过图像的width乘 height再乘以 output_components 得到的。因为没有检查,那么一旦被攻击者所控制,进一步滥用后就会引发整数溢出。
- _wrap_malloc(width * height * cinfo->output_components);// <---- Integer overflow
然后缓存被传递给memcpy,引发基于堆的缓存溢出。
分配后,memcpy 函数会被调用,然后复制图像数据到分配的内存中。
复制的过程是一行一行进行的:
- memcpy(allocated_address + bytes_copied ,line_buffer, width*output_component);//<--Oops
size (width*output_component)数据也会被复制 height 次。
为了引发内存奔溃,还需要溢出决定分配大小的整数,计算的结果必须要大于32 比特。当复制的数据大于2^32 (4GB) 时,如果循环到了一个无法映射的页面,程序大概率会奔溃:
漏洞利用
从漏洞利用的角度来看,一个线性堆溢出漏洞使得攻击者可以控制分配的大小、溢出的数、以及溢出内存区域的内容。
攻击者利用该漏洞可以按照如下步骤:
补丁
Facebook 已于今年春季修复了该漏洞,Facebook称没有发现任何漏洞在野利用的迹象。
网页标题:instagram_RCE:instagramAPP远程代码漏洞
分享链接:http://www.shufengxianlan.com/qtweb/news16/406516.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联