ZDI总结全年最重要的五个漏洞

写在前面的话

在这一年即将结束之际,我们在此回顾一下我们在2020年收到的一些最有意思的漏洞报告。毫无疑问,将今年已报告的1400多个漏洞缩减为只有5个,这绝对是一个相当大的挑战。在这篇文章中,我们所分析的这5个安全漏洞是从这1400多个漏洞中脱颖而出的,接下来,我们一起看看到底是哪五个漏洞杀出了重围。

CVE-2020-0688/ZDI-20-258

CVE-2020-0688/ZDI-20-258 :Microsoft Exchange Server的Exchange控制面板加密密钥远程代码执行漏洞

这个漏洞是Microsoft Exchange Server的Exchange控制面板中存在的一个加密密钥远程代码执行漏洞。该漏洞是由一位匿名安全研究专家上报的,Microsoft Exchange Server中的这个高度严重的漏洞将允许任何经过身份验证的Exchange用户获得服务器上的SYSTEM权限。该漏洞位于Exchange管理中心Web界面中,即虽然这个Web界面被称为“管理”界面,但在默认情况下,任何拥有Exchange服务器上邮箱凭据的或者可以在网络上公开访问Outlook Web Access的用户都可以使用该界面。漏洞与Exchange管理中心(ASP.NET应用程序)中安装的加密密钥(“计算机密钥”)有关,xchange应该在安装时随机生成这些密钥,以便实现保持对每个安装的机密性和唯一性。但是现在,它们却是从安装介质中逐字复制的,因此外部攻击者可以通过引用产品的任何其他安装源来获取到这些密钥。攻击者可以利用获取到的密钥信息伪造出将在服务器上反序列化的消息,从而实现任意代码的执行。Exchange服务器中的这个漏洞非常严重,因为Exchange一般都扮演着企业神经中枢的角色,这使得该漏洞成为了网络犯罪分子眼中一个非常有价值的目标。如果您的组织目前还没有修复该漏洞的话,我们建议大家尽快修复。

参考资料:【 点我获取

CVE-2020-3992/ZDI-20-1377

CVE-2020-3992/ZDI-20-1377 :VMware ESXi SLP用后释放远程代码执行漏洞

这个漏洞是由ZDI漏洞研究人员Lucas Leong发现的,ESXi是由VMWare开发的企业级管理程序,ESXi中默认启用的协议之一是服务位置协议(SLP)。SLP是一种使客户端能够发现网络服务的协议,目前最流行的SLP实现就是OpenSLP了。然而,Lucas发现ESXi使用的是他们自己的定制实现方式。重要的是,这个自定义实现中存在设计缺陷,从而导致了两个严重的安全问题出现。其中一个安全问题将导致程序在SLPDProcessMessage()中释放SLPMessage对象,但是该程序仍会在SLPDatabase结构中保留对已释放对象的引用。这也就导致了用后释放(UAF)的情况出现,而远程攻击者将能够通过网络来触发并利用该漏洞。这个漏洞最初被标记为了ZDI-CAN-11563。但是,VMWare所提供的安全补丁并没有完全解决这个问题,这便导致了ZDI-CAN-12190的出现。应该注意的是,除了可以远程利用之外,这些SLP问题还可以被攻击者利用来帮助在受限环境中运行的程序实现沙箱逃逸。这也足以证明,即使是经过大量研究的产品,比如说ESXi,也有可能存在严重的攻击面,这些攻击面往往容易被忽视,因此存在较严重的安全风险。

CVE-2020-9850/ZDI-20-672

CVE-2020-9850/ZDI-20-672 :Apple Safari JIT模式下的类型混淆远程代码执行漏洞

这个漏洞是由乔治亚理工系统软件与安全实验室的团队在春季Pwn2Own竞赛中报告的,该漏洞同时也是一条有趣漏洞利用链(与Webkit的类型混淆问题有关)的一部分。由于这个漏洞,Safari将具备执行“.app”符号链接的能力,这是由OpenGL的CVM(核心虚拟机)中的堆溢出漏洞所导致的。此外,由于竞争条件的存在,将有可能在cfprefsd和kextload中实现root访问或权限提升。研究人员在Pwn2Own上成功演示了该漏洞,并赢得了七万美金的漏洞奖励。这个漏洞的利用场景比较可怕,因为当一个毫无防备的受害者在访问一个简单的网页时,这一切他都是毫不知情,因为浏览网页10秒后,恶意代码将会在目标用户的设备上运行,一切都是在后台悄悄完成的。

CVE-2020-7460/ZDI-20-949

CVE-2020-7460/ZDI-20-949 :FreeBSD内核sendmsg系统调用TOCTU权限提升漏洞

这个漏洞是由一个名叫m00nbsd的研究人员报告给ZDI的。该漏洞允许攻击者利用32位sendmsg()系统调用中存在的TOCTU漏洞,以初始为非特权的用户身份在FreeBSD上执行内核级代码。该漏洞是系统调用中的一个双重获取漏洞,为了触发溢出,用户必须必须在第一次访问和第二次访问之间用更大的值替换其中一个MsgLen值。攻击者可以通过在循环中生成一个调用sendmsg()的线程来触发该漏洞,并为其提供正确的参数。然后,它们可以生成另一个线程,用一个巨大的值替换其中一个MsgLen,然后将正确的值放回一个循环中。接下来,等待两个线程争用这个资源,便会触发溢出。令人惊讶的是,这个漏洞隐藏得并不深,但这么多年来却没人发现它。如需了解更多关于此漏洞的细节(包括PoC),可以参考这篇【 文章 】。

CVE-2020-17057/ZDI-20-1371

CVE-2020-17057/ZDI-20-1371 :Microsoft Windows DirectComposition未初始化的指针权限提升漏洞

一位匿名研究员向ZDI报告了这个漏洞。这个漏洞存在于Windows DirectComposition内核模式图形组件之中,win32kbase!DirectComposition::CInteractionTrackerMarshaler::SetBufferProperty函数基于从用户模式传递的数据填充DirectComposition::CInteractionTrackerMarshaler类型的对象。如果此函数遇到无效数据,它将切换到一条错误路径,该路径将尝试释放函数已创建并存储在对象中的资源。由于此错误路径中存在安全问题,可能会影响函数释放从未初始化的指针。这使攻击者能够在内核模式下控制指令指针,从而获得SYSTEM权限。

总结

我们回顾了今年提交给ZDI项目的一些最佳漏洞,多年来,许多事情都发生了变化,但我们与来自全球各地的独立安全研究人员合作的愿望从未动摇过。如果您已经参与到了我们的计划之中,我们感谢您的辛勤工作和参与。如果您还没有提交计划,我们希望您将来考虑提交。