最新消息:

Log4j2漏洞修复指南 (Log4J2 Vulnerability fix guideline)

网络分享 moshowgame 1504浏览 0评论

前言
一句话总结issue:如果你使用的是 Log4j 1.x、Logback 或者其他日志框架,这次就可以幸免于难。如果你使用Spring Boot默认日志,也是没有问题的,因为默认是Commons Logging。
一句话修复solution:升级springboot到最新v2.5.8和v2.6.2以及后续版本,确保安全;如果单独依赖了log4j2日志,请强制使用最新版本v2.15.0换切换其他日志系统或者追加参数-Dlog4j2.formatMsgNoLookups=true。

UPDATE:
2021/12/14 09:30 新增RCA
2021/12/14 22:00 官方已推送中央仓库2.16.0版本

log4j 2.16.0 MVNREPOSITORY
官方指南Log4J2 Vulnerability and Spring Boot

背调
正如您在新闻中所看到的,针对流行的 Log4J2 库的新零日漏洞利用已被报道,该库可允许攻击者远程执行代码。 该漏洞已通过针对 log4j-core jar 的 CVE-2021-44228 报告,并已在 Log4J v2.15.0 中修复。

在这里插入图片描述
此漏洞由Lookup功能引发,Log4j在默认情况下会开启Lookup功能,提供给客户一种添加特殊值到日志中的方式。此功能中也包含了对JNDI的Lookup,但由于Lookup对加载的JNDI内容未做任何限制,使得攻击者可以通过JNDI注入实现远程加载恶意类到应用中,从而造成RCE。

在这里插入图片描述
漏洞定位: log4j的真正漏洞代码出现在log4j-core的子组件。修复其他组件不一定能有效消除漏洞。很多产品都产生了误报的行为,但是为了安全起见,建议使用专业的分析平台或者强制升级比较稳妥,以绝后患。

 

Spring Boot 用户如何处理
Spring Boot 用户只有在将默认日志系统切换到 Log4J2 时才会受到此漏洞的影响。 我们包含在 spring-boot-starter-logging 中的 log4j-to-slf4j 和 log4j-api jar 不能被单独利用。 只有使用 log4j-core 并在日志消息中包含用户输入的应用程序容易受到攻击。

Spring Boot 即将发布的 v2.5.8 和 v2.6.2 版本(2021 年 12 月 23 日到期)将采用 Log4J v2.15.0,但由于这是一个如此严重的漏洞,您可能希望覆盖我们的依赖项管理并尽快升级您的 Log4J2 依赖项。

Maven 处理log4j2指南
对于 Maven 用户,您可以按照这些说明进行设置 log4j2.version 属性.

<properties>
<log4j2.version>2.15.0</log4j2.version>
</properties>

如何确认是否成功修复?运行 ./mvnw dependency:list | grep log4j检测版本是否为2.15.0.

通过JVM参数处理漏洞
如果程序/系统很难升级,则可以选择追加参数避免该漏洞。
设置log4j2.formatMsgNoLookups系统参数为true即可
例如

java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar.

powered by zhengkai.blog.csdn.net

如何查看框架的log4j版本
可以通过maven仓库分解对应的log4j版本
https://mvnrepository.com

Jfinal与log4j漏洞有关吗
例如Jfinal,可以通过maven仓库分解对应的log4j版本
https://mvnrepository.com/artifact/com.jfinal/jfinal/4.1

拆解得知是1.2.16,安全!

如果你使用最新版本4.9.7,也是安全的,因为用的还是1.2.x
https://mvnrepository.com/artifact/com.jfinal/jfinal/4.9.17

spring-boot-starter-logging
可以到 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-logging/2.5.7

例如你使用了spring-boot-starter-logging 2.5.7 ,包含了log4j的2.14.1版本,还是相当危险,最好等待官方发最新 2.5.8

其他情况
欢迎讨论和补充!

使用Scantist SCA检测及分析
Scantist SCA平台 https://scantist.io , 来源

为了解决开源软件的漏洞检测和管理的问题,Scantist SCA产品是一套完整的解决方案,同时支持源码和二进制扫描,通过提供对应用程序软件供应链的更大可视性,主动帮助企业管理开源库的安全性和合规性风险。Scantist SCA通过分析软件应用程序中已知的第三方库和组件的特殊签名,并与漏洞和许可证数据库进行交叉对比,以识别软件开发和部署阶段中的安全隐患。

分析报告

加更:Log4J 2.16.0修复版发布
修复Log4J2 Vulnerability问题

log4j 2.16.0 MVNREPOSITORY

更新内容:

删除了消息Lookups。目的是采取强化措施以防止 CVE-2021-44228,此举措不是修复 CVE-2021-44228所必须的。

虽然版本 2.15.0 删除了处理Lookups和利用JNDI从日志消息和地址访问的问题,Log4j团队认为默认启用 JNDI 会引入未知的风险。从版本 2.16.0 开始,JNDI 功能是默认情况下禁用,可以通过 log4j2.enableJndi重新启用系统属性。在不受保护的上下文中使用 JNDI 是一个很大的问题 安全风险,应该在这个库和 所有其他使用 JNDI 的 Java 库。

在 2.15.0 版本之前,Log4j 会在模式布局(Pattern Layout)中包含的消息或参数中自动解析 Lookups。这行为不再是默认值,必须通过指定启用%msg{lookup}。:

修正错误

LOG4J2-3208:默认禁用 JNDI。需要 log4j2.enableJndi设置为 true 以允许 JNDI。 LOG4J2-3211:完全删除对消息查找的支持。

Apache Log4j 2.16.0 至少需要 Java 8 才能构建和运行。Log4j 2.12.1 是最后一个支持 Java 7 的版本。Java 7 不是Log4j 团队的长期支持版本。

有关 Apache Log4j 2 的完整信息,包括有关如何提交错误报告、补丁或改进建议,请参阅 Apache Apache Log4j 2 网站:

https://issues.apache.org/jira/browse/LOG4J2-2975

https://logging.apache.org/log4j/2.x/download.html

免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。丨本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途。丨本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权BY-NC-SA协议进行授权

转载请注明:永恒心锁-分享互联网 » Log4j2漏洞修复指南 (Log4J2 Vulnerability fix guideline)

您必须 登录 才能发表评论!