昨天,你应急了吗?

昨晚,对很多程序员来说可能是一个不眠之夜。12 月 10 日凌晨,Apache 开源项目 Log4j 的远程代码执行漏洞细节被公开,由于 Log4j 的广泛使用,该漏洞一旦被攻击者利用会造成严重危害。

据悉,Apache Log4j 2.x <= 2.14.1 版本均回会受到影响。根据“微步在线研究响应中心”消息,可能的受影响应用包括但不限于:Spring-Boot-strater-log4j2、Apache Struts2、Apache Solr、Apache Flink、Apache Druid、Elasticsearch、Flume、Dubbo、Redis、Logstash、Kafka 等。很多互联网企业都连夜做了应急措施。

1 lookup 功能造成的漏洞

Log4j 是一款开源 Java 日志记录工具。日志记录主要用来监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。因此,对于程序员来说,日志记录非常重要。

在强调可重用组件开发的今天,Apache 提供的强有力的日志操作包 Log4j。Log4j 可以轻松控制 log 信息是否显示、log 信息的输出端类型、输出方式、输出格式,更加细致地控制日志的生成过程,而其通过配置文件可以灵活地进行配置而不需要大量的更改代码。因此,很多互联网企业都选择使用 Log4j 。

2014 年,Log4j 2 发布。Log4j 2 是对 Log4j 的重大升级,完全重写了 log4j 的日志实现。Log4j 2 提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题,目前已经更新到 2.15.0 版本。

Log4j2 也支持 SLF4J,可以自动重新加载日志配置,并支持高级过滤选项。此外它还允许基于 lambda 表达式对日志语句进行延迟评估,为低延迟系统提供异步记录器,并提供无垃圾模式以避免由垃圾收集器操作引起的任何延迟。通过其他语言接口,企业也可以在 C、C++、.Net、PL/SQL 程序中使用 Log4j。

此次漏洞的出现,正是由用于 Log4j 2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。“微步在线研究响应中心”做了漏洞复现:

