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漏洞


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM