계속해서 업데이트 되는 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.
* Blocking:
어떤 시스템 콜을 호출했을 때, 네트워크 시스템이 동작을 완료할 때 까지 그 시스템 콜에서 프로세스가 멈춤. I/O 처리 시 완료 될 때까지 기다려야한다. 비동기 작업 수행 불가. 일대일 통신 또는 프로그램이 한 가지 작업만 처리하면 되는 경우 blocking 모드 사용
* Non-blocking:
시스템 콜에 대해 네트워크 시스템이 즉시 처리
할 수 없는 경우라도 시스템 콜이 바로 리턴되어 응용 프로그램이 block 되지 않게 하는 모드. 통신 상대가 여럿이거나, 여러 작업을 병행하려는 경우, non-blocking 모드를 사용한다. non-blocking 모드 사용 시, 시스템 콜이 성공적으로 실행될 때 까지 루프를 돌며 계속 확인하는 방법 '폴링(polling)'을 사용한다.

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)

파일 전송 코드를 사용할 때, Tomcatconnector 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에 저장할 때 프로그래머가 지정한 곳 바깥에 저장해 버리는 것이다.
이로 인해, 프로그램 오류가 발생할 수 있으며, 메모리 접근 오류, 잘못된 결과, 프로그램 종료, 또는 시스템 보안 누설 등의 문제가 발생할 수 있다.
 --> buffer overflow
는 보통 데이터를 저장하는 과정에서 그 데이터를 저장할 메모리 위치가 유효한지 검사하지 않아 발생하곤 한다. 데이터가 담긴 위치 근처에 있는 값 손상 가능.

Important

Apache Standard Taglib
1.2.3
이전 버전들

정보 노출 취약점
(information disclosure)

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를 파싱하는 페이지에서 발생한다.


                                                                                      

+ Recent posts