웹 애플리케이션 서버의 대표격인 Apache Tomcat(아파치 톰캣)을 운영하시는 분들이라면 한 번쯤은 “내가 사용하는 버전이 아직 지원되고 있을까?”라는 궁금증을 가져보셨을 것입니다. 오늘은 Apache Tomcat의 모든 버전별 지원 종료일(EOS, End of Support)과 최신 취약점 정보를 체계적으로 정리해보겠습니다.

 

 

1. Apache Tomcat(아파치 톰캣) 전체 버전 히스토리와 EOS 현황

Apache Tomcat은 1998년 11월 Sun Microsystems의 James Duncan Davidson이 서블릿 참조 구현으로 시작한 이래, 지금까지 무려 27년간 발전해온 오픈소스 프로젝트입니다. 현재까지 11개의 주요 버전이 릴리즈되었습니다.

현재 지원 중인 버전들 (2025년 9월 기준)

✅ 현재 적극 지원 중인 버전들

  • Tomcat 11.0.x (최신 릴리즈: 11.0.11, 2025년 9월 1일)
    • Jakarta EE 11 플랫폼 구현
    • Servlet 6.1, JSP 4.0, EL 6.0 지원
    • 최소 Java 버전: Java 17
  • Tomcat 10.1.x (최신 릴리즈: 10.1.44, 2025년 9월 1일)
    • Jakarta EE 10 플랫폼 구현
    • Servlet 6.0, JSP 3.1, EL 5.0 지원
    • 최소 Java 버전: Java 11
  • Tomcat 9.0.x (최신 릴리즈: 9.0.109, 2025년 9월 1일)
    • Java EE 8 플랫폼 구현 (마지막 Java EE 버전)
    • Servlet 4.0, JSP 2.3, EL 3.0 지원
    • 최소 Java 버전: Java 8
    • 특별 연장 지원: 2027년 3월 31일 이후에도 9.1.x 브랜치로 지속 지원 예정

지원 종료된 버전들 – 정확한 EOS 날짜

버전 릴리즈 시기 지원 종료일 주요 특징 상태
Tomcat 10.0.x 2020년 2022년 10월 31일 Jakarta EE 9 (javax → jakarta 전환 시작) ❌ EOS
Tomcat 8.5.x 2016년 2024년 3월 31일 HTTP/2 지원, Tomcat 9 기능 백포트 ❌ 최근 EOS
Tomcat 8.0.x 2014년 2018년 6월 30일 Servlet 3.1, WebSocket 1.1 지원 ❌ EOS
Tomcat 7.0.x 2010년 2021년 3월 31일 Servlet 3.0, JSP 2.2, 메모리 누수 방지 ❌ EOS
Tomcat 6.0.x 2006년 2016년 12월 31일 Servlet 2.5, JSP 2.1 지원 ❌ EOS
Tomcat 5.5.x 2004년 2012년 9월 30일 성능 최적화, 안정성 향상 ❌ EOS
Tomcat 5.0.x 2003년 ~2008년 (비공식) JMX 지원, JSP 2.0 구현 ❌ EOS
Tomcat 4.1.x 2002년 ~2008년 (비공식) Catalina 아키텍처 개선 ❌ EOS
Tomcat 4.0.x 2001년 ~2007년 (비공식) 완전 새로운 Catalina 아키텍처 ❌ EOS
Tomcat 3.3.x 2000년 ~2005년 (비공식) Servlet 2.2, JSP 1.1 지원 ❌ EOS
Tomcat 3.2.x 1999년 ~2004년 (비공식) 초기 상용 버전 ❌ EOS

참고사항: Tomcat 3.x~5.0.x 버전들은 공식적인 EOS 발표가 없었으며, 후속 버전 출시와 함께 자연스럽게 지원이 중단되었습니다.

 

 

2. 최신 취약점 정보 – CVE-2025-24813 긴급 대응 가이드

2025년 현재 가장 중요한 Apache Tomcat 취약점은 CVE-2025-24813입니다. 이 취약점은 원격 코드 실행(RCE) 가능성으로 인해 전 세계 보안 관리자들이 긴급 대응하고 있습니다.

CVE-2025-24813 완전 분석

취약점 개요

  • CVE ID: CVE-2025-24813
  • 공개일: 2025년 3월 10일
  • 심각도: 중요 (Important) – 하지만 RCE 가능성으로 인해 높은 우선순위
  • 공격 방식: 인증되지 않은 원격 코드 실행

영향받는 버전과 패치 버전

영향받는 버전 패치 버전 업그레이드 권장사항
Tomcat 11.0.0-M1 ~ 11.0.2 11.0.3 이상 즉시 업그레이드
Tomcat 10.1.0-M1 ~ 10.1.34 10.1.35 이상 즉시 업그레이드
Tomcat 9.0.0.M1 ~ 9.0.98 9.0.99 이상 즉시 업그레이드
Tomcat 8.5.x (모든 버전) 지원 중단 9.0.99 이상으로 업그레이드

공격 성공 조건 (완화 요소)

