本认为,通过上周的 2.16.0 版本升级,Log4j2 的破绽修复工作,大家根本都要告一段落了。
万万没想到,就在周末,Log4j 官网又公布了新版本:2.17.0
该版本次要修复安全漏洞:CVE-2021-45105
影响版本 :2.0-alpha1 至 2.16.0(1.x 用户持续疏忽)
该破绽只有当日志配置应用带有 Context Lookups 的非默认 Pattern Layout(例如 $${ctx:loginId})时,攻击者能够通过结构蕴含递归查找的歹意输出数据,触发有限循环,导致 StackOverflowError,最终过程解体。
这次破绽受影响的只有 log4j-core,仅应用 log4j-api 的程序不须要放心。所以,大家能够通过降级 log4j-core 来修复该破绽的
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
</dependency>
当然,如果你是 Spring Boot 影响,依照之前一行配置搞定 Spring Boot 我的项目的 log4j2 核弹破绽!分享的办法能够更不便的降级。如果您正在学习 Spring Boot,那么举荐一个连载多年还在持续更新的收费教程。
如果目前还不不便降级版本的话,也能够采纳上面的两种办法来缓解此破绽:
- 在日志配置的 PatternLayout 中,用 %X、%mdc 或 %MDC 来替换 ${ctx:loginId} 或 $${ctx:loginId} 等 Context Lookups
- 在应用内部数据(HTTP Header 或用户输出等)的中央,删除对 Context Lookups 的援用(如 ${ctx:loginId} 或 $${ctx:loginId})
好了,不多说了,大家放松自查下,做好必要的防护措施,争取早点睡个好觉!
欢送关注我的公众号:程序猿 DD,分享其余中央看不到的常识与思考