颤抖吧 Javaer, log4j 史诗级漏洞

2021-12-10 09:16:39 +08:00
 eviladan0s

漏洞预警: https://mp.weixin.qq.com/s/WBbAthHY36qY0w9e4UUl4Q

本质上是 log4j 里的 lookup 方法存在 jndi 注入(看图): https://adan0s-1256533472.cos.ap-nanjing.myqcloud.com/uPic/20211210091200YOXTYd.jpg

百度、谷歌、苹果的框全都沦陷了: https://adan0s-1256533472.cos.ap-nanjing.myqcloud.com/uPic/202112100913225Wncr7.png

修复措施: 在 log4j2.component.properties 配置文件中设置 log4j2.formatMsgNoLookups=true ,可以暂时缓解避免受漏洞的影响。

之所以是史诗级,是因为不仅 log4j 使用范围广,而且日志数据你不知道流到哪里的 log4j 就会触发

34542 次点击
所在节点    Java
189 条回复
bigbugcc
2021-12-10 16:33:08 +08:00
.net 的 log4 应该不受影响吧
monkeyWie
2021-12-10 16:36:51 +08:00
@yohole #113 我试了下没复现成功,是不是 jdk 版本太高了,我用的 1.8.0_312
ccc008
2021-12-10 16:40:31 +08:00
@monkeyWie JDK1.8.121 以上的版本是默认禁止 trustURLCodebase 的,远程反射运行不了。 想要复现加上 System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
RudyS
2021-12-10 16:42:43 +08:00
sudo rm -rf /
zhq566
2021-12-10 16:44:01 +08:00
在野利用是什么意思呀。
godwinma
2021-12-10 16:44:41 +08:00
难受,今天一天就花在升级各个仓库的版本了。。。
nobody123123
2021-12-10 16:47:21 +08:00
@justs0o jms appender 用的场景应该比较少啊。大部分直接 stdout ,或者日志文件。 是不是意味着这些用 1.x 版本的没关系啊
cwyalpha
2021-12-10 16:50:26 +08:00
rc1 rc2 目前也能绕过,最好还是 waf 升规则吧,现在升级的,后面还要再升...l4j 开发不知道咋想的
eviladan0s
2021-12-10 16:50:33 +08:00
@zhq566 漏洞被发现已经在互联网上流传和利用
shyangs
2021-12-10 16:51:12 +08:00
@aguesuka

log4j 、logback 、log4j2 是同一個作者 Ceki Gülcü


你用什麼日誌庫?
hingbong
2021-12-10 16:56:34 +08:00
1.8.0_312 我也复现了,就起了个 tcp server ,打印请求过来的 remote addr ,然后用 log4j 成功复现
monkeyWie
2021-12-10 17:03:09 +08:00
@hingbong #131 会请求,但是执行不了 class
0312birdzhang
2021-12-10 17:09:26 +08:00
所以,log4j 1 到底怎么复现?试了几个 demo 都不行
Divinook
2021-12-10 17:14:33 +08:00
上面也提到了,java8 u191 版本后就不能用 ldap 进行远程类加载了,但是这只是排除了其中一部分风险,依旧隐含拒绝服务攻击,利用远程文件写入进行 RCE 的风险
aguesuka
2021-12-10 17:14:59 +08:00
@shyangs 这个 bug 是 garydgregory 写的, 它是 log4j2 的最大贡献者, 而他在 log4j 中只有 24 个 commit; 如果是本人那 logback 说不定也有同样的问题, 那我可恭喜 javaer 了.
sadan9
2021-12-10 17:33:21 +08:00
rc2 也可以绕过了么?哪里有确切消息?
kknd22
2021-12-10 17:35:43 +08:00
老版本的 Log4j 有没有影响?
lhwarthas
2021-12-10 17:40:09 +08:00
源码编译步骤:
1.准备 JDK8 & JDK11 & maven
2.配置环境变量 export JAVA_HOME_8_X64=jdk8 目录 export JAVA_HOME_11_X64=jdk11 目录
3.源码目录下执行 mvn package -Dmaven.test.skip=true -DtrimStackTrace=false -Dmaven.test.failure.ignore=true -Dsurefire.rerunFailingTestsCount=1 --global-toolchains .github/workflows/maven-toolchains.xml
kischang
2021-12-10 17:45:23 +08:00
@kknd22 #137 log4j 1.* 版本有个类似的漏洞,在 JMS Appender ,但是跟 2.* 的差别是需要错误配置使用了该 Appender 才会触发,所以一般没有使用这个 Appender 的不会有问题
lis66951735
2021-12-10 17:54:47 +08:00
大佬们,spring-boot-starter-log4j2 怎么升级啊。exclusion 之后不好使啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/821241

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX