배경
2020 년 1 월 6, 플랫폼을 공유하는 국가 정보 보안 취약점 (CNVD는) 베이징 과학 기술 유한 회사에 의해 발견 아파치 톰캣 파일에 포함될 취약점에 제출 파빌리온 포함 (CNVD-2020-10487을 해당 CVE-2,020에서 1,938 사이). 이 취약점을 악용 한 공격자는 인증되지 않은 원격의 경우 특정 디렉토리에 임의의 파일을 읽을 수 있습니다. 현재, 취약점 세부 사항은 제조자가 버그 수정 완료의 새 버전을 출시했습니다, 공개되지 않았다.
특정주의 사항 : HTTPS : //www.cnvd.org.cn/webin ...
방법 대응 스프링 부팅
당신은 외부 바람둥이 참조 게시판에 해당하는 방법을 사용하는 경우.
당신이 내장 springboot 바람둥이를 사용하여 수동으로 AJP 프로토콜을 열 경우, 당신은 바람둥이의 내장 버전을 업그레이드해야합니다.
수동으로 AJP를 열지 않았다 (기본 내장 Tomcat을 사용) springboot 경우에, 당신은 바람둥이의 내장 버전을 업그레이드 할 수 없습니다. 물론, 업그레이드 할도 사용할 수 있습니다.
개방 방법을 AJP springboot
springboot가 열려해야하는 경우가 springboot2 예를 수동으로 구성해야합니다, 기본 AJP으로 사용할 수 없습니다 :
@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 내장 된 톰캣의 버전
당신의 springboot 프로젝트는 AJP를 연 경우에, 당신은 통지 이상에 지정된 내장 바람둥이 버전으로 업그레이드해야합니다.
예를 들면 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-포함 코어, TOMCAT-포함 - 엘, 바람둥이-주석-API와 바람둥이 - 포함 - 웹 소켓 네 의존성은, 사실, 특정 프로젝트 종속성을 기반으로 업그레이드 된 버전이어야한다