• 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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    这里列出了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漏洞

    背景

    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    这里列出了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漏洞

  • 相关阅读:
    [leetcode] Delete Operation for Two Strings
    [leetcode] Minimum ASCII Delete Sum for Two Strings
    [leetcode] Palindromic Substrings
    [leetcode] Student Attendance Record I
    [leetcode] Reverse String II
    [leetcode] Diameter of Binary Tree
    [leetcode] Climbing Stairs
    [leetcode] Range Sum Query
    Codeforces 1294A Collecting Coins
    团体程序设计天梯赛 L2-021 点赞狂魔 (25分)
  • 原文地址:https://www.cnblogs.com/wangsongbai/p/12453775.html
Copyright © 2020-2023  润新知