软件内部的定时炸弹:0-Day Log4Shell只是冰山一角

2022-07-12 17:08:28 浏览数 (1)

“如果攻击者能够渗透到像log4j这样的流行库中,它们将很快在世界上大多数数据中心内以特权运行。” — Jeff Williams, Contrast Security (2018)

为什么今天的网络安全威胁更具威胁性,以及它们与我们过去遇到的障碍有何不同

在过去的两年中,勒索软件的兴起只是冰山一角。头版头条新闻和有害软件供应链攻击的揭露将网络安全提升到许多政府和组织的首要议程。与此同时,即使是普通大众也意识到了Nation-State主义者和犯罪组织带来了一系列新的网络威胁。 在我写这篇文章的时候Log4Shell已经发生了。所以这成为我将要分享的最好的例子–为什么现在的网络威胁更具威胁性。 我需要告诉你的是,网络安全威胁的性质不同于我们过去所面临的挑战–从技术复杂性到日益增长的相互依赖。因此,攻击者抓住机会的速度比我们的缓解要快得多。但首先让我们谈谈什么是Log4Shell。

Log4j 0-day 漏洞(又称"Log4Shell")(CVE-2021–44228 & CVE-2021–45046)

世界各地的公司都在努力降低多年来发现的最重要的开源软件安全漏洞造成的损害。过去二十年中,在无数Java应用程序中使用了一个名为Log4j的程序,该程序中的一个缺陷,迫使几乎每家公司都在调查它们的软件以确定是否容易受到攻击。 Zero-day 漏洞 (CVE-2021–44228)于2021年12月9日公布,被称为Log4j或Log4Shell,它目前正成为攻击目标。因此CVE-2021-44228被指定为最高的“严重”性评级,风险评分为10/10。 在我撰写本文时,出现了第二个漏洞,记录为CVE-2021-45046。根据MITRE的说法,新漏洞CVE 2021-45046的描述表明,在Apache Log4j 2.15.0中解决CVE-2021-44228的修复程序“在某些非默认配置中不完整”。

Updated Log4j CVEs Summary
  • CVE-2021-44228(CVSS评分:10.0)–影响Log4j 2.0-beta9到 2.14.1版本的远程代码执行漏洞(2.15.0 版本中已修复)
  • CVE-2021-45046(CVSS评分:9.0)–影响从Log4j 2.0-beta9到2.15.0版本的信息泄漏和远程代码执行漏洞,不包括 2.12.2(在 2.16.0 版本中已修复)
  • CVE-2021-45105(CVSS评分:7.5)–影响从Log4j 2.0-beta9到2.16.0版本的拒绝服务漏洞(已在2.17.0版中修复)
  • CVE-2021-4104(CVSS评分:8.1)–影响Log4j 1.2版的不受信任的反序列化缺陷(无修复程序;直接升级到2.17.0版)
为什么这个漏洞如此具有破坏性?

大多数安全漏洞需要一定程度的专业知识才能被利用。但这个名为“Log4Shell”的程序所需的工作量很小。

  1. 大多数软件(实际上是所有的商业软件)都会在软件运行时保存所有的活动日志,允许开发人员和操作员在用户遇到问题时查看并找出问题的所在。
  2. 该活动包括用户输入到网站表单中的按键内容。
  3. Log4Shell漏洞允许攻击者在Web表单中输入精心制作的字符串,一旦被记录下来,就会控制运行它的计算机下载恶意代码。
  4. 根据应用程序决定记录哪些数据,可以在各个领域找到该恶意字符串,从针对Web服务器的HTTP用户代理到Minecraft中的聊天室消息。
  5. 在当时,那台电脑被“劫持”。
  6. 旨在利用该漏洞的恶意软件周日晚上开始蔓延。
  7. 然后攻击者进一步利用受影响的系统,例如安装加密挖矿软件,勒索软件等等。

利用此漏洞的结果是可以完全控制受感染的系统。此外无论是否经过身份验证,此漏洞都可以利用,从而增加了总体的严重性、规模和潜在影响,因此CVSS分数异常的高。 据MITRE和ZDNet称,到目前为止,攻击者已利用该漏洞:

  • 在易受攻击的系统上安装加密矿工;
  • 窃取系统凭据(凭据被盗);
  • 部署勒索软件;
  • 更深地隐藏在受损网络中(持久性);
  • 窃取数据。
建议

目前,Log4j易受攻击版本范围从2.0版本到2.14.1。此外,已弃用的1.X中仍然有潜在的漏洞。合理的解决方案是安装当前可用的Log4j修补版本来解决此漏洞,即Log4j版本2.16.0。 此外,端点检测和响应(EDR)、Web应用程序防火墙(WAF)和入侵检测系统(IPS)等网络安全解决方案正试图通过提供“虚拟补丁”来缓解这个问题。 更新 --2021年12月20日(CVE-2021–45105) Apache Log4j2版本2.0-alpha1到2.16.0(不包括2.12.3)不能防止自引用查找不受控制的递归。这允许控制线程上下文映射数据的攻击者在解释精心设计的字符串时导致拒绝服务。此问题已在Log4j 2.17.0和2.12.3中修复。

网络犯罪的性质

