产品中心
产品中心
基础安全
T-Sec 主机安全
容器安全服务 TCSS
T-Sec Web应用防火墙
T-Sec 云防火墙
T-Sec 安全运营中心
T-Sec iOA零信任安全管理系统
业务安全
T-Sec 天御 验证码
T-Sec 天御 文本内容安全
T-Sec 天御 视频内容安全
T-Sec 全栈式风控引擎
T-Sec 手游安全
T-Sec 小程序安全
T-Sec 应用合规平台
数据安全
T-Sec 堡垒机
T-Sec 数据安全审计
T-Sec 云访问安全代理
T-Sec 凭据管理系统
T-Sec 密钥管理系统
T-Sec 云加密机
T-Sec 数据安全治理中心
安全服务
T-Sec 安全专家服务
一站式等保服务
T-Sec 安全托管服务
渗透测试服务
应急响应服务
重要时期安全保障服务
安全攻防对抗服务
了解全部安全产品→解决方案
解决方案
通用解决方案
等保合规安全解决方案
直播安全解决方案
数据安全解决方案
品牌保护解决方案
高防云主机安全解决方案
腾讯安心平台解决方案
行业场景方案
游戏安全场景方案
电商安全场景方案
智慧零售场景方案
智慧出行场景方案
安全专项解决方案
勒索病毒专项解决方案
重大保障安全解决方案
- NEW最新动态
更多
更多
关于我们
腾讯安全介绍
荣誉认证
帮助中心
帮助文档
考试认证
在线课堂
证书查询
联系我们
产品方案咨询
寻求市场合作
友情链接
腾讯云
- 登录可以享受
- 精准服务推荐
- 线上快捷下单
- 海量资源流量
- 立即登录
Flash 0day漏洞(CVE-2018-5002)利用原理分析
2018-06-08 03:44:39
1、概述
6月7日,腾讯御见威胁情报中心发布文章《腾讯御见监测到Flash
0day漏洞野外攻击》,文章详细介绍了APT组织利用Adobe
Flash 0day漏洞(CVE-2018-5002)构造特殊excel文件对目标国家进行攻击的完整流程。全文可参考:《腾讯御见监测到Flash
0day漏洞野外攻击 已得到Adobe官方确认》
漏洞影响Adobe Flash Player
29.0.0.171及所有之前的版本,鉴于Adobe官方尚未发布漏洞修复补丁,有关该漏洞利用的技术细节,腾讯御见威胁情报中心予以暂缓公开处理。
随后,Adobe官方于6月7日下午发布安全公告(公告ID:APSB18-19),Adobe Flash Player的版本已更新到30.0.0.113,Adobe官方向报告此次安全漏洞的多支技术团队表示感谢。
具体可参考Adobe 官方安全公告:https://helpx.adobe.com/security/products/flash-player/apsb18-19.html
腾讯御见威胁情报中心监控到的Flash 0day漏洞(CVE-2018-5002)的APT攻击案例,疑似一起针对阿拉伯语国家的鱼叉攻击事件。此次攻击时使用的诱饵文档文件名为《basic_salary.xlsx》,主要内容为阿拉伯语言撰写的外交部官员基本工资情况。
其诱饵文档嵌入了一个在线的Flash对象,用户打开文档后,就会自动加载Flash文件(SWF1)。而这个Flash文件又会通过网络动态下载目标Flash文件(SWF2),而SWF2就是一个利用CVE-2018-5002漏洞的利用样本,一旦触发漏洞,SWF2便会下载恶意Shellcode运行。
2、漏洞原理
CVE-2018-5002是由于Flash未能正确处理包含特殊字节码序列的SWF文件时产生的栈越界读写漏洞。该漏洞同之前的CVE-2017-11292类似,都需要修改SWF文件的字节码来触发漏洞。同时该漏洞的利用只需要简单的内存布局,不需要复杂的堆喷,一个样本同时在32位和64位系统中稳定运行。
3、漏洞原理分析
1、漏洞代码
ASC2(ActionScript 2)引入了一组用于快速操作内存的函数,如li8, si8等等。该组函数的具体含义如下:
样本代码经过了恶意混淆,下面是清除混淆后的触发漏洞代码。
其中包含li8的静态初始化(Static Initializer)代码并没有被完全反编译,下图是根据其字节码得出的伪码:
实际调试发现,执行li8指令时会触发异常,同时异常会交由当前的catch块来处理。而catch部分的代码可以越界将其调用者的栈上的两个对象指针(local_448, local_449)互换,从而实现类型混淆。
这里就产生两个重要的问题:
I li8指令并不在try块中,为什么产生的异常能被当前的catch块捕获?
II catch块正常情况下只能访问local_0和local_1,为什么这里能越界读写?
2、异常处理
Flash的虚拟机AVM在执行可能会触发异常的字节码前,会记录当前执行的位置previous_bytecode_offset,当发生异常后则根据记录的执行位置从异常处理例程表ExceptionHandlerTable中查找对应的异常处理函数,即AS脚本或字节码中的catch块。
Flash在创建domainMemory时,会为其初始化一个大小为0x400的内存。
Flash在执行li8(123456)指令时,首先会检查偏移123456是否超过了domainMemory的大小。由于偏移123456超过了domainMemory的范围0-1023,所以Flash会抛出一个Range Error的异常,如下图所示,其中0x34为li8的字节码0x35 – 1。
在执行该段代码前,previous_bytecode_offset被初始化为0。此后一共执行了三个字节码,分别是:jump,push,li8,这三个字节码的执行都没有保存当前执行的位置到previous_bytecode_offset。
这样Flash在处理li8字节码触发的异常时,认为异常发生的位置为0,接下来FindExceptionHandler函数根据异常发生的位置查找对应的异常处理函数,由于异常位置0位于当前的Try块内,FindExceptionHandler函数就认为该异常应该交给当前的catch块来处理。
下图就是调试该过程的截图,FindExceptionHandler的第二个参数就是出现异常的偏移即previous_bytecode_offset,值为0。
3、栈越界读写
栈越界读写主要是通过绕过Flash对Catch代码块的检查(Verify)实现的。
Flash在对Try代码块进行检查时,发现当前代码块只有一条jump指令,而jump指令不会抛出异常。
同时,由于jump目标区域的字节码序列不在Try代码块内, Flash AVM认为整段代码不会发生异常,对应的catch代码不会被执行到,所以略过了对catch代码块的检查,从而可以在catch代码块内实现越界读写。
越界读写前:
触发越界读写,交换local_448和local_449:
有关本次APT攻击样本的其他技术细节分析,可参考6月7日御见威胁情报中心发布的《腾讯御见监测到Flash
0day漏洞野外攻击 已得到Adobe官方确认》一文。
腾讯御见威胁情报中心判断在其利用方法未被广泛传播之前,该漏洞仍将主要被技术实力强劲的APT组织所掌握。
鉴于Adobe Flash Player几乎安装在每一台电脑上,且有大量用户不会及时修补安全漏洞,当该漏洞的利用方法被病毒木马黑色产业掌握时,将会带来大面积的网页挂马威胁。
腾讯安全专家建议网民及时升级Adobe Flash Player到最新版本(30.0.0.113)以防御可能的漏洞攻击威胁,下载地址:https://get.adobe.com/cn/flashplayer/
腾讯御见威胁情报中心同时提醒政府机关、重要企业用户,切勿随意打开来历不明的文档,同时安装安全软件进行防御。
目前,腾讯御界高级威胁检测系统已经可以检测并阻断该轮攻击的连接行为。御界高级威胁检测系统,是基于腾讯反病毒实验室的安全能力、依托腾讯在云和端的海量数据,研发出的独特威胁情报和恶意检测模型系统。
凭借基于行为的防护和智能模型两大核心能力,御界高级威胁检测系统可高效检测未知威胁,并通过对企业内外网边界处网络流量的分析,感知漏洞的利用和攻击。
通过部署御界高级威胁检测系统,及时感知恶意流量,检测钓鱼网址和远控服务器地址在企业网络中的访问情况,保护企业网络安全。
4、参考资料:
《腾讯御见监测到Flash 0day漏洞野外攻击 已得到Adobe官方确认》
Adobe 官方安全公告(APSB18-19):https://helpx.adobe.com/security/products/flash-player/apsb18-19.html
在线咨询
方案定制