长亭百川云 - 文章详情

Apache log4j2远程代码执行(JNDI注入)漏洞修复和影响缓解

毕方安全实验室

57

2024-07-13

0x01 缓解措施

log4j2版本>=2.10的情况使用如下缓解措施:

1、环境变量中增加如下配置:
LOG4J_log4j2.formatMsgNoLookups=true

2、项目classpath下新建配置文件log4j2.component.properties,内容如下:
log4j2.formatMsgNoLookups=true

3、jvm虚拟机选项中通过-D加载如下参数配置;
-Dlog4j2.formatMsgNoLookups=true

如图所示:

需要注意的是,以上三种方式可以任选其一进行配置缓解,如果同时使用了2种及以上的情况,要注意优先级权重。jvm的权重最高,其次是log4j2.component.properties配置文件,最后是环境变量。最终是否受漏洞影响,以权重高的设置项为准。或者将几个配置都设置为true,就无需考虑优先级权重得问题。

在看官方的相关文档中,说到了配置会覆盖的情况,没太理解是什么意思。按照字面意思理解配置文件和环境变量的设置可以覆盖jvm的设置,环境变量的设置可以覆盖配置文件的设置,实际测试过程中并没有覆盖。

当受影响的log4j2<2.10版本时,可以用如下缓解措施:

在项目src目录中的配置文件log4j2.xml中,修改PatternLayout的值,如下:

<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg{nolookups}%n"/>  
或  
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m{nolookups}%n"/>  
  
完整得文件:  
<?xml version="1.0" encoding="UTF-8"?>  
<Configuration status="WARN">  
    <Appenders>  
        <!-- 默认打印到控制台 -->  
        <Console name="Console" target="SYSTEM_OUT">  
            <!-- 关键内容 -->  
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg{nolookups}%n"/>  
        </Console>  
    </Appenders>  
    <Loggers>  
        <!-- 默认打印日志级别为 error -->  
        <Root level="error">  
            <AppenderRef ref="Console"/>  
        </Root>  
    </Loggers>  
</Configuration>  

另外log4j2.xml中中有配置默认得打印日志级别,如上文配置的日志打印级别是error,如果上面这样配置,info、warn之类的日志打印就不会触发漏洞。具体的日志打印级别说明:

共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.  
  
All:最低等级的,用于打开所有日志记录.  
Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.  
Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.  
Info:消息在粗粒度级别上突出强调应用程序的运行过程.  
Warn:输出警告及warn以下级别的日志.  
Error:输出错误信息日志.  
Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.  
OFF:最高等级的,用于关闭所有日志记录.  
  
程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。  

也就是说如果配置打印级别为最高得OFF, 通过这种粗暴方式也是可以缓解漏洞影响的,只是业务中就不会有一些相关的日志输出了,如下:

`<Loggers>       <!-- 日志打印级别设置成了off -->       <Root level="off">           <AppenderRef ref="Console"/>       </Root>   `

`</Loggers>`


0x02 参考链接

https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/configuration.adoc

https://logging.apache.org/log4j/2.x/manual/lookups.html

https://www.cnblogs.com/new-life/p/9246143.html

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2