vulnerabilities

Apache Log4j3 远程代码执行漏洞(CVE-2021-44228)分析与修复方案

ryan·Jan 09, 2025

【基本信息】

  • 漏洞编号:CVE-2021-44228
  • 威胁等级:危急 (CVSS v3.0 评分:10.0)
  • 影响版本:Apache Log4j2 2.0-beta9 至 2.14.1
  • 漏洞类型:远程代码执行 (RCE)
  • 受影响组件:log4j-core
  • 验证状态:已验证
  • 修复状态:官方已发布修复版本

【漏洞描述】
Apache Log4j2中存在JNDI注入漏洞,攻击者可以通过构造恶意的JNDI LDAP请求实现远程代码执行,获取服务器控制权。由于Log4j2被广泛应用于各类Java应用中,该漏洞影响范围极其广泛,利用门槛低,威胁程度高。

【影响范围】

  1. 影响版本
    • Apache Log4j 2.0-beta9 through 2.14.1
  2. 受影响产品
    • SpringBoot框架项目
    • Apache Struts2
    • Apache Solr
    • Apache Druid
    • ElasticSearch
    • Minecraft服务器
    • 所有使用受影响版本Log4j2的Java应用

【漏洞利用条件】

  1. 目标系统使用了受影响版本的Log4j2组件
  2. 应用程序将用户输入数据进行日志记录
  3. 目标系统能够发起外部网络请求

【威胁等级判定依据】

  1. 攻击复杂度低
  2. 无需认证即可利用
  3. 影响范围广
  4. 可造成远程代码执行
  5. 利用代码公开

【检测方法】

  1. 版本检测:

    • 检查pom.xml文件中log4j-core的版本
    • 检查lib目录下log4j-core-*.jar的版本
  2. 主动检测:

    • 检查系统是否存在相关日志组件
    • 使用漏洞扫描工具进行验证
    • 审查应用程序依赖项清单

【修复方案】

  1. 版本升级(推荐)
    将Log4j2升级到2.15.0或更高版本

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.15.0</version>
    </dependency>
    
  2. 临时缓解措施

    • 设置系统环境变量:

set LOG4J_FORMAT_MSG_NO_LOOKUPS=true


    • 删除JndiLookup类:
      zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
      

【修复建议】

  1. 立即评估系统是否受影响
  2. 制定应急修复计划
  3. 优先修复互联网暴露系统
  4. 建立漏洞修复验证机制
  5. 保存相关修复日志

【最佳实践建议】

  1. 建立第三方组件管理机制
  2. 定期进行依赖项安全扫描
  3. 实施最小权限原则
  4. 加强日志监控和审计
  5. 及时跟踪安全公告

【参考链接】

  1. Apache官方公告
  2. CISA安全公告
  3. 微步在线威胁情报中心
  4. NVD漏洞库详情