Apache Log4j 2 ​远程代码执行漏洞 ( CVE-2021-44228 )​

Microsoft 继续分析2021 年 12 月 9 日披露的与 Apache Log4j(许多基于 Java 的应用程序中使用的日志记录工具)相关的远程代码执行漏洞 ( CVE-2021-44228 )​。该漏洞是一种远程代码执行漏洞,可以让未经身份验证的攻击者获得对目标系统的完全访问权限。当易受攻击的 Log4j 2 组件解析和处理特制字符串时,可以触发它。这可能通过任何用户提供的输入发生。

该漏洞编号为CVE-2021-44228,称为“Log4Shell”,影响使用 Log4j 2 版本 2.0 到 2.14.1 的基于 Java 的应用程序。Log4j 2是一个基于Java的日志库,广泛用于业务系统开发,包含在各种开源库中,直接嵌入到各大软件应用中。影响范围已扩展到数千种产品和设备,包括 Struts 2、Solr、Druid、Flink 和 Swift 等 Apache 产品。由于此漏洞位于 Java 库中,因此 Java 的跨平台特性意味着该漏洞可在许多平台上利用,包括 Windows 和 Linux。由于许多基于 Java 的应用程序可以利用 Log4j 2,因此组织应联系应用程序供应商或确保其 Java 应用程序运行的是最新版本。

微软针对 CVE-2021-44228​给出的解决方法:

应用最新的安全更新

为了解决此漏洞,Microsoft 建议客户应用最新的安全更新来修复此漏洞。请查看 Apache CVE 和 Apache 安全公告以获取更多详细信息:

所有系统,包括那些不面向客户的系统,都可能容易受到这种攻击,因此后端系统和微服务也应该升级。推荐的操作是将 Log4j 2 更新到 2.15.0。将需要重新启动服务。

变通解决方法

为了帮助降低此漏洞的风险,直到可以应用更完整的安全更新,客户应考虑以下缓解步骤。这些更改需要重启服务才能生效。这些变通办法不应被视为解决此漏洞的完整解决方案:

  • 如果无法更新 Log4j 2 易受攻击的组件,Log4J 2 版本 2.10 到 2.14.1 支持将参数 log4j2.formatMsgNoLookups 设置为“true”,以禁用易受攻击的功能。确保在 Java 虚拟机的启动脚本中配置了此参数: 
    -Dlog4j2.formatMsgNoLookups=true。
  • 或者,使用 Log4j 2.10 到 2.14.1 的客户可以设置 LOG4J_FORMAT_MSG_NO_LOOKUPS="true" 环境变量来强制进行此更改。
  • Kubernetes 管理员可以使用“kubectl set env”来设置 LOG4J_FORMAT_MSG_NO_LOOKUPS=”true” 环境变量,以在 Java 应用程序运行 Log4j 2.10 到 2.14.1 的 Kubernetes 集群中应用缓解措施,有效地自动反映所有 pod 和容器。
  • 对于从 2.0-beta9 到 2.10.0 的版本,缓解措施是从类路径中删除 JndiLookup 类: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

Apache Log4j 2 官方解释:安全漏洞CVE-2021-44228


The Log4j team has been made aware of a security vulnerability, CVE-2021-44228, that has been addressed in Log4j 2.15.0.

Log4j团队已意识到一个安全漏洞CVE-2021-44228,该漏洞已在Log4j 2.15.0 中解决。


Log4j’s JNDI support has not restricted what names could be resolved. Some protocols are unsafe or can allow remote code execution. Log4j now limits the protocols by default to only java, ldap, and ldaps and limits the ldap protocols to only accessing Java primitive objects by default served on the local host.

Log4j的JNDI支持并没有限制可以解析的名称。某些协议不安全或允许远程代码执行。Log4j现在默认情况下仅将协议限制为java、ldap和ldap,并将ldap协议限制为仅访问本地主机上提供的java基本对象。


One vector that allowed exposure to this vulnerability was Log4j’s allowance of Lookups to appear in log messages. As of Log4j 2.15.0 this feature is now disabled by default. While an option has been provided to enable Lookups in this fashion, users are strongly discouraged from enabling it.

允许暴露此漏洞的一个向量是Log4j允许在日志消息中出现查找。从Log4j 2.15.0开始。默认情况下,此功能现在已禁用。虽然提供了一个选项来以这种方式启用查找,但强烈建议用户不要启用它。


For those who cannot upgrade to 2.15.0, in releases >=2.10, this vulnerability can be mitigated by setting either the system property log4j2.formatMsgNoLookups or the environment variable LOG4J_FORMAT_MSG_NO_LOOKUPS to true. For releases from 2.7 through 2.14.1 all PatternLayout patterns can be modified to specify the message converter as %m{nnolookups} instead of just %m. For releases from 2.0-beta9 to 2.10.0, the mitigation is to remove the JndiLookup class from the classpath:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

对于无法升级到2.15.0的用户。在版本>=2.10时,可以通过设置系统属性log4j2来缓解此漏洞。formatMsgNoLookups或环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS为true。对于从2.7到2.14.1的版本。对于从2.0-beta9到2.10.0的版本,可以修改所有PatternLayout模式,将消息转换器指定为%m{nnolookups},而不是仅指定为%m。缓解措施是从类路径中删除JndiLookup类:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class。

参考文献:Log4j – Apache Log4j 2              Microsoft’s Response to CVE-2021-44228 Apache Log4j 2 – Microsoft Security Response Center

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Apache Log4j2是一个广泛使用的开源日志管理工具。然而,最近发现了一个严重的漏洞,被命名为CVE-2021-44228。这个漏洞允许攻击者通过恶意构造的日志事件来执行任意代码,导致系统被远程攻击者完全控制。 漏洞是由于Log4j2中的PatternLayout布局处理器存在一个特定的模式转换字符(%d、%i、%m、%p等)被恶意利用的问题。攻击者可以将恶意代码嵌入到日志事件中,并通过向受影响的Log4j2实例发送恶意请求触发此漏洞。一旦攻击成功,攻击者可以在受影响的应用程序上执行任意的远程代码。 这个漏洞的危害性非常高,因为日志功能几乎在每个应用程序中都得到广泛使用。攻击者可以通过恶意日志事件执行各种攻击,包括远程命令执行、数据库注入、代码执行等。受影响的应用程序可能会泄露敏感数据、遭受损坏甚至被完全控制。 解决这个漏洞的最佳方法是升级到Log4j2的最新版本。Apache已经发布了修复此漏洞的版本,更具体地说是2.15.0和2.16.0,这些版本不再处理这类模式转换字符。如果无法立即更新,可以考虑在应用程序中禁用PatternLayout布局处理器,或者使用其他日志管理框架替代Log4j2。 此外,还建议及时监测应用程序的日志活动,并对异常的日志事件进行审查。如果遇到可疑的日志事件,应立即采取行动,例如暂停相关服务、排查日志事件来源、加强网络安全防护等。 总之,Apache Log4j2的CVE-2021-44228漏洞是一个严重的安全威胁,可能导致系统被完全控制。及时升级到修复版本、加强监控和审查日志活动是应对该漏洞的关键步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雕技小虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值