大家好,我是一航;
这什么时候才是个头...
Apache Log4j2 最新版(2.16.0)再爆漏洞,本以为2.16.0更新之后:Log4j 再发 2.16.0 新版,彻底移除 Message Lookups;应该是安全了,结果...脸疼!又新爆出了DOS攻击漏洞;
这两周,不仅log4j团队修复漏洞忙,咱这升级版本也忙的不可开交了。
Maven仓库已经更新了最新的2.17.0 的版本,并且还标记出了历史版本中包含的漏洞数量及漏洞详情:
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
漏洞说明
详细细节可参考官网:https://logging.apache.org/log4j/2.x/index.html
漏洞摘要
Log4j 团队已获悉一个安全漏洞 CVE-2021-45105
CVE-2021-45105 | 拒绝服务攻击漏洞 |
---|---|
安全等级 | 高 |
影响版本 | 2.0-alpha1 到 2.16.0 |
漏洞详情
因为没有防止自引用查找的不受控制的递归。当日志配置使用带有上下文查找的非默认模式时;
例如:$${ctx:loginId}
攻击者可以制作包含递归查找的恶意输入数据,导致 StackOverflowError
异常,将终止进程。这也称为 DOS(拒绝服务)攻击。
更新升级说明
CVE-2021-45105
漏洞已经在 v2.17.0 中得到了修复,建议尽快更新。
手动下载更新
地址:https://logging.apache.org/log4j/2.x/download.html
Maven更新
代码语言:javascript复制地址:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/2.17.0
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
</dependency>
SpringBoot更新
代码语言:javascript复制<log4j2.version>2.17.0</log4j2.version>
临时解决
如果你不想更新最新版本,可以采用以下方式进行临时解决。
- 在 PatternLayout 日志配置中,替换上下文 Lookups 中的 {ctx:loginId} 或者
- 删除对上下文 Lookups 中对 {ctx:loginId} 或
感谢
虽然,在这短短的两周时间内,Apache Log4j2已经更新了3个大版本,多个小版本,短时间的几次升级,确实给我们带来了不少的工作量;但是,Log4j整个修复的过程,已经非常及时了;相比于他们,咱的这点更新的工作量,其实也就不算什么了;程序员,也应该都经历过线上服务出现紧急Bug的情况,那种心理压力总是让人印象深刻,更何况Log4j还是使用范围这么广的开源框架,压力可想而知...
上周看到Log4j的维护者在网上抱怨,没工资还得挨大家痛骂:
Log4j 维护者一直在为缓解措施而失眠:修复、文档、CVE、对查询的回复等。然而,没有什么能阻止人们痛骂(bush)我们,因为这份没有报酬的工作。其实我们都不喜欢这个出于向后兼容性问题而需要保留的功能(指 JNDI )。
这个现象就很让人不能理解;作为同行,按理说这个情况大家应该是能理解的,我想没有那个程序员是敢保证自己写的程序永远都没有Bug;开源本身就是一个用爱发电的行为,是需要大家的鼓励、支持以及理解,然后一起努力把它维护的更好;如果都是白piao时不言谢,出问题就骂娘
,那谁还会没事儿找事儿去选择开源呢?
所以,在此由衷的向这些无私奉献的同行说声:感谢!辛苦了!