Spring-Boot项目 修复log4j的漏洞

修复log4j的漏洞

背景

由于项目要接入公网,故需要在接入公网前对引入log4j的项目进行安全漏洞测试。结果检测出log4
j日志版本太低。要求将logj的版本升级到2.17.1
在这里插入图片描述

现状

1.现在引入的是spring-boot-starter-log4j2,而这个组件是依赖
log4j-api,log4j-core,log4j-slf4j-impl这几个组件的,
在这里插入图片描述
2.使用的是日志注解是lombok包下面的@Slf4j注解,并没有版本号,因此找了半天没有发现使用log4j的日志,那么问题也就卡在这里,安全同事说我们不通过,但我也找不到问题所在
在这里插入图片描述
3.我们去掉spring-boot-starter-log4j2组件后,项目整个的日志都不打印了,因此又回退代码

解决方案

lombok下面的注解只是一个声明,具体的实现还是依赖的spring-boot-starter-log4j2这个组件,因此实际上我们使用的日志还是spring-boot-starter-log4j2组件下的log4
j,我直接把spring-boot-starter-log4j2日志的组件替换成以下日志的实现(实际上排掉org.apache.logging.log4j包这个即可)

从以下可以看出:只有 log4j-core JAR 文件受此漏洞影响。仅使用 log4j-api JAR 文件而不使用 log4j-core JAR 文件的应用程序不受此漏洞的影响。

从版本 2.17.1(以及 Java 7 和 Java 6 的 2.12.4 和 2.3.2)开始,JDBC Appender 将使用 JndiManager 并要求 log4j2.enableJndiJdbc 系统属性包含 true 值以启用 JNDI。

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.17.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.17.1</version>
        <exclusions>
            <exclusion>
                <artifactId>log4j-api</artifactId>
                <groupId>org.apache.logging.log4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.17.1</version>
        <exclusions>
            <exclusion>
                <artifactId>log4j-api</artifactId>
                <groupId>org.apache.logging.log4j</groupId>
            </exclusion>
            <exclusion>
                <artifactId>log4j-core</artifactId>
                <groupId>org.apache.logging.log4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值