背景
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包即可。
參考
背景
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包即可。
