Spring boot web项目关于Apache Tomcat存在文件包含漏洞(CVE-2020-1938)的整改方法

背景

2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2020-1938)。攻击者利用该漏洞,可在未授权的情况下远程读取特定目录下的任意文件。目前,漏洞细节尚未公开,厂商已发布新版本完成漏洞修复。
Tomcat是Apache软件基金会中的一个重要项目,性能稳定且免费,是目前较为流行的Web应用服务器。由于Tomcat应用范围较广,因此本次通告的漏洞影响范围较大,请相关用户及时采取防护措施修复此漏洞。

具体公告:https://www.cnvd.org.cn/webin…

spring boot web项目对应方法

如果使用的是外置tomcat,参考公告中的对应方法即可。

如果使用的是springboot的内置tomcat,且手动开启了AJP协议,则需要升级内置tomcat版本。

如果你的springboot并没有手动开启AJP,那么你可以不升级tomcat内置版本。

springboot开启AJP方法

springboot默认不启用AJP,如果需要开启,则需要手动配置,以springboot2为例:

@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainer() {
  return server -> {
    if (server instanceof TomcatServletWebServerFactory) {
        ((TomcatServletWebServerFactory) server).addAdditionalTomcatConnectors(redirectConnector());
    }
  };
}

private Connector redirectConnector() {
   Connector connector = new Connector("AJP/1.3");
   connector.setScheme("http");
   connector.setPort(ajpPort);
   connector.setSecure(false);
   connector.setAllowTrace(false);
   return connector;
}

springboot如何内置tomcat版本方法

spring boot 指定内置tomcat版本的pom如下:
示例升级到8.5.51:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>tomcat-embed-core</artifactId>
                    <groupId>org.apache.tomcat.embed</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>tomcat-embed-el</artifactId>
                    <groupId>org.apache.tomcat.embed</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>tomcat-embed-websocket</artifactId>
                    <groupId>org.apache.tomcat.embed</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-annotations-api</artifactId>
            <version>8.5.51</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>8.5.51</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>tomcat-annotations-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-el</artifactId>
            <version>8.5.51</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-websocket</artifactId>
            <version>8.5.51</version>
            <exclusions>
                <exclusion>
                    <artifactId>tomcat-embed-core</artifactId>
                    <groupId>org.apache.tomcat.embed</groupId>
                </exclusion>
            </exclusions>
        </dependency>

这里列出了tomcat-embed-core,tomcat-embed-el,tomcat-annotations-api和tomcat-embed-websocket这四个依赖包,实际上应该根据你的具体项目中的依赖来升级版本

线上升级

由于升级只涉及jar依赖,如果部署项目是使用xxx.original+lib/*.jar方式部署。可以使用使用apache-tomcat-8.5.51.tar.gz 对对应的jar包替换。如果项目打包部署方式为xxx.jar,则直接用新构建的jar包替换原来的jar包即可。

参考

springboot2对应tomcat的AJP漏洞

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值