Microsoft应对Apache Log4j 2远程代码执行漏洞(CVE-2021-44228)的技术指南

本文详细解析了Apache Log4j 2远程代码执行漏洞(CVE-2021-44228)的技术细节,提供了微软各云服务的具体缓解措施,包括Azure系列产品、SQL Server、Minecraft等受影响组件的修复方案,并给出了安全运营团队的检测建议。

漏洞概述

微软持续分析2021年12月9日披露的Apache Log4j(众多Java应用使用的日志工具)远程代码执行漏洞。目前除Minecraft: Java Edition外,微软企业服务尚未发现受影响案例。

安全团队正在分析所有产品和服务,识别并修复CVE-2021-44228和CVE-2021-45046漏洞实例。受影响微软产品已在安全更新指南发布补丁。

修复方案

安全更新建议

  • Java 8+:升级至Log4j 2.16.0+
  • Java 7:升级至Log4j 2.12.2+

已升级至2.15.0的系统应尽快升级至2.16.0以获得CVE-2021-45046的额外防护

临时缓解措施

  1. 从classpath删除JndiLookup.class:
1
$ zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
  1. 对于Log4j 2.10-2.14.1:
  • 设置JVM参数:-Dlog4j2.formatMsgNoLookups=true
  • 或设置环境变量:LOG4J_FORMAT_MSG_NO_LOOKUPS=true
  1. Kubernetes集群可通过命令批量设置:
1
kubectl set env --all LOG4J_FORMAT_MSG_NO_LOOKUPS=true

微软云服务专项指南

Azure应用服务

1
2
3
4
$ az webapp config appsettings set \
 --resource-group <group-name> \
 --name <app-name> \
 --settings LOG4J_FORMAT_MSG_NO_LOOKUPS=true

Azure Functions

消耗计划

  • Linux:设置languageWorkersjavaarguments="-Dlog4j2.formatMsgNoLookups=true"
  • Windows:设置languageWorkers:java:arguments="-Dlog4j2.formatMsgNoLookups=true"

Azure HDInsight

  • 2021年12月16日前创建的集群已自动修补
  • 新集群需执行修补脚本后重启节点:
1
https://hdiconfigactions.blob.core.windows.net/patch-log4j-cve/patch-log4j-cve-2021-44228-all-rev2.sh

SQL Server大数据集群

设置Elasticsearch环境变量:

1
LOG4J_FORMAT_MSG_NO_LOOKUPS=true

安全运营建议

  1. 使用Microsoft Defender检测攻击活动
  2. 检查日志中的异常JNDI请求
  3. 监控异常网络连接(特别是LDAP/RMI协议)
  4. 实施最小权限原则

完整检测指南详见:Microsoft安全博客

时间线

  • 2021/12/11:首次发布
  • 2021/12/16:新增HDInsight指南
  • 2022/04/06:补充Azure Bot服务说明
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计