성공적인 RCE 공격을 위해서는 다음 모든 조건이 충족되어야 합니다:

  1. 기본 서블릿(Default Servlet)에서 쓰기 권한 활성화
    • 기본값: readonly=true (비활성화)
    • 실제 취약한 설정을 사용하는 경우는 매우 제한적
  2. 부분 PUT(Partial PUT) 지원 활성화
    • 파일 기반 세션 저장소 사용
    • 특정 애플리케이션 설정 필요
  3. 역직렬화 취약점이 있는 라이브러리 존재

실제 위험도 평가

  • GitHub 코드 검색 결과: 쓰기 권한을 활성화한 오픈소스 프로젝트는 218개에 불과
  • Shodan 검색 결과: 378,444개의 노출된 Tomcat 인스턴스 중 실제 취약한 설정은 극소수
  • 결론: 광범위한 자동화 공격보다는 표적 공격에 더 적합한 취약점

기타 2025년 주요 취약점들

1. HTTP/2 “Made You Reset” 공격 (2025년 8월)

  • 증상: OutOfMemoryError로 인한 서비스 거부
  • 영향: 모든 HTTP/2 지원 버전
  • 완화책: 최신 버전으로 업데이트

2. CVE-2023-24998 – Apache Commons FileUpload DoS

  • 원인: 요청 파트 수 제한 없음
  • 공격: 악의적인 멀티파트 업로드를 통한 DoS
  • 해결: maxPartCount 설정 (기본값 10개로 제한)

3. 멀티파트 업로드 정수 오버플로우 (2025년 7월)

  • 조건: 특정 멀티파트 설정에서 크기 제한 우회
  • 결과: DoS 공격 가능
  • 패치: 모든 현재 지원 버전에서 수정 완료

 

 

3. 버전별 상세 가이드와 마이그레이션 전략

Tomcat 11.0.x – 차세대 웹 서버 플랫폼

주요 혁신 사항

  • Jakarta EE 11 완전 구현: 최신 엔터프라이즈 자바 표준 지원
  • 향상된 성능: 최적화된 메모리 관리와 스레드 처리
  • 보안 강화: 기본적으로 더 안전한 설정값 적용

마이그레이션 고려사항

# 패키지 네임스페이스 변경 확인 필요
javax.servlet.* → jakarta.servlet.*
javax.jsp.* → jakarta.jsp.*

권장 대상

  • 새로운 프로젝트 시작
  • 최신 보안 표준이 중요한 환경
  • Java 17 이상 사용 가능한 조직

Tomcat 10.1.x – 안정성과 혁신의 균형

핵심 장점

  • Jakarta EE 10 안정적 구현: 검증된 새로운 표준
  • 뛰어난 호환성: 광범위한 라이브러리 지원
  • 성숙한 에코시스템: 풍부한 문서와 커뮤니티 지원

업그레이드 시나리오

<!-- web.xml 설정 예시 -->
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
         version="6.0">

Tomcat 9.0.x – 검증된 엔터프라이즈 표준

특별한 위치

  • Java EE 8 최종 버전: 레거시 호환성 최고
  • 연장 지원 계획: 2027년 이후에도 9.1.x 브랜치로 지속 지원
  • 안정성 입증: 수년간 운영 환경에서 검증

장기 운영 전략

# Tomcat 9.x 지원 로드맵
2025년 9월: 9.0.109 (현재)
2027년 3월: 9.0.x 지원 종료
2027년 4월: 9.1.x 브랜치 시작 (연장 지원)

 

 

4. 실무 보안 강화 체크리스트

즉시 적용 가능한 보안 설정

1. CVE-2025-24813 방어 설정

<!-- conf/web.xml에서 확인 -->
<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>readonly</param-name>
        <param-value>true</param-value> <!-- 필수: true 유지 -->
    </init-param>
    <init-param>
        <param-name>allowPartialPut</param-name>
        <param-value>false</param-value> <!-- 추가 보안 -->
    </init-param>
</servlet>

2. HTTP 메소드 제한 (보안 강화)

<!-- 위험한 HTTP 메소드 차단 -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>restricted methods</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>PUT</http-method>
        <http-method>DELETE</http-method>
        <http-method>TRACE</http-method>
        <http-method>OPTIONS</http-method>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

3. 멀티파트 업로드 제한

<!-- server.xml의 Connector 설정 -->
<Connector port="8080" protocol="HTTP/1.1"
           maxParameterCount="1000"
           maxPostSize="2097152"
           maxPartCount="50" />

4. 버전 정보 숨기기

<!-- server.xml 설정 -->
<Connector port="8080" 
           server="WebServer" 
           serverRemoveAppProvidedValues="true" />

모니터링 및 로그 분석

보안 이벤트 탐지

# CVE-2025-24813 공격 시도 탐지
grep -E "(PUT.*\.(jsp|jspx|class|jar))" /opt/tomcat/logs/localhost_access_log.*.txt

# 의심스러운 세션 파일 업로드 탐지
grep -E "PUT.*JSESSIONID" /opt/tomcat/logs/localhost_access_log.*.txt