当我们观察 20 年前的网络犯罪分子时,他们必须非常技术化–我们在电影中看到的“真正的黑客”戴着兜帽,在键盘上快速着打字。现在网络犯罪的入门门槛低,并且网络犯罪正在成为一种服务。 当今最有利可图的网络犯罪活动是勒索软件,它会滋生更危险的威胁并需要更具创新性的网络防御。例如,勒索软件即服务 (RaaS) 为非技术犯罪分子提供了利用网络勒索的机会。然而,鉴于威胁格局的快速变化,真正的挑战是了解风险。 黑客可以从更复杂的网络犯罪中获利的另一种方式是为网络犯罪提供“基础设施即服务”。该领域的那些人提供服务和基础设施–包括防弹托管和僵尸网络租赁–其他不法分子利用这些服务和基础设施来完成他们肮脏的工作。 防弹托管可帮助网络犯罪分子将网页和服务器放在Internet上,而不必担心被执法部门删除。网络犯罪分子可以支付僵尸网络租用费用,让他们可以临时访问受感染计算机网络,用于分发垃圾邮件或DDoS攻击等等。

复杂性与相互依赖性

要明确的是,这不是我们第一次遇到这样的假期破坏者。上一次遇到这样的危机是2014年在OpenSSL中发现Heartbleed漏洞的时候。难道我们不应该从错误中吸取教训吗? 几乎所有主要科技企业公司都同意向一个基金捐款,以维护OpenSSL和其他关键开源项目的安全。然而,还有两个更复杂的问题:

  1. 规模:Java长期以来一直是最著名的企业软件编程语言之一,Log4j是Java应用中最流行的日志工具之一。
  2. 如何构建软件:Log4j也被用于各种开源软件程序中,这些程序通常作为其他软件的基础。

在过去的二十年中,开源软件导致了企业软件创新的爆炸式增长。尽管如此,这个世界上还有一个公开的秘密:许多著名和突出的开源项目都是由少数人维护的,他们不一定有偿去做这项工作。 然而,问题不在于缺少资金:有太多的开源项目被用来构建世界上一些最关键的软件,而仅仅确定需要支持的软件就是一个巨大的挑战。

更多方面的攻击 — IoT(示例)

即使像微软这样的主要技术公司已经改善了他们的安全态势,但今天的攻击面也比以前更广泛。造成这一原因的一个特殊贡献者是物联网(IoT)设备。 黑客可以使设备脱机的方法之一就是发送使机器崩溃的恶意数据包。 另一件事是当他们可以在设备上执行代码时,这就打开了在网络上持久化或横向移动到其他类型目标的可能性。 与大型机服务器、台式计算机、笔记本电脑和移动设备不同,从安全角度来看,物联网很难更新。这不是简单的“做或不做”的意识形态,而是局限性导致物联网安全面临挑战。 许多物联网设备都设计得非常小,并且功率刚好满足特定的功能需求。因此,没有足够的内存、存储或 CPU 功能来容纳安全更新。 所以对于大多数在野外运行的物联网来说修补是不可能的。 今年8月,Realtek警告称其WiFi模块中的三个SDK存在四个漏洞。根据该公告,可能有近一百万台易受攻击的设备处于使用中,这包括VoIP设备、无线路由器、中继器、IP摄像机、智能照明控制,可能还包括任何采用该芯片设计的WiFi连接设备。 以Realtek为例,修复涉及更新相关产品的固件,这会引入多种困难:

  • 查找正在使用的物联网设备是否包含该芯片组;
  • 查看设备是否处于易受攻击的版本下;
  • 更新固件。

更新固件通常涉及到直接访问设备。在大多数情况下这是另一个挑战,这些物联网设备可能位于难以到达的位置(天花板、油箱内、另一台机器内…)。 也许值得补充的是,每个人都可以使用Shodan漏洞搜索引擎找到受影响的硬件,这意味着黑客也可以这样做。

回到BlackHat 2016,Log4Shell被发现。

最后,还有一个提醒,我们应该更加关注安全研究。例如,在 Black Hat USA 2016中,Alvaro Muñoz 和 Oleksandr Mirosh 研究了JNDI问题。 虽然没有具体命名Log4j,但它是Log4j使用底层接口中的缺陷。当然,知道Log4Shell是一个“我早就告诉过你了”对所有安全专业人员来说都没有什么好处,他们正以110%的速度努力解决这个问题。 然而,知道它是在2016年发现的,这凸显了让安全团队能够从研究中获取相关信息的重要性,以及将这些经验教训应用于组织自己的基础架构和实践所需的资源(时间,金钱等)。

建议 --再次强调,零信任和纵深防御

经验证的安全原则,如纵深防御和零信任框架,也可以发挥重要作用。许多安全团队非常了解这些概念,并希望将其应用于组织的软件和解决方案部署。 然而,它们经常遇到其他利益相关者的抵制,或者缺乏部署它们的资源。正如我之前提到的,我们仍在实现这一目标的旅程中。 希望随着自动化(例如基础架构即代码,主要用于围绕 CI/CD 构建的现代管道)的日益普及,使安全团队能够与开发人员合作,从一开始就跨多个系统构建起更安全的解决方案。 零信任原则在主机、应用程序和网络级别也起着至关重要的作用。 例如在主机级别利用Log4j的进程需要哪些实际权限和功能。越来越多的行为监控(EDR、NDR 和 XDR)与运行时保护可以作为一种强大的组合来减轻被利用系统的影响。 值得注意的是,零信任访问通过网络级别的微分段来体现自己。由于Log4Shell是一个两阶段攻击–其中有效负载必须从攻击者控制的系统中下载 --隔离受感染系统的能力是有利的。

最后的话–软件内部的定时炸弹

无论是Log4j还是Realtek漏洞–都是冰山一角。 在蠕虫和病毒准备削弱网络的重要部分的早期,我们作为一个行业没有做任何事情:我们没有实施更好的技术,减少我们的攻击面,或解决代码库中的内存损坏问题。 要了解IT/OT/IoT连接基础背后真正的危险,还有很多的工作要做。但是我们可以参与查找漏洞,修复它们,并且提供更高级别的解决方案的各方力量越多,我们就能越快地过渡到更安全的世界。

0 人点赞