本月早些时候,安全研究人员在数以万计的 Web 应用程序中使用的 Log4j Java 软件中发现了一系列重大漏洞。该代码广泛用于消费者和企业系统,从 Minecraft、Steam 和 iCloud 到 Fortinet 和 Red Hat 系统。一位分析师估计数百万端点可能处于危险之中。
Log4j 只是一系列软件供应链攻击中的最新一起,包括 SolarWinds(其构建过程遭到破坏)和 Kaseya(攻击者在其中替换了带有恶意软件的代码)。
自从第一个 Log4j 漏洞 曝光以来,安全供应商和分析师发布了大量关于如何应对的信息,范围遍及全球。有些人发布了近乎世界末日的场景,而其他人则没有那么可怕的预测。 Check Point Software Technologies 在其近一半的客户群中发现了攻击企图。 对安全发现,58% 的 Java 应用程序存在易受攻击的版本,但只有 37% 的应用程序实际使用 Log4j。
这四个问题分别为 CVE-2021-44228、CVE-2021-45046、CVE-2021-4104 和 CVE-2021 -45105。美国网络安全和基础设施安全局正在维护一个网页,其中包含在此链接到各种供应商博客,以及一个受到影响的应用程序列表,并且是尝试通过任何修复来更新两者。这些问题涉及日志软件的几个功能,包括 Java 命名和目录接口 (JDNI) 和 JMSAppender 事件消息,它们都允许远程代码执行。让这一系列漏洞变得危险的是,攻击者不需要很多专业知识就可以获得这种远程访问。最后一个漏洞是指拒绝服务条件,让每个人都保持警惕。最近,Blumira 发现了一个新的攻击方向,它使用 WebSockets 拓宽了整体表面。
看起来我们还没有听到 Log4j 的结束。显而易见的是,作为应用程序开发人员,您在短期内需要做很多工作来查找、修复和预防 log4j 问题,并且从长远来看还有一些事情需要担心。
在开始锁定之前,Mitiga 的首席运营官 Ariel Parnes 警告说:“你应该看看你的组织是否已经在过去的某个时候使用 Log4j 被黑客入侵。罪犯可能已经在里面了。” IT 经理 John Cronin 提出了关键问题:“您知道您的哪些服务器使用 Log4j 吗?您需要多长时间才能生成这些服务器的列表?你能在接到通知后立即修补它们吗?您是否有自动化工具,或者是否有人需要登录到每台服务器并手动执行?您是否有在高峰使用时间为实时生产服务器打补丁的流程?”可以肯定的是,回答这些问题需要付出一些努力。在 以前的帖子 中,我们介绍了如何确定您是否已被感染。
安全分析师发现了可追溯到 2021 年 12 月 1 日的漏洞,使用了广泛的网络协议,包括 LDAP、RMI、DNS 和 HTTP。这些漏洞已经安装了各种恶意软件,包括隐藏的加密货币矿工、新的 Bitdefender 称为 Khonsari 的勒索软件家族,以及加入 Mirai 僵尸网络的代码。最重要的是,一些研究人员报告了来自中国、朝鲜、土耳其和伊朗的国家支持的攻击者的攻击。
您的第一道防线是升级到最新的 Log4j 版本。最初,Apache 发布了一个补丁,但结果仍然存在漏洞。最新版本是 Log4j v.2.17.0(如果您运行的是 Java 8 或更高版本)和 Log4j v.2.12.2(如果您运行的是 Java 7)您的 Web 应用程序基础架构。这些默认情况下关闭 JNDI 并删除消息查找访问,这两者都是各种漏洞的核心。禁用 JNDI 可能会破坏您的应用程序中的某些内容,因此在您在任何生产系统中实施之前仔细测试它。
如果您的任何应用程序不需要它,您可能还想停止任何基于 Java 的日志记录。同样,在部署之前进行测试。
那些运行自己的 Minecraft 服务器的人应该检查它是否运行 Minecraft v.1.8.8 或更高版本;这些版本容易受到攻击。 Microsoft 已发布 Minecraft v.1.18.1,修复了该问题。您应该立即升级或找到另一台已修复的更值得信赖的服务器。
安全供应商加班加点地扩充他们的工具,您应该利用各种免费优惠。下面我列出了各种扫描器,可用于在运行的应用程序或源文件中定位易受攻击的代码。您应该确定该代码是否已部署到任何生产实例中。
首先,了解了代码依赖关系。Log4j 的挑战之一是它的流行和包含在众多 Java 库中。一旦您在自己的代码中根除了旧版本,就该调查您正在运行的其他依赖于它的东西了。如果您使用 Apache 框架 Struts2、Flume、Dubbo、Kafka、Solr、Druid 或 Fink,则必须升级这些项目中的 Log4j 库。如果说 Struts 引起了人们的注意,那就是 2017 年的一次攻击导致 Equifax 的数据库遭到破坏,该数据库泄露了超过 1.4 亿客户的私人数据。
Tanya Janca, ofWeHack紫色 (an excellent source on app security in general), suggests that you use 依赖图, 斯尼克, or OWASP 的依赖检查. Once you find any dependency, comment out the code that calls Log4j if you can’t patch it immediately.
了解 Web 应用程序防火墙 (WAF) 的工作原理。 If you don’t have a WAF, now 是时候得到一个. If any of your code is deployed behind a WAF, turn on their detection rules and check to see if the vendor has updated its rules to cover all of the latest vulnerabilities. But realize that since the flaw was announced, researchers 已经展示了很多方法 to build nested and obfuscated payloads that would bypass proposed WAF filtering rules. Fastly has put together an extensive explanation on 如何测试WAF有效性.
利用 Log4j 漏洞缓解和修补工具。A number of companies have already delivered mitigation tools for Log4j:
地址:https://www.cundage.com/article/3645908-what-app-developers-need-to-do-now-to-fight-log4j-exploits.html