위협 요약
2026년 4월 9일, Apache Tomcat의 EncryptInterceptor 우회 취약점 CVE-2026-34486이 공개됐다. CVSS 4.0 점수는 7.5로 High 등급이며, EPSS(Exploit Prediction Scoring System) 값은 0.426으로 상위 1.5%에 해당해 실제 악용 가능성이 매우 높게 평가된다.
CISA는 2026년 8월 4일 해당 취약점을 Known Exploited Vulnerabilities(KEV) 카탈로그에 등재했으며, 조치 기한은 2026년 8월 7일로 설정했다. 중국 SnowLight APT 그룹이 실제 공격에 이 취약점을 활용했다는 소식이 확인된 상태다.
EncryptInterceptor를 사용하는 Tomcat 클러스터 환경에서 암호화되지 않은 악성 시리얼라이즈 객체를 주입하면 원격 코드 실행(RCE)이 가능하다. 패치 버전 9.0.117, 10.1.54, 11.0.21이 이미 출시됐다.
취약점 개요
CVE-2026-34486은 Apache Tomcat의 Tribes 클러스터 통신 모듈에서 발생하는 취약점이다. 이전 취약점 CVE-2026-29146의 수정 과정에서 EncryptInterceptor의 동작이 손실되며 우회 경로가 생겨났다.
취약점 유형
- CWE-311: 민감정보 암호화 누락(Missing Encryption of Sensitive Data)
- CWE-807: 보안 결정에서 신뢰할 수 없는 입력 의존(Reliance on Untrusted Inputs in a Security Decision)
동작 원리
Tribes 모듈은 노드 간 통신을 위해 EncryptInterceptor를 통해 AES/CBC 복호화를 수행한다. 정상 흐름에서는 복호화된 데이터만 처리되야 하지만, CVE-2026-29146 패치 과정에서 super.messageReceived(msg) 호출이 try-catch 블록 외부로 이동하면서 암호화 검증이 우회되게 됐다.
암호화 복호화에 실패하더라도 super.messageReceived(msg)가 실행되며, 이어서 XByteBuffer.deserialize() → ObjectInputStream.readObject() 경로를 통해 원본 바이트가 역직렬화된다. 공격자가 제어하는 객체가 역직렬화되면 Java 역직렬화 게지대인(CommonsCollections6 등)을 활용한 원격 코드 실행이 가능하다.
주요 특징
- 인증이 불필요한(Unauthenticated) 취약점
- 공격 복잡도: Low
- 공격 경로: Network
- 기본 타겟 포트: TCP 4000 (Tribes NioReceiver)
- 단일 1대 서버에는 영향 없음 — 클러스터 구성에서 EncryptInterceptor를 활성화한 환경에만 해당
기술적 분석
공격 체인
공격자는 다음과 같은 경로를 통해 시스템을 탈취한다.
네트워크 → NioReceiver(비인증, TCP 4000)
→ EncryptInterceptor.messageReceived()
→ AES/CBC 복호화 실패
→ super.messageReceived(msg)
→ XByteBuffer.deserialize()
→ ObjectInputStream.readObject()
→ CommonsCollections6 Gadget Chain
→ Runtime.exec()
→ RCE (root 권한)
취약 코드의 문제점
EncryptInterceptor의 messageReceived() 메서드에서 AES/CBC 복호화 로직이 try-catch로 감싸져 있지만, super.messageReceived(msg) 호출이 catch 블록 외부에 위치한다. 이로 인해 복호화가 실패하더라도 암호화되지 않은 원본 바이트가 상위 클래스의 메시지 처리 로우에 전달된다.
// 취약한 코드 패턴 (간략화)
public void messageReceived(Message msg) {
try {
// AES/CBC 복호화 시도
decrypted = decrypt(msg);
} catch (Exception e) {
// 복호화 실패 로깅
log.warn("Failed to decrypt message", e);
}
// ⚠️ catch 외부에서 호출 — 복호화 실패 시에도 실행됨
super.messageReceived(msg);
}
정상적인 코드라면 복호화 실패 시 메시지 처리를 중단하거나 예외를 상위로 전달해야 한다. 하지만 현재 구현에서는 복호화 실패 여부와 상관없이 역직렬화가 진행된다.
악용 시나리오
- 공격자는 TCP 4000 포트(Tribes NioReceiver)에 직접 접근
- 악성 Java 객체를 직렬化した 바이트 스트림을 전송
- EncryptInterceptor가 AES/CBC 복호화를 시도하지만, 평문으로 전송된 데이터이므로 복호화 실패
- catch 블록에서 경고 로그 기록 후
super.messageReceived(msg)호출 XByteBuffer.deserialize()가 평문 바이트를 역직렬화- CommonsCollections6 게지대인을 통해
Runtime.exec()실행 - Tomcat 실행 사용자의 권한으로 임의 명령어 실행
PoC 현황
GitHub에 404-src/CVE-2026-34486 저장소에서 Python 기반 익스플로잇 스크립트가 공개되어 있다. Vicarius에서는 해당 취약점에 대한 탐지 및 완화 스크립트를 제공 중이다.
NVD 평가와 실제 위험도
NVD의 CVSS 7.5 평가는 기밀성 손실에 기반한 것이다. 하지만 GitHub PoC에서 주장하는 RCE는 NVD 공식 평가와 완전히 일치하지는 않는다. 역직렬화 경로를 통한 out-of-band 실행 가능성은 존재하나, 실행 컨텍스트와 권한 수준은 실제 환경에 따라 다를 수 있다.
탐지 시그니처
SIEM 또는 로그 모니터링에서 다음 패턴을 감시한다.
- Tomcat 로그에 반복出现的 "Failed to decrypt message" 경고
- TCP 4000 포트로의 비정상적인 외부 접속 시도
ObjectInputStream.readObject()호출 로그(디버그 모드 활성화 시)- 프로세스 생성 이벤트에서 tomcat 사용자의 의외 명령어 실행
영향 범위
영향 버전
| 버전 라인 | 영향 버전 범위 | 패치 버전 |
|---|---|---|
| 9.0.x | 9.0.0.M1 ~ 9.0.116 | 9.0.117 |
| 10.1.x | 10.1.0-M1 ~ 10.1.53 | 10.1.54 |
| 11.0.x | 11.0.0-M1 ~ 11.0.20 | 11.0.21 |
영향 환경
- 클러스터 구성이 활성화된 Tomcat 서버 — Tribes 모듈과 EncryptInterceptor가 설정되어 있는 환경
- 단일 1대 Tomcat 서버 — 클러스터 기능을 사용하지 않는 환경은 영향받지 않음
- Red Hat Enterprise Linux — RHSA-2026:36787~39189 등 다수 보안 어드바이저리가 발표됨
실제 악용 현황
- CISA KEV 등재: 2026년 8월 4일 Known Exploited Vulnerabilities 카탈로그에 등재
- SnowLight APT 캠페인: SoC-Radar 보고서에 따르면 중국 SnowLight Government APT 그룹이 CVE-2026-34486을 실제 공격에 사용함 (CISA ADP 태그)
- EPSS 0.426: 상위 1.5% — 실제 악용이 매우 활발함을 시사
세션 데이터 노출 위험
EncryptInterceptor 우회를 통해 다음 정보가 노출될 수 있다.
- 세션 데이터 및 인증 토큰
- 노드 간 전송 중인 민감 데이터
- 클러스터 내부 통신 내용
대응 방안
즉시 대응 (24시간 이내)
- Tomcat 버전 확인
# Tomcat 버전 확인
catalina.sh version
# 또는
cat $CATALINA_HOME/RELEASE-NOTES | head -n 5
영향 버전(9.0.116 이하, 10.1.53 이하, 11.0.20 이하)에 해당하면 다음 조치로 진행.
- 외부 노출 인스턴스 우선 조치
클러스터 환경에서 TCP 4000 포트가 외부 네트워크에 노출되어 있다면 즉시 접근 제어를 강화한다. 방화벽 규칙을 수정해 신뢰할 수 있는 클러스터 IP로만 접근을 제한한다.
# iptables 예시 — 신뢰할 수 있는 IP만 TCP 4000 허용
iptables -A INPUT -p tcp --dport 4000 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 4000 -s 172.16.0.0/12 -j ACCEPT
iptables -A INPUT -p tcp --dport 4000 -s 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 4000 -j DROP
- WAF 접근 제한
WAF를 운영하는 경우 TCP 4000 포트 또는 Tomcat Tribes 엔드포인트에 대한 접근을 차단하는 규칙을 적용한다.
- 로그 모니터링 활성화
Tomcat catalina.out 및 로컬 로그에서 "Failed to decrypt message" 패턴을 모니터링한다.
# 실시간 모니터링
tail -f $CATALINA_HOME/logs/catalina.out | grep -i "Failed to decrypt"
단기 대응 (1주 이내)
- 최신 버전으로 패치
| 버전 라인 | 패치 대상 |
|---|---|
| 9.0.x | 9.0.117 이상 |
| 10.1.x | 10.1.54 이상 |
| 11.0.x | 11.0.21 이상 |
# Red Hat 시스템의 경우
sudo yum update tomcat
# 또는 수동 업그레이드
wget https://archive.apache.org/dist/tomcat/tomcat-<version>/bin/apache-tomcat-<version>.tar.gz
- Red Hat RHSA 업데이트 적용
Red Hat 기반 시스템을 사용하는 경우 RHSA-2026:36787~39189 보안 어드바이저리를 확인하고 업데이트를 적용한다.
- EncryptInterceptor 설정 재검토
클러스터 통신에서 EncryptInterceptor의 설정을 다시 검토하고, 암호화 알고리즘과 키 관리를 최신 가이드에 맞게 구성한다.
장기 대응
- 인벤토리 관리
조직 내 모든 Tomcat 인스턴스의 버전을 파악하고, 패치 상태를 정기적으로 점검한다.
- HSTS/TLS 1.3 강화
모든 외부 통신에 TLS 1.3를 적용하고, HSTS를 활성화해 통신 암호화를 보장한다.
- 침투 테스트
패치 적용 후 침투 테스트를 수행해 EncryptInterceptor 우회 경로가 완전히 차단되었는지 확인한다.
- SIEM 모니터링 규칙 구축
다음 항목을 포함한 지속적인 모니터링 규칙을 SIEM에 구축한다.
- TCP 4000 포트의 외부 접근 시도
- "Failed to decrypt message" 로그 패턴
- tomcat 사용자의 의외 프로세스 생성 이벤트
- Java 역직렬화 관련 이상 활동
참고문헌
-
NVD — CVE-2026-34486
https://nvd.nist.gov/vuln/detail/CVE-2026-34486 -
CVE.org 공식 기록
https://www.cve.org/CVERecord?id=CVE-2026-34486 -
CISA Known Exploited Vulnerabilities Catalog
https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-34486 -
GitHub PoC — 404-src/CVE-2026-34486
https://github.com/404-src/CVE-2026-34486 -
Vicarius — 탐지/완화 스크립트
https://www.vicarius.io/vsociety/posts/ -
Red Hat 보안 어드바이저리
https://access.redhat.com/security/cve/CVE-2026-34486 -
SoC-Radar — SnowLight Government APT 캠페인 분석
https://socradar.io/blog/snowlight-government-chinese-campaign/
본 콘텐츠는 AI 기술로 생성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하시면 댓글을 통해 소중한 의견 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!