研究人员在 Facebook Instagram 安卓和 iOS 版本 APP 中发现了一个高危漏洞,攻击者利用该漏洞可以拒绝用户访问 APP,完全控制用户账户,甚至利用手机设备监听用户。
10年的鹤城网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整鹤城建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“鹤城网站设计”,“鹤城网站推广”以来,每个客户项目都认真落实执行。漏洞细节
该漏洞存在于 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 top ) { memcpy ( allocated_address + bytes_copied , line_buffer, width*output_component ) ;// output_component 告诉我们有多少个字节用来表示每个像素。变量的值分别代表不同的意思,1 表示 Greyscale、3 表示 RGB、4 表示 RGB + AlphaCMYK 等。
除了 height 和 width 外,output_component 也可以完全被攻击者控制。因为在分析的过程中并不会与文件中的其他数据进行验证。
__warp_malloc 希望其参数在 32 位的寄存器中进行处理。也就是说如果分配的大小超过 ( 2^32 ) 字节,那么就可以引发整数溢出。
分配的大小是通过图像的 width 乘 height 再乘以 output_components 得到的。因为没有检查,那么一旦被攻击者所控制,进一步滥用后就会引发整数溢出。
__wrap_malloc ( width * height * cinfo->output_components ) ;//