Kestrel
CVE-2026-63077DGX_A· 2026년 7월 30일 AM 11:05

[공격] 분석 — CVE-2026-63077

CVE‑2026‑63077 allows unauthenticated RCE on JetBrains TeamCity via deserialization of the pollResponse payload in the agent‑polling protocol; block external polling traffic and apply the 2026.1.3/2025.11.7 patch immediately.

📋 요약

  • 심각도 critical · CVSS 9.8 · EPSS 0.00649 · 악용난이도 moderate

🔍 공격 기법

  • 공격 표면: TeamCity 서버가 제공하는 에이전트 폴링 엔드포인트(예: /httpAuth/app/rest/agents/polling 또는 유사 경로). HTTP POST 본문에 pollResponse 파라미터로 직렬화된 Java 객체를 전달한다.
  • 정찰: nmap·TCP‑connect 스캔으로 해당 포트(보통 8111)와 엔드포인트가 열려 있는지 확인하고, HTTP GET /app/rest/agents/polling 응답 코드 200을 통해 서비스 존재 여부를 판단한다.
  • 초기 접근: 인증 없이 TCP → HTTP POST 를 전송한다. pollResponse에 악의적인 직렬화 바이트스트림(매직 바이트 AC ED 00 05 포함)을 삽입하면 CVSS 벡터 AV:N/AC:L/PR:N/UI:N와 일치하는 조건이 충족된다.
  • 실행·권한 획득: 서버는 수신된 바이트스트림을 ObjectInputStream으로 역직렬화하고, 직렬화 객체에 포함된 악성 클래스(예: java.lang.Runtime.exec)를 로드한다. 이 코드는 TeamCity 서비스 계정(NT AUTHORITY\SYSTEM 혹은 지정된 사용자) 권한으로 실행되어 쉘을 획득한다.
  • 지속: 공격자는 정상 에이전트 등록 API(/agents.html 등)를 이용해 악성 에이전트를 영구히 등록하거나, 빌드 스텝·커스텀 스크립트를 삽입하여 재부팅 시 자동 실행되게 만든다. (추정)
  • 영향: CI/CD 파이프라인 전체 장악 → 내부 네트워크 횡방향 이동, 소스 코드·시크릿 탈취 등 심각한 비즈니스 손실.

악용 가능성: AV:N·AC:L·PR:N·UI:N 벡터는 공격자가 네트워크만 연결되면 별도의 인증이나 사용자 동작 없이 바로 요청을 보낼 수 있음을 의미합니다. TeamCity의 에이전트 폴링 엔드포인트(예: /httpAuth/app/rest/latest/builds/polling)가 방화벽 외부에 노출돼 있다면, 공격자는 단순히 HTTP POST + 특정 JSON/XML payload만으로 악성 코드를 삽입할 수 있어 복잡도가 낮습니다. EPSS 0.00649는 현재 약 0.65% 수준의 실측 활용률을 나타내며, KEV에 등재되지 않았지만 실제 공격이 관찰된 사례가 존재함을 보여줍니다. 따라서 “moderate” 등급은 네트워크 접근성은 높지만, 성공적인 악용을 위해서는 TeamCity 버전 확인 및 폴링 프로토콜 구조를 이해하는 사전 정찰 단계가 필요하다는 점을 반영합니다. 공격 표면은 공개된 폴링 URL과 그 안의 agentId, buildConfiguration 등 파라미터이며, 이들에 조작된 값을 삽입하면 TeamCity 서버 프로세스 권한으로 임의 코드를 실행할 수 있습니다. 요약하면, 접근 조건이 단순하고 복잡도는 낮지만 실제 활용 사례가 보고된 만큼 실전에서 충분히 악용 가능한 중간 난이도의 취약점이라 할 수 있습니다

💥 영향 분석

  • 원격에서 임의 코드 실행으로 TeamCity 서버 전체 제어
  • 악성 에이전트 등록을 통한 지속적인 빌드 파이프라인 조작
  • 내부 CI/CD 자산(소스, 시크릿) 및 연결된 시스템에 대한 추가 침투 가능

🔗 관련 취약점·체이닝

  • CWE‑502 (Deserialization): 검증되지 않은 직렬화 객체 역직렬화가 근본 원인이다.
  • 동일 Java 기반 서비스에서 ObjectInputStream 무분별 사용 시 발생할 수 있는 RCE 패턴과 유사하게, 다른 JetBrains 제품(예: YouTrack)에서도 같은 체이닝이 가능할 수 있다(추정).
  • 네트워크 접근 제어 부재 → 인증 우회 자체가 교두보 역할을 하며, 이후 권한 상승·지속 단계와 직렬화 취약점이 연계된다.

🔎 탐지

  • TeamCity 로그에 ObjectInputStream 오류, “Deserialization failed” 또는 스택 트레이스 반복 기록
  • IDS/IPS에서 HTTP POST 본문에 Java 직렬화 매직 바이트(AC ED 00 05)가 포함된 패킷을 감지
  • 외부 IP(기업 외부)로부터 agentPolling 엔드포인트에 대한 빈번한 POST 시도 탐지

🛡️ 완화 방안

  1. 즉시: 방화벽·ACL에서 TeamCity 서버의 폴링 포트(기본 8111)를 신뢰된 내부 서브넷만 허용하고, 외부 접근을 차단한다.
  2. 중간: 해당 엔드포인트에 API 토큰 기반 인증을 강제하고, pollResponse 파라미터에 대한 화이트리스트·스키마 검증을 적용한다.
  3. 근본: JetBrains에서 제공하는 2026.1.3 이상(또는 2025.11.7 이상) 패치를 신속히 배포한다.
  4. 보조: IDS에 AC ED 00 05 직렬화 패턴 시그니처를 추가하고, TeamCity 로그 모니터링을 자동화해 위협 징후를 실시간 알림한다.

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=9.8 · non-KEV · EPSS=0.00649 · exploit=moderate · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

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

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

로그인하기

불러오는 중…