계속해서 업데이트 되는 Tomcat 버전에도 버전 별로 보안취약점이 발견되고, 패치되고 있다.
취약점 발견 버전을 사용하고 있는 경우 보안 위험이 존재하므로 패치된 버전으로 변경하는 것을 권장하고 있다.
그래서 Tomcat 버전 별 보안취약점에 대해 정리해보았다.
# Tomcat 보안취약점 패치 버전 업데이트 권고
* 권장 Tomcat 버전: 8.5.11 / 8.0.41 / 7.0.75 / 6.0.50
* 권장 Tomcat JK connector 버전: 1.2.42
* 권장 Apache Standard Taglib 버전: 1.2.3
Tomcat 보안 취약점 패치 적용 버전 업데이트 권고 |
|||||
중요도 |
취약점 발견 버전 |
보안 취약점 |
취약점 상세 |
권장 Tomcat 버전 |
참고 |
Moderate |
8.5.7 ~ 8.5.9 |
정보 노출 취약점 (information disclosure) |
ByteBuffer를 사용할 때, 동일 connection의 여러 요청 간에 정보 유출 위험이 존재한다. ByteBuffer는 I/O가 일어날 때 주고 받을 때 데이터를 일시적으로 담고 있는 역할을 하는 클래스다. 이러한 취약점은 Apache 등의 웹서버를 함께 사용하는 경우 사용자 간의 정보 유출도 초래할 위험이 있다. |
8.5.11 |
* ByteBuffer 클래스: fast low level I/O를 수행할 때, 일시적으로 데이터를 담아놓기 위해 사용. |
important |
8.0.0 ~ 8.0.39 |
정보 노출 취약점 (information disclosure) |
Tomcat의 connector protocol 중 NIO HTTP connector를 사용할 경우, 복수의 요청을 처리하는데 동일한 processor가 사용되어 세션 ID 및 응답 정보가 유출 될 위험이 있다. 프로세서를 공유하게 되면 session ID를 포함한 request와 response body 사이의 정보 노출 위험이 존재한다. |
8.0.41 |
* NIO: New Input/Ouput stream.
Non-blocking protocol. |
important |
7.0.0 ~ 7.0.73 |
정보 노출 취약점 (information disclosure) |
파일 전송 코드를 사용할 때, Tomcat의 connector protocol 중 NIO HTTP connector를 사용할 경우, 복수의 요청을 처리하는데 동일한 processor가 사용되어 세션 ID 및 응답 정보가 유출 될 위험이 있다. 프로세서를 공유하게 되면 session ID를 포함한 request와 response body 사이의 정보 노출 위험이 존재한다. |
7.0.75 |
|
important |
7.0.0 ~ 7.0.72 |
Jmx 원격코드 실행 취약점 (Remote code execution) |
Jmx에서 CVE-2016-3427 에 대한 패치를 반영하지 않아 발생하는 취약점이다. Jmx(Java Management eXtension)는 자바 서비스들을 관리하고 모니터링하기 위한 API를 제공하는 기능을 포함한 기술로, 발견된 취약점 CVE-2016-3427은 Java SE 8u77, JRockit R28.3.9를 사용할 때 Jmx를 통해 기밀성·무결성·가용성에 영향을 줄 수 있는 취약점이다. |
* CVE-2016-3427: Java SE 8u77, JRockit R28.3.9를 사용할 때 Jmx를 통해 기밀성, 무결성, 가용성에 영향을 줄 수 있는 취약점 * JMX(Java Management Extension): JVM의 메모리나 쓰레드 및 VM 내부 정보 등의 자바 서비스들을 관리하고 모니터링 하기 위한 API를 제공하는 기술. |
|
important |
6.0.0 ~ 6.0.48 |
정보 노출 취약점 (information disclosure) |
파일 전송 코드를 사용할 때, Tomcat의 connector protocol 중 NIO HTTP connector를 사용할 경우, 복수의 요청을 처리하는데 동일한 processor가 사용되어 세션 ID 및 응답 정보가 유출 될 위험이 있다. 프로세서를 공유하게 되면 session ID를 포함한 request와 response body 사이의 정보 노출 위험이 존재한다. |
6.0.50 |
|
important |
6.0.0 ~ 6.0.47 |
Jmx 원격코드 실행 취약점 (Remote code execution) |
Jmx에서 CVE-2016-3427 에 대한 패치를 반영하지 않아 발생하는 취약점이다. Jmx(Java Management eXtension)는 자바 서비스들을 관리하고 모니터링하기 위한 API를 제공하는 기능을 포함한 기술로, 발견된 취약점 CVE-2016-3427은 Java SE 8u77, JRockit R28.3.9를 사용할 때 Jmx를 통해 기밀성·무결성·가용성에 영향을 줄 수 있는 취약점이다. |
* CVE-2016-3427: Java SE 8u77, JRockit R28.3.9를 사용할 때 Jmx를 통해 기밀성, 무결성, 가용성에 영향을 줄 수 있는 취약점 |
|
Moderate |
Tomcat JK Connector 1.2.0 ~ 1.2.41 |
Buffer Overflow |
Virtual host 매핑 룰을 생성하기 위해 가상 호스트명과 URI이 연결되는데, buffer에 write하기 전에 virtual host 명에대한 길이 체크를 하지 않아, 잠재적으로 buffer overflow 취약점이 존재한다. à 원격지의 공격자가 overflow를 유발하는 아주 긴 URL 요청을 보내 시스템 상의 임의의 코드를 실행시키는 등의 공격으로 프로그램 오류 발생 가능. |
1.2.42 |
* Buffer Overflow: 메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램
취약점. 프로세스가 데이터를 buffer에 저장할 때
프로그래머가 지정한 곳 바깥에 저장해 버리는 것이다. |
Important |
Apache
Standard Taglib |
정보 노출 취약점 |
Apache Standard Taglibs 1.2.3 이전의 버전들은 악의적인 사용자가 원격으로 임의의 코드를 실행하거나, XXE injection 공격을 행할 수 있다. |
1.2.3
|
* XXE(XML eXternal Entity) injection: XML 문서에서 동적으로 외부 URI의 리소스를 포함시킬 수 있는 external entity를 사용하여 서버의 로컬파일 열람, denial of service 등을 유발할 수 있는 취약점으로, XML Request를 파싱하는 페이지에서 발생한다. |