概述
此次 Apache Log4j2 漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成不安全的远程代码执行。
修复参考
bug大概的执行逻辑:
黑客在自己的客户端启动一个带有恶意代码的rmi服务,通过服务端的log4j的漏洞,向服务端的jndi context lookup的时候连接自己的rmi服务器,服务端连接rmi服务器执行lookup的时候会通过rmi查询到该地址指向的引用并且本地实例化这个类,所以在类中的构造方法或者静态代码块中写入逻辑,就会在服务端(jndi rmi过程中的客户端)实例化的时候执行到这段逻辑,导致jndi注入。
影响版本
2.0
官方补丁
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
Gitee地址
gitee的apache log4j 地址 https://gitee.com/apache/logging-log4j2/commits/log4j-2.15.0-rc2
https://gitee.com/apache/logging-log4j2/commits/master
临时解决方案
- 设置jvm参数 “-Dlog4j2.formatMsgNoLookups=true”
- 设置“log4j2.formatMsgNoLookups=True”
- 系统环境变量“FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS”设置为“true”
- 关闭对应应用的网络外连,禁止主动外连
问题详解视频
视频地址:https://b23.tv/k9dpbUT
修复方案
- 排除老的依赖,主要是 spring-boot-starter-log4j2的依赖,如果是其他依赖,单独提升版本即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<exclusions>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-jul</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-slf4j-impl</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
- 新增高版本依赖
<dependency>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
<version>2.15.0</version>
</dependency>
<dependency>
<artifactId>log4j-jul</artifactId>
<groupId>org.apache.logging.log4j</groupId>
<version>2.15.0</version>
</dependency>
<dependency>
<artifactId>log4j-slf4j-impl</artifactId>
<groupId>org.apache.logging.log4j</groupId>
<version>2.15.0</version>
</dependency>
<dependency>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
<version>2.15.0</version>
</dependency>
参考
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/100196.html