CVE-2026-63077은 TeamCity의 agent polling 프로토콜을 악용하면 무인증 상태에서도 원격 코드 실행(RCE)이 가능한 치명적 취약점입니다. JetBrains는 자사 서비스인 Cadence의 오케스트레이션 서버에 들어 있던 TeamCity를 패치하지 않았고, 공격자는 이 서버로 무단 접근해 2024년 백업 데이터에 담긴 AWS IAM 사용자 자격증명과 시크릿을 탈취했습니다.
CVE-2026-63077: TeamCity agent polling protocol의 무인증 RCE
CVE-2026-63077은 TeamCity before 2026.1.3 및 2025.11.7 버전에 영향을 미치는 취약점입니다. 이 취약점은 신뢰할 수 없는 데이터의 역직렬화(deserialization of untrusted data) 문제와 관련이 있으며, CVSS 3.1 기준 9.8점의 Critical 등급으로 평가됩니다.
주요 기술적 특징은 다음과 같습니다.
- 공격 경로: HTTP(S) 접근이 가능한 무인증 공격자가 TeamCity 서버에 도달하기만 하면 agent polling 프로토콜로 공격을 수행할 수 있습니다.
- 영향: 공격자는 TeamCity 서버 프로세스의 권한으로 임의의 운영 체제 명령을 내릴 수 있는 원격 코드 실행(RCE) 권한을 획득합니다.
- 심각성: CISA는 2026년 8월 5일 이 취약점을 알려진 악용 취약점 카탈로그(KEV)에 등재했고, 악용 상태는 ‘active’, 자동화 가능 여부는 ‘yes’, 기술적 영향도는 ‘total’로 평가했습니다.
JetBrains의 초기 대응과 실제 악용 보고
JetBrains는 2026년 7월 27일 TeamCity On-Premises 사용자에게 이 취약점을 처음 알렸습니다. 수정 버전인 2025.11.7과 2026.1.3을 내놓았고, TeamCity 2017.1 이상 버전을 지원하는 보안 패치 플러그인도 함께 제공했습니다.
그러나 패치 배포 이후에도 위험은 계속되었습니다. 2026년 8월 7일, JetBrains는 패치가 적용되지 않은 TeamCity 서버를 겨냥한 실제 악용(active exploitation) 및 시도(attempted exploitation) 보고를 확인했다고 발표했습니다. 당시 공개된 진단 지표(IoC)로는 로그 내 com.thoughtworks.xstream.converters.ConversionException 발생 여부와 미승인 에이전트 이름의 ‘scan’ 접두사 사용 등이 있었습니다.
JetBrains Cadence 침해 타임라인 및 경로 분석
JetBrains의 호스팅 서비스인 Cadence는 PyCharm의 선택적 플러그인으로 연동되며, 클라우드 컴퓨트 리소스에서 프로젝트를 실행할 때 TeamCity로 워크로드를 오케스트레이션합니다. 침해 사고의 핵심은 이 Cadence 서버(api.cadence.jetbrains.com)가 CVE-2026-63077에 취약한 채 방치되어 있었다는 점입니다.
침해 진행 과정
- 무단 접근 (2026-08-08 ~ 08-24): 공격자는 TeamCity agent polling 프로토콜의 취약점을 악용해 Cadence 워크로드 오케스트레이션 서버에 무단 접근했습니다.
- 발견 및 조치 (2026-08-23 ~ 08-24): JetBrains는 8월 23일에 악용 사실을 발견했고, 8월 24일에 해당 서버를 오프라인으로 전환했습니다.
- 대응 조치: PyCharm의 JetBrains Cadence 플러그인이 연결에 사용하는 모든 접근 토큰을 무효화하고 관련 당국에 통보했습니다.
유출된 데이터 및 피해 범위
공격자는 서버 접근 뒤 아래 표와 같은 데이터를 탈취하거나 접근한 것으로 확인되었습니다.
| 구분 | 상세 유출 및 노출 항목 | 비고 |
|---|---|---|
| AWS 자격증명 | 다수 AWS IAM 사용자 자격증명 및 시크릿 (JetBrains 직원 포함) | 2024년 시점의 전체 백업에서 탈취 |
| 인프라 접근 | JetBrains AWS 계정 내 S3 버킷 파일 접근 | 고객 스토리지 버킷 접근 여부는 미확인 |
| 개인 데이터 | 사용자명, 실명, 이메일 주소, 마지막 로그인 타임스탬프, 마지막 접근 IP | 5종의 개인 데이터 확인 |
| 현재 환경 데이터 | 이메일 주소, 프로젝트 소스 코드, 자격증명 | 9월 3일 업데이트 기준 잠재적 노출 확인 |
사후 분석 및 보안 리스크 평가
JetBrains는 이 서버가 대응 과정의 일환으로 패치되었어야 했는데도 패치하지 못했음을 공식 인정하고 사과했습니다.
침해 분석 결과, 2024년 시점의 전체 백업 데이터가 공격 대상이 되어 다수의 AWS IAM 자격증명이 유출된 점이 치명타였습니다. 다만 2024년 백업의 정확한 생성 시점, 저장 위치, 접근 제어 방식이 명확하지 않아 백업 관리 실패의 구체적인 원인을 단정하기는 어려운 상태입니다. 유출된 AWS 자격증명을 활용한 후속 활동(서비스 접근, 리소스 생성 등)의 범위 역시 현재 공개된 자료에서 확인되지 않습니다.
조사는 2026년 9월 3일 최종 종료되었습니다. 8월 31일 시점에는 현재 Cadence 환경에서 데이터 반출 증거가 없다고 발표했지만, 9월 3일 최종 갱신에서는 위협 행위자가 현재 Cadence 사용자 데이터(이메일, 소스 코드, 자격증명 등)가 담긴 스토리지에 도달할 수 있는 접근 권한을 획득했음을 확인하고 이를 잠재적 노출로 처리했습니다.
Cadence 사용자를 위한 긴급 조치 권고
Cadence 환경을 이용했던 사용자라면 아래 범위의 자격증명과 시크릿을 모두 즉시 폐기하고 교체해야 합니다.
- 클라우드 플랫폼: AWS, Azure, GCP 자격증명
- 소스 제어 및 저장소: GitHub, GitLab, Bitbucket, Docker Hub, ECR, GCR, ACR
- 패키지 매니저: npm, Maven, NuGet, PyPI
- 기타: Slack 토큰, SSH 키, 서명 키 등
2026년 8월 8일 이후의 로그에는 다음 공격자 IP 주소의 활동 흔적이 있는지도 점검해 보기 바랍니다.
- 150.109.230.104, 43.153.227.206, 62.210.127.48, 210.247.242.190, 15.235.225.205, 152.233.30.18