Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2026-34486-tomcat_encrypt_bypass_reproduction — CVE 재현: cve-2026-34486-tomcat_encrypt_bypass_reproduction | Kitploit
도구/GitHubGitHub/razureink/cve-2026-34486-tomcat_encrypt_bypass_reproduction
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & Education
GitHubrazureink/cve-2026-34486-tomcat_encrypt_bypass_reproduction

cve-2026-34486-tomcat_encrypt_bypass_reproduction

CVE 재현: cve-2026-34486-tomcat_encrypt_bypass_reproduction

저장소 보기
21개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-34486: 아파치 톰캣 EncryptInterceptor 우회

필드값
CVECVE-2026-34486
CVSS7.5 HIGH
유형민감 데이터 암호화 누락
구성 요소Apache Tomcat Cluster EncryptInterceptor
게시일2026

개요

CVE-2026-34486은 CVE-2026-29146의 불완전한 수정으로 인해 발생한 회귀입니다. Apache Tomcat의 클러스터 복제에서 EncryptInterceptor는 클러스터 메시지를 암호화하고 인증하는 역할을 담당합니다. CVE-2026-29146 수정 과정의 리팩토링으로 인해 super.messageReceived(msg) 호출이 실수로 복호화 실패를 처리하는 try-catch 블록 외부로 이동되었습니다. 그 결과, 메시지 복호화에 실패할 경우(즉, 인터셉터가 암호화된 데이터를 예상했지만 일반 텍스트로 수신된 경우), 원래 암호화되지 않은 메시지가 폐기되지 않고 핸들러 체인에 그대로 전달됩니다.

기술 세부 사항

코드 흐름 회귀

EncryptInterceptor.messageReceived() 메서드는 클러스터 메시지가 도착하면 호출됩니다. 예상되는 흐름은 다음과 같습니다:

  1. 원시 메시지 바이트 수신
  2. 메시지 복호화 및 검증 (try-catch 내부)
  3. 복호화에 성공하면 super.messageReceived(msg)를 호출하여 복호화된 메시지 전달
  4. 복호화에 실패하면 메시지 폐기 (또는 오류 로깅)

취약한 버전에서는 복호화/검증 로직이 여전히 try-catch로 감싸여 있지만, 호출 체인이 재구성되어 super.messageReceived(msg)가 복호화를 보호하는 try-catch 블록 외부에서 실행됩니다. 변수 msg는 try-catch 이전에 선언되고 내부에서 할당됩니다. 복호화가 예외를 발생시키면 msg는 초기 (암호화되지 않은/원시) 값을 유지하며, catch 블록은 오류만 기록할 뿐 조기 반환하지 않습니다. 실행은 처리되지 않은 원시 데이터와 함께 super.messageReceived(msg)로 계속 진행됩니다.

이는 Tomcat 클러스터 포트에 접근할 수 있는 공격자가 인터셉터가 수락하고 처리할 임의의 암호화되지 않은 메시지를 주입할 수 있음을 의미합니다.

버그의 단순화된 의사코드

root@kitploit:~
public void messageReceived(Message msg) {
    // msg arrives raw
    try {
        // decrypt and populate msg fields
        decrypt(msg);
    } catch (Exception e) {
        log.error("Decryption failed", e);
        // BUG: no return statement here
    }
    // msg is still the original unencrypted object when catch is hit
    super.messageReceived(msg); // outside try-catch → passes raw data
}

수정 사항은 다음 중 하나를 보장해야 합니다:

  • super.messageReceived(msg)가 복호화 성공 후 try 블록 내에서만 호출되도록 하거나,
  • catch 블록에서 즉시 반환하여 암호화되지 않은 메시지가 전달되지 않도록 합니다.

영향을 받는 버전

제품버전
Apache Tomcat 1111.0.20
Apache Tomcat 1010.1.53
Apache Tomcat 99.0.116

재현

사전 요구 사항

  • EncryptInterceptor를 사용하는 클러스터 복제가 활성화된 취약한 Tomcat 인스턴스
  • Tomcat 클러스터 포트(일반적으로 <Receiver>를 통해 구성된 4000 또는 5000)에 대한 네트워크 액세스
  • Python 3.6+

단계

  1. server.xml에 EncryptInterceptor가 구성된 Tomcat 클러스터 멤버를 식별합니다.
  2. 클러스터 수신기 주소와 포트를 확인합니다.
  3. 익스플로잇 스크립트를 실행하여 조작된 원시 클러스터 메시지를 전송합니다.
  4. 메시지가 수신되어 로깅되며 암호화 검증을 우회하는지 확인합니다.

PoC

이 디렉토리의 exploit.py 스크립트는 우회를 시연합니다. 이 스크립트는 최소한의 Tomcat 클러스터 메시지(ClusterMessage 직렬화 형식 기반)를 구성하고 암호화 없이 수신기 포트로 직접 전송합니다. 취약한 인터셉터는 암호화가 누락되었음에도 불구하고 메시지를 수락하고 전달합니다.

완화

패치된 버전의 Apache Tomcat으로 업그레이드하세요:

제품패치 버전
Apache Tomcat 1111.0.21+
Apache Tomcat 1010.1.54+
Apache Tomcat 99.0.117+

즉시 업그레이드가 불가능한 경우, Tomcat 클러스터 포트에 대한 네트워크 액세스를 신뢰할 수 있는 호스트로만 제한하십시오(예: 방화벽 규칙을 사용하거나 수신기를 루프백 또는 개인 인터페이스에 바인딩).

참고 자료

  • CVE-2026-34486
  • CVE-2026-29146 (원본 취약점)
  • Apache Tomcat Security Advisories
  • EncryptInterceptor Documentation
도구 다운로드