Log4j漏洞深度回顾系列之一:攻击背景​

Log4j漏洞深度回顾系列之一:攻击背景​

2023-11-10 10:08:23

云计算 Akamai将结合自身技术团队的了解,Akamai与全球客户合作过程中应对该漏洞和其他安全隐患所积累的经验,以及Akamai对整个互联网流量的洞察,向大家介绍Log4j漏洞的起因、传播范围、利用方式、演变路径。

开源日志记录工具Apache Log4j曾被爆出一个严重的远程代码执行漏洞,攻击者可以借此构造恶意请求,触发远程恶意代码的执行。消息爆出后,该漏洞引起了极大的关注。小半年过去了,相关热度逐渐消退,是时候对整个过程进行一个彻底的总结回顾,并从中吸取教训,避免以后再遭遇类似的问题。

加入Client-Side Protection & Compliance,防范每一次用户数据外泄!

符合 PCI DSS v4.0 标准,助您严防网站恶意代码和漏洞!

进一步了解Akamai的网络安全服务方案!

这一系列文章总共分为四篇,Akamai将结合自身技术团队的了解,Akamai与全球客户合作过程中应对该漏洞和其他安全隐患所积累的经验,以及Akamai对整个互联网流量的洞察,向大家介绍Log4j漏洞的起因、传播范围、利用方式、演变路径,以及最重要的:我们所有人都需要从中吸取的教训。

这就开始吧,本篇主要介绍Log4j漏洞的一些背景信息。

一、时间线

2021年11月24日,Apache基金会接到通知,称已被广泛使用的,基于Java的日志库工具Log4j存在重大漏洞,可能导致隐私信息泄漏和远程代码执行(RCE)。而该漏洞自2013年就一直存在了。

第二天,Apache基金会保留了CVE-2021-44228并开始研究解决方案。接下来的12天里,为了解决此问题,他们对源代码进行了多处修改,并于2021年12月9日公开披露了这个漏洞。

公布后,围绕该漏洞开始出现如洪水般的攻击尝试,并且在那之后,攻击规模和范围一直以惊人的速度增长。

二、Log4j到底是什么?

要真正理解该漏洞,首先需要知道Log4j到底是什么。Log4j是Java社区中一个被开发者广泛使用的库,提供了一个简单但强大的框架,可用于记录错误信息、诊断信息等。

Log4j提供了很多让人印象深刻的功能,其中之一是将日志记录至多个目标位置,包括但不限于控制台、文件、远程TCP服务器、Syslog、NT Event Log以及电子邮件。此外,它还支持对日志消息、日志事件、自定义布局等内容进行分层过滤。

简而言之,Log4j提供了完整丰富的功能,使其受到开发者的广泛欢迎,从而导致从Web应用程序到嵌入式设备,各种地方都能见到Log4j的身影。

三、查找和嵌套

Log4j支持多种强大功能,其中最知名的功能之一应该是查找(Lookup)。该功能使得开发者可以将变量或表达式嵌入到Log4j在进行输出之前自动评估的文本中。例如,开发者可以编写代码将下列文本记入日志:

“${date:MM-dd-yyyy} All Systems Good”

Log4j会将其中的模式${date:MM-dd-yyyy}识别为一种日志查找,并尽职地将该表达式替换为“今天”的日期。举例来说,如果今天是2021年12月20日,那么在将上述日志输出到目标位置前,Log4j会将其内容改为:

“12-20-2021 All Systems Good”

对开发者来说这很方便。如果不使用这种功能,开发者必须手工编写代码查询日期,将格式调整为字符串,将其附加到日志行,然后输出。尽管这样的代码写起来并不麻烦也不费事,但毕竟与软件的核心业务逻辑毫无关系,并且最终也会在一个个项目中不断延续下去。

通过使用Log4j库中现成的功能,开发者可以专注于项目中更重要的开发工作,让Log4j处理与日志有关的各种任务。

Log4j支持很多这种类型的查找表达式。让我们再来看看另外两个与本文内容密切相关的:env和lower。env可以将主机系统上的环境变量包含到日志行中。例如,开发者可以将下列文本记入日志:

“The current user is ${env:USER}”

假设软件正在以管理员用户的身份运行,上述日志会输出如下的内容:

“The current user is Administrator”

与将新数据注入文本的env和date不同,lower可用于操作已经存在的内容。Log4j会直接将表达式中出现的英文字母转换为小写形式。例如:

“The lower case text is ${lower:ABCDEFG}”

会输出为:

“The lower case text is abcdefg”

这个例子本身似乎感觉没什么意义,为何不自己将字母转换为小写呢?别忘了,Log4j还允许将查找表达式嵌套在一起,此时就厉害了。

我们可以将前两个表达式嵌套为这种形式:

“The lower case current user is ${lower:${env:USER}}”

这会导致Log4j首先将${env:USER}表达式评估为Administrator,随后将其送入lower,产生小写的administrator,最终会输出如下的内容:

“The lower case current user is administrator”

四、JNDI

虽然date、env和lower都很有趣并且实用,但这个漏洞之所以能够存在,还离不开JNDI查找。JNDI(Java Naming and Directory Interface,Java命名和目录接口),是一种内置于Java开发和运行时环境中的机制,可通过一个通用接口以简单的方式查询各种目录服务中的信息。

实际上,可支持的目录服务分为多种类型。例如,JNDI支持查询DNS服务器以发现主机的IP地址,并能查询AD和LDAP中的目录实体。它甚至支持查询正在运行中的Java环境本身以获取Environmental Entries,例如当前正在运行的软件的专用配置选项。

Log4j中的JNDI查找表达式可供开发者通过日志文本中嵌入的表达式直接访问这个极为强大的子系统。举例来说,如果开发者试图将下列字符串记入日志:

“The current mail host is ${jndi:java:comp/env/mailhost}”

Log4j会将${jndi:java:comp/env/mailhost}表达式识别为JNDI查找,并将java:comp/env/mailhost这个伪URL传递给JNDI子系统。JNDI会将这种特定的URL类型识别为查询,进而在当前运行的组件查找一个名为mailhost的配置选项。

假设该选项被配置为http://mymailserver.example.com,JNDI会将该信息回传给Log4j,随后Log4j会将查找表达式替换为http://mymailserver.example.com,并产生如下的输出结果:

“The current mail host is mymailserver.example.com”

五、理解该漏洞的存在

简而言之,Apache Log4j的这个漏洞为攻击者提供了一种重大的机会,因为该库广受欢迎,尤其是其查找、嵌套和JNDI功能更是如此。虽然这些功能为开发者提供了很大的便利,但也催生了可能借此通过请求泄漏数据或导致远程代码执行的机会。了解这些背景信息后,我们可以开始更好地理解这个漏洞,以及攻击者的利用方式了。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/230814.html<

赞 (0)
管理的头像管理
上一篇2025-04-19 10:05
下一篇 2025-04-19 10:06

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注