Log4j漏洞修复方案

一、产生原因

Log4j漏洞产生原因是因为Log4j2核心库中存在一个基于JNDI的任意代码执行漏洞,通过恶意构造特定的Class路径变量,攻击者便可控制JNDI上下文,最终在应用中任意执行代码。

这个问题的出现是源于Log4j2中的JNDI Lookup,这个Lookup是在默认的情况下启用的。在高版本的log4j中已经关闭了JNDI Lookup,但1.x版本中这个设置默认是开启的。

二、漏洞影响范围

这个漏洞在log4j2.0-2.14.1版本之间,log4j-core组件中存在,当组件中与JNDI Query交互时,便会存在远程攻击的可能性。

三、漏洞防御方案

1、更新log4j版本

参考官方的建议,更新log4j-core组件并且把相关的被动依赖也需跟着更新。更新版本号如下:

log4j-core      2.15.0
log4j-api       2.15.0
log4j-jul       2.15.0
log4j-slf4j-impl        2.15.0
log4j-web       2.15.0
log4j-over-slf4j        2.15.0

2、关闭JNDI Lookup

假如不想更新log4j版本,可关闭JNDI Lookup,可以手动修改配置项,禁用JNDI Lookup来避免这个问题。

<Properties>
    <Property name="log4j2.formatMsgNoLookups">true</Property>
</Properties>

或者直接禁用掉JNDI Lookup:

<Properties>
    <Property name="log4j2.formatMsgNoLookups">true</Property>
</Properties>

<Loggers>
    <Root level="info">
        <AppenderRef ref="File"/>
    </Root>
    <Logger name="org.apache.logging.log4j" level="WARN"/>
    <Logger name="com.acme" level="DEBUG">
        <AppenderRef ref="Console"/>
    </Logger>
</Loggers>

可以发现,关闭JNDI Lookup只需要在log4j2.xml文件中新增一段<Logger name="org.apache.logging.log4j" level="WARN"/>即可。

四、修复的代码示例

更新log4j-core组件或者禁用掉JNDI Lookup这两种方法都可以修复这个漏洞。修改log4j2的配置文件,添加一个Logger配置来禁用JNDI Lookup,代码如下:

<Properties>
    <Property name="log4j2.formatMsgNoLookups">true</Property>
</Properties>
<Loggers>
    <Root level="info">
        <AppenderRef ref="Console"/>
    </Root>
    <Logger name="org.apache.logging.log4j" level="WARN"/>
</Loggers>

此配置省略了默认的<Appenders>标签,使日志控制台输出到终端。

五、总结

本文介绍了Log4j漏洞的产生原因、影响范围以及漏洞修复方案。为保证代码安全,建议在项目中使用较新的log4j版本或禁用JNDI Lookup功能。

原创文章,作者:WRBC,如若转载,请注明出处:https://www.506064.com/n/137721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WRBC的头像WRBC
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:18

相关推荐

  • KeyDB Java:完美的分布式高速缓存方案

    本文将从以下几个方面对KeyDB Java进行详细阐述:KeyDB Java的特点、安装和配置、使用示例、性能测试。 一、KeyDB Java的特点 KeyDB Java是KeyD…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • Log4j日志打印到Systemout.log

    Log4j是Apache的一个强大的日志组件,可以帮助开发者更好地管理日志。在Java应用程序中,很多开发者都会选择使用Log4j来实现日志输出。本文将介绍如何使用Log4j将日志…

    编程 2025-04-28
  • Python性能优化方案

    本文将从多个方面介绍Python性能优化方案,并提供相应的示例代码。 一、使用Cython扩展 Cython是一个Python编译器,可以将Python代码转化为C代码,可显著提高…

    编程 2025-04-28
  • Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901解析

    本文将对Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901进行详细解析,并提供相关代码示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    编程 2025-04-27
  • NB设备上传数据方案

    NB(Narrow Band)是一种物联网通信技术,可以实现低功耗、宽覆盖、多连接等特点。本文旨在探讨如何使用NB设备上传数据。在这篇文章中,我们将介绍NB设备上传数据的基本原理、…

    编程 2025-04-27
  • Python漏洞挖掘全指南

    本文将从多个方面详细阐述Python漏洞挖掘的相关知识,帮助开发工程师了解并掌握漏洞挖掘的基础知识和实战技巧。 一、漏洞类型 漏洞是指误用或设计上的错误,可导致产品、应用或系统中存…

    编程 2025-04-27
  • Android和Vue3混合开发方案

    本文将介绍如何将Android和Vue3结合起来进行混合开发,以及其中的优势和注意事项。 一、环境搭建 在进行混合开发之前,需要搭建好相应的开发环境。首先需要安装 Android …

    编程 2025-04-27
  • Rappor——谷歌推出的安全数据收集方案

    Rappor是一种隐私保护技术,可以在保持用户私密信息的前提下,收集用户的随机信号数据。它可以用于应对广泛的数据收集需求,让用户在参与数据收集的过程中感到安全和安心。 一、Rapp…

    编程 2025-04-27
  • Coremail 漏洞详解

    Coremail是国内主流的企业邮件服务器软件,2018年曝出多个漏洞。本文将详细阐述Coremail漏洞的危害,漏洞种类和利用方法。同时提供完整的代码示例,帮助读者更加深入地了解…

    编程 2025-04-25

发表回复

登录后才能评论