# 대량 멀티파트 요청 감시
awk '$7 ~ /POST/ && $10 > 1000000 {print}' /opt/tomcat/logs/localhost_access_log.*.txt

실시간 모니터링 스크립트

#!/bin/bash
# tomcat_security_monitor.sh
LOGFILE="/opt/tomcat/logs/localhost_access_log.$(date +%Y-%m-%d).txt"
ALERT_EMAIL="admin@company.com"

tail -f $LOGFILE | while read line; do
    if echo "$line" | grep -q "PUT.*\.jsp"; then
        echo "SECURITY ALERT: Suspicious PUT request detected" | mail -s "Tomcat Security Alert" $ALERT_EMAIL
    fi
done

 

 

5. 체계적인 업그레이드 실행 계획

단계별 마이그레이션 전략

Phase 1: 현황 분석 및 계획 수립

# 현재 Tomcat 버전 확인
$CATALINA_HOME/bin/version.sh

# 배포된 애플리케이션 의존성 분석
find $CATALINA_HOME/webapps -name "*.jar" -exec grep -l "javax.servlet" {} \;

# Java 버전 호환성 확인
java -version

Phase 2: 테스트 환경 구축

# 테스트 환경 설정
export CATALINA_BASE=/opt/tomcat-test
mkdir -p $CATALINA_BASE/{conf,logs,temp,webapps,work}

# 마이그레이션 도구 활용 (Jakarta EE 전환 시)
java -jar tomcat-migration-tool.jar --source webapps/myapp.war --destination webapps/myapp-jakarta.war

Phase 3: 단계적 배포

# Blue-Green 배포 스크립트 예시
#!/bin/bash
BLUE_PORT=8080
GREEN_PORT=8081
HEALTH_CHECK_URL="http://localhost"

# Green 환경 시작
./catalina.sh start -Dhttp.port=$GREEN_PORT

# 헬스 체크
if curl -f "$HEALTH_CHECK_URL:$GREEN_PORT/health"; then
    # 트래픽 전환 (로드밸런서 설정)
    echo "Switching traffic to Green environment"
    # Blue 환경 중지
    ./catalina.sh stop
else
    echo "Green environment failed health check"
    exit 1
fi

긴급 패치 시나리오

CVE-2025-24813 긴급 대응 절차

1. 즉시 조치 (5분 내)

# WAF 규칙으로 PUT 요청 차단
# nginx.conf 또는 Apache httpd.conf에 추가
location / {
    limit_except GET POST HEAD {
        deny all;
    }
}

2. 임시 완화책 (30분 내)

# Tomcat 설정 즉시 변경
cd $CATALINA_HOME/conf
cp web.xml web.xml.backup.$(date +%Y%m%d_%H%M%S)

# readonly 설정 확인 및 강제 적용
sed -i 's/<param-value>false<\/param-value>/<param-value>true<\/param-value>/g' web.xml

# Tomcat 재시작
./bin/shutdown.sh && ./bin/startup.sh

3. 영구 해결책 (24시간 내)

# 패치된 버전으로 업그레이드
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.109/bin/apache-tomcat-9.0.109.tar.gz
tar xzf apache-tomcat-9.0.109.tar.gz
# 설정 파일 마이그레이션 및 애플리케이션 재배포

 

 

6. 각 Tomcat 버전별 권장 전략과 로드맵

현재 운영 중인 버전에 따른 권장사항

🔴 즉시 업그레이드 필요 (HIGH 우선순위)

  • Tomcat 8.5.x 이하: 보안 패치 중단으로 즉시 업그레이드 필수
  • Tomcat 9.0.98 이하: CVE-2025-24813 취약점 존재

🟡 계획적 업그레이드 권장 (MEDIUM 우선순위)

  • Tomcat 10.0.x: 2022년 EOS, 10.1.x로 마이그레이션
  • Tomcat 9.0.99~108: 최신 버전으로 업데이트 권장

🟢 안정적 운영 가능 (LOW 우선순위)

  • Tomcat 9.0.109: 안정적, 정기 업데이트 유지
  • Tomcat 10.1.44: 우수한 선택, 최신 상태 유지
  • Tomcat 11.0.11: 최신 기술, 지속적 모니터링

2025-2027 업그레이드 로드맵

gantt
    title Apache Tomcat 업그레이드 로드맵
    dateFormat  YYYY-MM-DD
    section 현재 지원 버전
    Tomcat 9.0.x    :done, t9, 2017-01-01, 2027-03-31
    Tomcat 10.1.x   :active, t10, 2021-01-01, 2030-12-31
    Tomcat 11.0.x   :active, t11, 2024-10-01, 2034-12-31
    section 연장 지원
    Tomcat 9.1.x    :t91, 2027-04-01, 2032-12-31
    section 권장 업그레이드 시점
    8.5.x → 9.0.x   :crit, up1, 2024-04-01, 2024-06-30
    9.0.x → 10.1.x  :up2, 2025-01-01, 2026-12-31
    10.1.x → 11.0.x :up3, 2026-01-01, 2027-12-31

 

 

추가 정보 및 지원

 

 

댓글 남기기