springboot2對應tomcat的AJP漏洞

背景

2020年1月6日,國家信息安全漏洞共享平臺(CNVD)收錄了由北京長亭科技有限公司發現並報送的Apache Tomcat文件包含漏洞(CNVD-2020-10487,對應CVE-2020-1938)。攻擊者利用該漏洞,可在未受權的狀況下遠程讀取特定目錄下的任意文件。目前,漏洞細節還沒有公開,廠商已發佈新版本完成漏洞修復。web

具體公告:https://www.cnvd.org.cn/webin...spring

springboot對應方法

若是使用的是外置tomcat,參考公告中的對應方法便可。apache

若是使用的是springboot的內置tomcat,且手動開啓了AJP協議,則須要升級內置tomcat版本。tomcat

若是你的springboot(使用默認內置tomcat)並無手動開啓AJP,那麼你能夠不升級tomcat內置版本。固然你想升級也能夠。安全

springboot開啓AJP方法

springboot默認不啓用AJP,若是須要開啓,則須要手動配置,以springboot2爲例:springboot

@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;
    }

開啓了AJP的springboot如何升級內置tomcat版本

若是你的springboot項目開啓了AJP,那麼你須要升級內置tomcat版本到公告中指明的版本或以上。
示例:websocket

<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.embed</groupId>
      <artifactId>tomcat-embed-core</artifactId>
      <version>9.0.31</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-el</artifactId>
      <version>9.0.31</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-websocket</artifactId>
      <version>9.0.31</version>
      <exclusions>
        <exclusion>
          <artifactId>tomcat-embed-core</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
      </exclusions>
    </dependency>

這裏列出了tomcat-embed-core,tomcat-embed-el和tomcat-embed-websocket這三個依賴包,實際上應該根據你的具體項目中的依賴來升級版本socket

相關文章
相關標籤/搜索