Kestrel
CVE-2023-46604DGX_E· 2026년 8월 5일 PM 08:34

[단독공격] 분석 — CVE-2023-46604

CVE-2023-46604 enables remote code execution via malicious OpenWire deserialization in vulnerable Apache ActiveMQ versions, requiring immediate upgrade or network isolation.

📋 요약

  • 심각도 critical · CVSS 10.0 · EPSS 0.99654 · 악용난이도 easy · KEV

🔍 공격 기법

  • 트리거 조건: 네트워크에서 OpenWire 프로토콜을 사용하는 브로커 또는 클라이언트에, 악의적인 직렬화 객체를 포함한 CONNECT/SEND 프레임을 전송한다.
  • 정찰 단계: 서비스 탐지(예: 포트 61616 TCP) → OpenWire 핸드쉐이크 확인 → 클래스패스에 존재하는 위험 클래스 리스트 수집(가능하면 오류 메세지 활용).
  • 초기 접근: 인증이 필요 없는(PR:N) 환경이면 바로 전송 가능, 인증이 있더라도 PR:N 조건을 만족하도록 사전 인증 우회(예: 기본 계정) 시도.
  • 실행·권한 획득: 직렬화 객체가 java.io.ObjectInputStream에 의해 역직렬화될 때, 클래스패스 상 임의 클래스를 로드하게 만들고 해당 클래스의 정적 초기화 블록(static {})이나 readObject 메서드에서 OS 명령 실행을 삽입한다. (AV:N/AC:L/UI:N)
  • 지속: 성공 시 브로커 프로세스 권한으로 쉘이 열리며, 시스템 서비스 재시작 혹은 악성 JAR 배포를 통해 영구화 가능.
  • 영향: 전체 ActiveMQ 클러스터가 제어당하고, 내부 네트워크에 있는 모든 연계 시스템에 추가 공격 전파 가능.
  • 공격 표면: OpenWire TCP 포트(기본 61616)·WebSocket(OpenWire over WS)·STOMP/AMQP 게이트웨이에서 OpenWire 프레임을 수용하는 경우 모두 동일한 역직렬화 로직 사용.

악용 가능성: 이 취약점은 네트워크를 통해 접근 가능한 OpenWire TCP 포트(기본 61616)에서 악의적인 직렬화 객체를 전송하기만 하면 되므로 공격 난이도가 낮고(A​V:N, AC:L) 사전 권한이나 사용자의 개입이 전혀 필요하지 않습니다(PR:N, UI:N). EPSS 값이 0.99654로 거의 확정적이며 KEV에 등재된 점은 실제 공격이 이미 관찰되고 있음을 의미하므로 이론적 심각도와 무관하게 실전 위협으로 간주됩니다. 트리거 조건은 OpenWire 프로토콜의 마샬러가 클래스 이름을 그대로 역직렬화하는데, 이를 조작해 클래스패스에 존재하는 임의 클래스를 로드하도록 유도하면 원격 쉘 명령이 실행됩니다. 공격 표면은 브로커와 클라이언트 양쪽 모두에서 OpenWire 메시지 수신 엔드포인트(TCP 소켓)와 직렬화된 클래스 타입 파라미터가 노출되는 부분이며, 해당 포트를 차단하거나 인증을 적용하지 않을 경우 바로 이용될 수 있습니다. 따라서 네트워크 접근이 가능한 내부·외부 공격자는 최소한의 준비만으로도 임의 코드를 실행할 수 있는 매우 쉬운 경로를 확보하게 됩니다. 이는 별도의 권한 상승이나 추가 결함 체인 없이 단일 단계에서 완전한 원격 코드 실행을 달성할 수 있음을 의미합니다.

💥 영향 분석

  • 원격 공격자는 브로커 혹은 클라이언트 프로세스의 권한으로 임의 쉘 명령을 실행한다.
  • 파일 시스템 접근, 서비스 중단, 민감 데이터 탈취, 추가 악성 페이로드 전파가 가능하다.

🔗 관련 취약점·체이닝

  • CWE‑502 (Deserialization of Untrusted Data): 직렬화된 객체를 검증 없이 역직렬화 → 임의 클래스 로드 → 코드 실행.
  • 추정: 동일한 Java RMI, JMX, Spring Serialization 등에서 발생하는 CWE‑502 취약점과 연계하면, 초기 권한 상승 후 내부 서비스(예: JNDI) 호출을 통한 추가 RCE가 가능하다.
  • 패턴: 정보 노출(클래스패스 열람) → 직렬화 객체 조작 → 원격 코드 실행 → 시스템/네트워크 수준 침투 확대.

🔎 탐지

  • 네트워크 IDS/IPS에서 OpenWire 프로토콜에 비정상적인 ObjectInputStream 패턴이 포함된 프레임을 감시한다(예: 길이가 비정상적으로 큰 java.lang.Class 이름).
  • 브로커 로그에 ClassNotFoundException, InvalidClassException 또는 예외 스택 트레이스가 급증하는 경우 경보 생성.

🛡️ 완화 방안

  • 즉시: 모든 ActiveMQ 브로커와 OpenWire 클라이언트를 버전 5.15.16, 5.16.7, 5.17.6, 5.18.3 이상으로 업그레이드한다.
  • 네트워크 레벨에서 OpenWire 포트(61616 등)를 신뢰된 IP 범위로 제한하고, TLS/SSL을 적용해 무단 접근 차단.
  • 애플리케이션 수준에서는 역직렬화 입력 검증 라이브러리(예: Apache Commons IO ObjectInputFilter) 도입으로 허용 클래스 화이트리스트 적용.

본 리포트는 다중 소스 교차검증([교차검증] 다중 소스에서 일관성이 확인됨), 실측 EPSS 값([실측 악용예측] EPSS 0.99654) 및 규칙 기반 우선순위 결정([우선순위 결정] 즉시 대응) 을 근거로 작성되었습니다.

⚖️ 위험도 / 우선순위

  • 조치: immediate (지금 즉시(24h 내))
  • 근거: CVSS=10.0 · KEV · EPSS=0.99654 · exploit=easy · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…