当前位置: 首页 > 科技观察

instagram_RCE:instagramAPP远程代码漏洞

时间:2023-03-12 14:17:59 科技观察

研究人员在FacebookinstagramAndroid和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((unsignedint)output_scanline>=cinfo->output_height)break;//从文件中读取sonelineintothecinfobufferjpeg_read_scanlines(cinfo,line_buffer,1);if(output_scanline>=Rect->left&&output_scanlineoutput_component告诉我们用多少字节来表示每个像素。变量的值代表不同的含义,1表示Greyscale,3表示RGB,4表示RGB+Alpha\CMYK等。除了高宽之外,output_component也可以完全被攻击者控制。因为在分析过程中不会与文件中的其他数据进行验证。__warp_malloc期望其参数在32位寄存器中处理。也就是说,如果分配的大小超过(2^32)字节,则可能会发生整数溢出。分配的大小是通过将图像的宽度乘以高度并乘以output_components获得的。因为没有校验,一旦被攻击者控制,进一步滥用就会出现整数溢出。_wrap_malloc(width*height*cinfo->output_components);//<----Integeroverflow然后把缓存传给memcpy,造成基于堆的缓冲区溢出。分配后,调用memcpy函数将图像数据复制到分配的内存中。复制过程是逐行进行的:memcpy(allocated_address+bytes_copied,line_buffer,width*output_component);//<--oopssize(width*output_component)数据也会被复制height次。为了造成内存崩溃,还需要溢出决定分配大小的整数,计算结果必须大于32位。当复制的数据大于2^32(4GB)时,如果循环到无法映射的页面,程序很可能会崩溃:allocation溢出的大小,溢出的次数,溢出内存区域的内容。攻击者可以按照以下步骤利用该漏洞:·通过电子邮件、WhatsApp、短信等方式向受害者发送恶意图片;控制目标手机;·利用该漏洞将导致受害者的instagramAPP持续崩溃,除非卸载并重新安装。PatchFacebook已经在今年春天修复了这个漏洞,Facebook表示没有发现任何在野利用该漏洞的迹象。更多技术细节见:https://research.checkpoint.com/2020/instagram_rce-code-execution-vulnerability-in-instagram-app-for-android-and-ios/本文翻译自:https://万维网。bleepingcomputer.com/news/security/instagram-bug-allowed-crashing-the-app-via-image-sent-to-device/如有转载请注明原文地址【小编推荐】Linux下如何连接WiFi终端?Netflix产品Spinnaker微服务实践分析如何在Docker容器中运行Docker“3种方式”美国“禁令”周日生效:TikTok坚持诉讼,微信企业海外版悄然改名使用用于管理SSH连接的开源工具nccm