instagram_RCE:instagram APP远程代码漏洞

[[344527]]

研究人员在Facebook instagram 安卓和iOS 版本APP 中发现了一个高危漏洞,攻击者利用该漏洞可以拒绝用户访问APP,完全控制用户账户,甚至利用手机设备监听用户。

漏洞细节

该漏洞存在于instagram 处理图像的方式中,从技术上将该漏洞是一个堆溢出漏洞(CVE-2020-1895),当instagram 尝试发送大一点的文件时会触发该漏洞。攻击者只需通过常见的消息平台或邮件向攻击目标发送精心伪造的图片就可以触发该漏洞。

有漏洞的函数为read_jpg_copy_loop,会在解压缩过程中引发整数溢出。

Read_jpg_copy_loop代码段

在处理JPEG 图像文件时,有漏洞的函数会处理图像尺寸。下面是有漏洞的代码的伪代码:

  1. width = rect->right - rect->bottom; 
  2. height = rect->top - rect->left
  3. allocated_address = __wrap_malloc(width*height*cinfo->output_components);// output_scanline; 
  4.    if ( (unsigned int)output_scanline >= cinfo->output_height ) 
  5.       break; 
  6.     //reads one line from the file into the cinfo buffer 
  7.     jpeg_read_scanlines(cinfo, line_buffer, 1); 
  8.     if ( output_scanline >= Rect->left && output_scanline < Rect->top ) 
  9.     { 
  10.         memcpy(allocated_address + bytes_copied , line_buffer, width*output_component);// <--Oops 
  11.         bytes_copied += width * output_component; 
  12.     } 
  13.  } 

其中:

_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 得到的。因为没有检查,那么一旦被攻击者所控制,进一步滥用后就会引发整数溢出。

  1. _wrap_malloc(width * height * cinfo->output_components);// <---- Integer overflow 

然后缓存被传递给memcpy,引发基于堆的缓存溢出。

分配后,memcpy 函数会被调用,然后复制图像数据到分配的内存中。

复制的过程是一行一行进行的:

  1. memcpy(allocated_address + bytes_copied ,line_buffer, width*output_component);//<--Oops 

size (width*output_component)数据也会被复制 height 次。

为了引发内存奔溃,还需要溢出决定分配大小的整数,计算的结果必须要大于32 比特。当复制的数据大于2^32 (4GB) 时,如果循环到了一个无法映射的页面,程序大概率会奔溃:

漏洞利用

从漏洞利用的角度来看,一个线性堆溢出漏洞使得攻击者可以控制分配的大小、溢出的数、以及溢出内存区域的内容。

攻击者利用该漏洞可以按照如下步骤:

  • · 通过邮件、WhatsApp、短信等方式发送恶意图片给受害者;
  • · 如果用户保存图片,并打开instagram APP,那么漏洞利用就开始了,攻击者就可以远程完全控制目标手机;
  • · 漏洞利用会使得受害者的instagram APP 持续奔溃,除非卸载后重新安装。

补丁

Facebook 已于今年春季修复了该漏洞,Facebook称没有发现任何漏洞在野利用的迹象。

更多技术细节参见:

https://research.checkpoint.com/2020/instagram_rce-code-execution-vulnerability-in-instagram-app-for-android-and-ios/

 

本文翻译自:https://www.bleepingcomputer.com/news/security/instagram-bug-allowed-crashing-the-app-via-image-sent-to-device/如若转载,请注明原文地址
【编辑推荐】

  1. 如何在 Linux 终端中连接 WiFi?
  2. 分析Netflix公司产品Spinnaker的微服务实践
  3. 如何在Docker容器中运行Docker 「3种方法」
  4. “禁令”周日在美生效:TikTok坚持诉讼,企业微信海外版悄悄改名
  5. 使用开源工具 nccm 管理 SSH 连接

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/123264.html<

(0)
管理的头像管理
上一篇2025-02-22 17:39
下一篇 2025-02-22 17:41

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注