简单来说,就是在打印日志时,如果发现日志内容中包含关键词 ${,那么这个里面包含的内容会当做变量来进行替换,导致攻击者可以任意执行命令。详细漏洞披露可查看:https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues

由于线上 web 业务的任何数据都可能写入 Log4j,甚至一些 pre-auth 的地方,比如注册、登录,实际攻击入口取决于业务具体情况。目前百度搜索、苹果 iCloud 搜索、360 搜索等都出现了该问题。

12 月 10 日上午,阿里云安全团队再次发出预警,发现 Apache Log4j 2.15.0-rc1 版本存在漏洞绕过,建议及时更新至最新 Apache Log4j 2.15.0 版本。

对于这次漏洞,有网友评价说道,“可以说是灾难性的漏洞,比之前的 fastjson 和 shiro 还要严重,这个漏洞估计在之后三四年内还会继续存在….”

2 快速检测及修复方案

针对此次漏洞,也给出了一些应急方案。

1. 紧急缓解措施

(1)修改 jvm 参数 -Dlog4j2.formatMsgNoLookups=true
(2)修改配置 log4j2.formatMsgNoLookups=True
(3)将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true

2. 检测方案

(1)由于攻击者在攻击过程中可能使用 DNSLog 进行漏洞探测,建议企业可以通过流量监测设备监控是否有相关 DNSLog 域名的请求,微步在线的 OneDNS 也已经识别主流 DNSLog 域名并支持拦截。
(2)根据目前微步在线对于此类漏洞的研究积累,我们建议企业可以通过监测相关流量或者日志中是否存在“jndi:ldap://”、“jndi:rmi”等字符来发现可能的攻击行为。

3. 修复方案

检查所有使用了 Log4j 组件的系统,使用新版本的依赖,社区主要是 log4j-core 做了代码修复:

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-core</artifactId>

<version>2.15.0</version>

</dependency>

3Flink 作业修复方案

据 zhisheng 对 Flink 各个版本的 Log4j2 使用情况,发现只有 Flink 1.11 及以上版本才引入了 Log4j2,1.11 以下的版本使用的是 Log4j,不在此次受影响范围之内,故可以不用升级。

最简单的办法是在 flink-conf.yaml 文件中添加下面配置:

env.java.opts:  -Dlog4j2.formatMsgNoLookups=true 

zhisheng 亲测可以生效,更新配置后,新作业默认就会修复避免掉漏洞,但是老作业需要重启,对于生产作业比较多的公司,需要谨慎重启,切记在不影响用户的情况下重启,避免因小失大导致故障!

Flink 社区昨天也及时更新针对此次漏洞的解决方案:https://issues.apache.org/jira/browse/FLINK-25240 ,更新 Log4J2 到新版本。但是这个只是针对后面的版本,用户升级版本较大,或者用户可以直接替换 flink lib 目录下面的 log4j 相关的依赖 jar 包,但是建议多测试,避免出现不兼容问题。

end

Flink 从入门到精通 系列文章基于 Apache Flink 的实时监控告警系统
关于数据中台的深度思考与总结(干干货)
日志收集Agent,阴暗潮湿的地底世界

公众号(zhisheng)里回复 面经、ClickHouse、ES、Flink、 Spring、Java、Kafka、监控 等关键字可以查看更多关键字对应的文章。
点个赞+在看,少个 bug 												

突发!Log4j 爆“核弹级”漏洞,Flink 等项目受影响,提供 Flink 解决方法,赶紧修!...相关推荐

  1. 突发!Log4j 爆“核弹级”漏洞,Flink、Kafka等至少十多个项目受影响

    欢迎关注方志朋的博客,回复"666"获面试宝典 作者 | 褚杏娟 这两天,你熬夜应急了吗? 昨晚,对很多程序员来说可能是一个不眠之夜.12 月 10 日凌晨,Apache 开源项目 ...

  2. Log4j 爆发“核弹级”漏洞、工信部力推开源软件发展、“龙腾计划”启动|开源月报 Vol. 02...

    「WeOpen Insight」是腾源会全新推出的"开源趋势与开源洞见"内容专栏,不定期为读者呈现开源圈内的第一手快讯.优质工具盘点等,洞察开源技术发展的风向标,预见未来趋势. P ...

  3. JDK 商用正式免费、Log4j2 爆核弹级漏洞、LayUI 下线...2021 发生的 10 件大事。。。

    首先祝大家新年快乐,假期都玩的开心吧? 去年栈长给大家盘点了<Java 开发行业 2020 年发生的几件大事>,2022 年来了,也必须对 2021 做个总结了,2021 年 " ...

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

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

  5. Coinbase 现“市场核弹级”漏洞,颁发25万美元奖励

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 密币交易平台 Coinbase 将其史上最大的漏洞奖励25万美元发给发现可使用户出售他人比特币的"市场核弹级"漏洞. Coi ...

  6. Apache Log4j2 核弹级漏洞

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

  7. win7更新错误0x800b0109_win7更新漏洞后产生0x0000006B蓝屏的解决方法图解

    这几天不少网友在使用win7更新补丁后就蓝屏了,代码为0x0000006b.发生这一蓝屏问题的都是安装了2016年四月份推出的安全更新补丁,安装后就出现蓝屏,有的网友表示没问题,有的直接蓝了.这个蓝屏 ...

  8. 核弹级漏洞!我把log4j扒给你看!

    相信大家这两天应该被这么一条新闻刷屏了: 这个漏洞到底是怎么回事? 核弹级,真的有那么厉害吗? 怎么利用这个漏洞呢? 我看了很多技术分析文章,都太过专业,很多非Java技术栈或者不搞安全的人只能看个一 ...

  9. 核弹级漏洞,把 log4j 扒给你看!

    作者 | 轩辕之风O 来源 | 编程技术宇宙 相信大家这两天应该被这么一条新闻刷屏了: 这个漏洞到底是怎么回事? 核弹级,真的有那么厉害吗? 怎么利用这个漏洞呢? 我看了很多技术分析文章,都太过专业, ...

最新文章

  1. python join函数用法-Python join()函数
  2. 【Python】Python的类和对象(长文系列第⑤篇)
  3. MySQL 8.0 error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded
  4. 无限级分类 php_php无限极分类的方法是什么
  5. python读什么文件最快的软件_这些方法,能够让你的 Python 程序快如闪电
  6. NodeJS http 模块
  7. Rational Rose如何删除线段
  8. cachecloud java_cachecloud安装部署
  9. 原生的APP、小程序(微信小程序、支付宝小程序、头条小程序、百度小程序.等等)、H5 的优势与劣势分析有那些?
  10. 李雅普诺夫理论基础(1)
  11. 使用Camera X遇到的坑_OnPause时没有释放相机导致回来时黑屏
  12. 应急响应入侵排查之第三篇常见的 Webshell 在线查杀工具
  13. Python中的break语句
  14. 使用命令行将文件上传到阿里云OSS
  15. MIT6.824-lab4B-Sharded Key/Value Server(基于Raft的Shard KV数据库-分片KV存储器)
  16. 解决android启动白屏问题
  17. MAC码云配置以及使用
  18. 蓝牙5.0对比4.2的主要优势
  19. 道翰天琼认知智能未来机器人接口API简介介绍,聊天机器人,服务机器人,服务机器人机器人接口平台大脑。
  20. ps入门教程高阶教程各工作领域视频教程合集

热门文章

  1. SharePoint 2010在WIN7系统下建立开发环境
  2. 随机数产生函数(数据库)
  3. python自动登录校园网 密码_python自动登陆校园网
  4. 《浪潮之巅》作者吴军老师新浪/腾讯“微访谈”实录
  5. 【Python数据可视化(三)】定制图表
  6. 机器翻译第一步--词向量的生成与保存
  7. java 调用 libsvm_libsvm java 调用说明
  8. post完成导出Excel
  9. 记一次 oracle ORA-01722: 无效数字 错误排查
  10. fwrite函数的简介