Log4j 安全漏洞是当今网络安全领域中一个极其危险的隐患。
日志记录是现代应用程序不可或缺的功能,而 Log4j 日志库在这方面占据领先地位。
这个库被广泛应用于各类应用程序、服务和系统中。 因此,去年发现的 Log4j 漏洞对所有使用 Log4j 的应用都产生了深远的影响。
全球范围内,网络安全的担忧日益加剧,各组织和个人都在积极采取措施,以保护他们的应用程序、系统以及数据安全。
该漏洞的出现,给专业人士和企业带来了前所未有的压力和挑战。
所以,为了确保您的数据、网络、声誉和客户信任不受损害,及时检测并修复 Log4j 漏洞至关重要。
本文将深入探讨 Log4j 漏洞的本质,以及检测和修复此漏洞的具体步骤。
让我们首先了解 Log4j 的作用以及为什么我们需要它。
Log4j 是什么?
Log4j 是一款用 Java 编写的开源日志记录工具,主要功能是存储、格式化以及发布应用程序和系统产生的日志信息,并以此来排查错误。记录的内容多种多样,涵盖从网页和浏览器数据到运行 Log4j 的系统技术细节等各个方面。
开发人员无需从零开始编写代码,只需将 Log4j 库的代码集成到他们的应用程序中即可直接使用。
借助 Log4j,开发人员可以利用精准的日志信息来追踪与其应用程序相关的所有事件。 这有助于他们监控应用程序运行状态,及时发现潜在问题,并在问题演变成更大的性能和/或安全隐患之前加以解决。
这个基于 Java 的库由 Ceki Gülcü 开发,于 2001 年在 Apache License 2.0 许可下发布。 它利用 Java 命名和目录接口 (JNDI) 服务,使应用程序能够与 LDAP、DNS、CORBA 等其他应用程序进行交互,并为基于 Java 的应用提供目录和命名功能。Log4j 由以下三个核心组件构成,以完成其任务:
- 记录器:用于捕获日志信息
- 布局:用于以不同风格格式化日志信息
- 附加程序:用于将日志信息发布到不同的目的地
实际上,Log4j 是网络上最受欢迎的日志库之一,被各个行业和国家的组织广泛使用。 许多大型企业,包括 Google、Microsoft、Apple、Cloudflare、Twitter 等顶级的云服务商,都已将此日志库集成到其大量的应用程序中。
它的开发商 Apache 软件基金会推出了 Log4j 2,是对 Log4j 的升级版本,旨在解决早期版本中发现的问题。 然而,去年在 Log4j 中发现了一个安全漏洞,如果不及时修复,攻击者可能会入侵应用程序和系统、窃取数据、感染网络,甚至实施其他恶意活动。
接下来,我们来深入了解一下这个漏洞。
什么是 Log4Shell – Log4j 漏洞?
Log4Shell 是 Log4j 库中一个严重的安全漏洞,它直接影响到库的核心功能。 攻击者可以通过执行远程代码来控制联网的设备或应用程序。一旦攻击成功,他们将能够:
- 在设备或系统上执行任何代码
- 访问所有网络和数据
- 修改或加密受影响应用或设备上的任何文件
这个漏洞最早由阿里巴巴(中国电子商务巨头)的安全研究员陈兆军于 2021 年 11 月 24 日报告。 该漏洞影响了他们的 Minecraft 服务器,而阿里巴巴的云安全团队在 12 月 9 日发现了这一情况。
随后,美国国家标准与技术研究院 (NIST) 在国家漏洞数据库中发布了这个漏洞,并将其命名为 CVE-2021-44228。 Apache 软件基金会随后将该漏洞的 CVSS 严重性评为 10 分,这是非常罕见且极其严重的评分,因为它极易被广泛利用,给组织和个人带来巨大损害。
作为回应,Apache 发布了针对此漏洞的补丁,但仍有一些部分未解决,进而导致了其他漏洞:
- CVE-2021-45046 通过 JNDI 查找加剧了拒绝服务 (DoS) 攻击
- CVE-2021-45105 允许黑客控制线程上下文映射信息,并通过解析精心设计的字符串来触发 DoS 攻击
- CVE-2021-44832 通过远程代码注入 (RCE) 影响所有 Log4j 2 版本
Log4Shell 的工作原理?
要理解其严重性以及 Log4Shell 可能造成的危害,就必须了解 Log4j 漏洞是如何运作的。
Log4Shell 漏洞允许攻击者远程将任意代码注入网络,并完全控制网络。
网络攻击通常从日志库(如 Log4j)开始,用于收集和存储日志信息。 如果没有日志库,所有来自服务器的数据将在收集后立即被存档。
但是,如果您想分析这些数据,或者需要根据特定的日志信息采取一些行动,那么您需要一个日志库,以便在日志数据被存档之前对其进行解析。
由于 Log4j 漏洞,任何使用 Log4j 的系统或应用程序都容易受到网络攻击。日志库会根据输入来执行代码,黑客可以通过操纵输入来强制日志库执行恶意代码,这就是该漏洞的关键所在。
与此同时,幕后会发生很多事情。当 Log4j 接收到一个特殊构造的字符串时,它会调用 LDP 服务器,并下载托管在其目录中的代码以执行。这样,攻击者就可以创建一个 LDAP 服务器来存储恶意代码,从而帮助他们控制任何执行代码的服务器。然后,它会发送一个字符串,将他们的恶意代码引导至目标应用程序或系统,并完全控制它。
简而言之,Log4j 漏洞的利用方式如下:
- 攻击者找到一个运行着易受攻击的 Log4j 版本的服务器。
- 他们向目标服务器发送一个包含恶意 LDAP 服务器链接的请求。
- 目标服务器直接连接到该 LDAP 服务器,而没有验证请求。
- 攻击者随后向目标服务器发送包含恶意代码的 LDAP 服务器响应。由于 Log4j 的漏洞允许接收代码并在未经身份验证的情况下执行它,因此黑客可以利用这个弱点入侵目标服务器,并进一步控制连接的系统、网络和设备。
Log4j 漏洞如何危害用户?
Log4j 漏洞之所以令人担忧,是因为它被广泛应用于各种软件应用程序和系统中。
由于日志记录是大多数软件应用程序的基本功能,而 Log4j 是该领域的领先解决方案,因此 Log4j 的应用范围非常广泛。
一些使用 Log4j 的常用服务和应用程序包括 Minecraft、AWS、iCloud、Microsoft、Twitter、互联网路由器、软件开发工具、安全工具等等。因此,攻击者能够以家庭用户、代码开发人员、服务提供商以及其他相关专业人士和个人为目标,对大量应用程序、服务和系统发起攻击。
此外,Log4j 漏洞极易被攻击者利用。 整个攻击过程并不需要高超的技术,甚至不需要专家级别的技能。 这也是利用此漏洞的攻击数量不断上升的原因。
Log4j 漏洞的影响包括:
- 拒绝服务攻击
- 供应链攻击
- 加密货币挖矿
- 恶意软件注入,例如勒索软件和特洛伊木马
- 任意代码注入
- 远程代码执行
以及更多潜在风险。
由于这些攻击,您可能会失去对应用程序、系统和设备的控制,您的数据可能会被攻击者窃取,他们可能会出售、操纵或泄露您的数据。 因此,您的业务可能会在客户数据隐私、信任、组织机密性,甚至销售和收入方面受到损害,更不用说合规风险了。
据报道,全球超过 40% 的企业网络因此漏洞而遭受攻击。
因此,即使您的应用程序中没有使用任何易受攻击的 Log4j 版本,您的第三方集成也可能使用它,这会使您的应用程序暴露在攻击风险之下。
请注意,Log4j 2.17.0 之前的任何 Log4j 版本都受到了影响;因此,如果您正在使用记录器,则必须尽快进行升级。 此外,受到此 Log4j 漏洞影响的知名供应商包括 Adobe、AWS、IBM、Cisco、VMware、Okta、Fortinet 等。如果您正在使用其中任何一家供应商的产品,请务必持续监控您的应用程序,并尽快使用安全系统来修复出现的问题。
如何检测受 Log4j 影响的程序并修复问题
Log4Shell 漏洞的 CVSS 得分为 10 分。 目前,尚未完全解决 Log4j 中的所有问题。您或您的第三方供应商可能正在您的应用程序中使用 Log4j。
因此,如果您希望保护您的数据、系统和网络安全,请务必采取以下补救措施。
#1. 更新您的 Log4j 版本
如果您想保护您的设备和应用程序免受 Log4j 漏洞导致的攻击,将您当前的 Log4j 版本更新到 Log4j 2.17.1 是最有效的修复方法。
Log4Shell 是一种零日攻击,可能会影响您的整个软件生态系统。 Apache 已在最新版本中修复了一些漏洞,但如果您的系统在升级之前遭到入侵,您仍然存在风险。
因此,在升级版本的同时,您还必须立即启动事件响应程序,以确保您的系统和应用程序中没有漏洞并减轻攻击带来的影响。 您还必须查看所有服务器日志以查找入侵指标 (IOC) 并持续监控您的系统和网络。
#2. 使用最新的防火墙和安全系统
Web 应用程序防火墙 (WAF) 和下一代防火墙等防火墙可以通过扫描传入和传出的数据包并阻止可疑数据包来帮助保护您的网络外围免受攻击者的攻击。 因此,请在您的网络中使用最新的防火墙,并在您的服务器上设置严格的传出规则,以帮助防止与 Log4j 漏洞相关的攻击。
尽管攻击者可能会绕过防火墙,但通过防火墙您仍然可以获得一定程度的安全性,从而阻止攻击者的请求。
此外,请使用最新的签名和规则更新您的所有安全系统,例如入侵检测系统 (IDS)、入侵防御系统 (IPS) 等。这些系统将有助于阻止或过滤 RMI 和 LDAP 流量连接到恶意 LDAP 服务器。
#3. 实施 MFA
在您的应用程序和系统中设置多因素身份验证 (MFA) 将为攻击者提供更强大的安全保护。 即使攻击者设法破坏了第一层安全,它仍会提供第二层保护。您可以通过指纹、虹膜扫描等生物识别技术、设置安全问题或启用安全 PIN 来实现此操作。
使用 MFA 将增加攻击者执行全面攻击的难度和时间。同时,它还可以立即通知您事件发生情况,以便您及时采取必要的补救措施。
此外,您还必须应用严格的 VPN 策略,以减少数据泄露的风险。这将允许用户从任何地方安全地访问您的系统,而无需担心攻击者的威胁。
#4. 更改系统属性
如果您无法升级到最新版本的 Log4j 库,并且您使用的版本介于 Log4j 2.10 和 Log4j 2.14.1 之间,则必须立即更改您的 java 系统属性。
您必须以特定方式设置它,以阻止攻击者使用查找漏洞来发现漏洞,然后找到利用这些漏洞的方法。
#5. 删除 JNDI
该关键安全漏洞的根源在于其设计缺陷。 JNDI Lookup 插件存在设计上的缺陷,攻击者可以利用这个缺陷来发起攻击。
JNDI 用于根据其日志中的输入数据执行代码,任何人都可以轻松地对其进行操作,因为记录器无需验证即可接受任何请求。
安全研究人员发现,自 2013 年发布以来,该插件一直允许未解析的数据进入 Log4j 库。
因此,Log4j 漏洞很容易通过简单的字符串注入来利用。一旦攻击者注入了恶意代码,记录器将接受字符串中请求的操作,并在未经验证的情况下立即执行。
因此,如果您想保护您的系统和应用程序,则必须禁用该类——JndiLookup。 这将阻止记录器根据日志数据采取行动。
实际上,JNDI 查找在 Log4j 2.16.0 中已默认禁用,以更好地保护您的应用程序和系统。
因此,如果您使用的是低于 2.16.0 的 Log4j 版本,请确保您已禁用 JNDI 查找。
#6. 与您的供应商沟通
即使一切看起来都正常,例如更新了防火墙和安全系统,更新了 Log4j 版本,禁用了 JNDI 查找等等,也绝不能掉以轻心。
即使您的应用程序中没有使用易受攻击的 Log4j 版本,您的第三方供应商也可能正在使用它。 因此,您永远无法确定您的应用程序或系统是如何被黑客入侵的,因为真正的问题可能在于您的第三方集成。
因此,请务必与您的供应商沟通,确保他们也已将 Log4j 升级到最新版本,并采取了上述其他安全措施。
#7. 使用 Log4j 漏洞扫描程序
市场上有许多 Log4j 漏洞扫描工具,可以帮助您轻松地检测系统和应用程序中的 Log4j 漏洞。
因此,当您选择这些工具时,请务必注意它们的准确率,因为其中许多工具可能会产生误报。此外,找到一个能够满足您需求的工具,因为它们可能专注于识别 Log4j 漏洞、报告风险以及修复漏洞。
因此,如果您的主要目标是检测,请寻找能够检测问题的 Log4j 漏洞扫描程序,或者使用可以检测和修复漏洞的扫描程序。
一些最好的 Log4j 扫描工具包括:
- Microsoft 365 Defender:Microsoft 提供了一系列安全解决方案和工具,帮助您检测和防止网络中的 Log4j 漏洞。 您将能够发现远程代码执行和利用尝试,保护您免受 Windows 和 Linux 设备中 Log4j 漏洞的影响。
- Amazon Inspector 和 AWS:Amazon 开发了一款扫描工具,用于查找 Amazon EC2 实例和 Amazon ECR 中的 Log4j 漏洞。
- CloudStrike 存档扫描工具 (CAST):CloudStrike 还开发了一款出色的扫描工具来检测 Log4j 漏洞,以便您在攻击者利用它之前及时修复问题。
- Google Cloud Logging 检测:Google 的云日志检测解决方案允许您使用 Logs Explorer 来检测 Log4j 漏洞。 您可以在此工具中创建日志查询,并扫描潜在的漏洞利用字符串。
- 谷歌还创建了 log4jscanner,这是一个用于检测 Log4j 漏洞的开源文件系统扫描程序。
- BurpSuite Log4j Scanner:这是一个安全插件,供专业人士和企业使用,帮助他们检测 Log4j 漏洞。
- Huntress Log4Shell Vulnerability Tester:此工具随机生成一个唯一的标识符,您可以在测试输入字段时使用该标识符。 在应用程序或输入字段中发现漏洞后,其安全的 LDAP 服务器将立即终止恶意连接并确保您的安全。
- WhiteSource Log4j Detect:WhiteSource 创建了一个免费的 CLI 工具 WhiteSource Log4j Detect,托管在 GitHub 上,以帮助您检测和修复 Log4j 漏洞 – CVE-2021-445046 和 CVE-2021-44228。
- 用于 Log4j 的 JFrog 开源扫描工具:JFrog 创建了各种开源解决方案和工具,用于查找二进制文件和源代码中的 Log4j 漏洞。
结论
Log4j 漏洞是一个极其关键的安全问题。由于此日志库在各种应用程序和系统中被广泛使用,Log4j 漏洞已经变得非常普遍,并允许攻击者利用大量的系统和应用程序。
因此,如果您想保护您的系统和应用程序免受此漏洞的影响,请务必将 Log4j 库升级到最新版本,并采取上述最佳安全措施。