本以为经过上周的2.16.0版本升级,Log4j2漏洞修复工作基本告一段落。没想到就在周末,Log4j正式发布了新版本:2.17.0这个版本主要修复了安全漏洞:CVE-2021-45105影响版本:2.0-alpha1到2.16.0(1.x用户继续忽略)这个漏洞仅当日志配置使用带上下文查找的非默认模式布局(例如$${ctx:loginId})时才会发生,攻击者可以通过构造包含递归查找的恶意输入数据来触发无限循环,从而导致StackOverflowError,最终这个过程崩溃了。只有log4j-core受此漏洞影响,仅使用log4j-api的程序无需担心。因此,可以通过升级log4j-coreorg.apache.logging.log4jlog4j-core2.17.0当然,如果你受到了SpringBoot的影响,按照前面一行配置,就可以获得SpringBoot项目的log4j2核弹漏洞!分享方式升级更方便。如果你正在学习SpringBoot,我推荐一个连载多年并持续更新的免费教程。如果目前不方便升级版本,也可以通过以下两种方式缓解该漏洞:在日志配置的PatternLayout中,使用%X、%mdc或%MDC替换${ctx:loginId}或$${WhereContextLookupssuchasctx:loginId}使用外部数据(HTTPHeader或用户输入等),删除对ContextLookups的引用(如${ctx:loginId}或$${ctx:loginId})好了,话不多说,大家还是赶紧自我检查,做好必要的防护措施,争取早点睡个好觉吧!欢迎关注我的公众号:程序员DD,分享别处看不到的知识和思考