Security

TeamCity 2026.1.3·2025.11.7 이전: CVE-2026-63077 무인증 RCE 영향 범위와 Cadence 연동 위험 판단

ITD 2026. 9. 6. 11:10

CVE-2026-63077은 TeamCity 2026.1.3 및 2025.11.7 이전 버전에 영향을 주며, 무인증 상태에서 역직렬화 결함으로 원격 코드 실행(RCE)이 가능합니다. 특히 JetBrains Cadence와 연동된 환경에서는 이 취약점을 악용해 오케스트레이션 서버에 무단 접근한 뒤 2024년 시점의 백업 데이터에 저장된 AWS IAM 자격증명 및 시크릿이 탈취되는 심각한 보안 침해가 실제로 벌어졌습니다.

TeamCity 2026.1.3·2025.11.7 이전: CVE-2026-63077 무인증 RCE 영향 범위와 Cadence 연동 위험 판단
TeamCity 2026.1.3·2025.11.7 이전: CVE-2026-63077 무인증 RCE 영향 범위와 Cadence 연동 위험 판단

CVE-2026-63077 개요: CVSS 9.8 무인증 RCE와 역직렬화(CWE-502) 성격

CVE-2026-63077은 TeamCity 서버의 agent polling 프로토콜에서 발생하는 취약점으로, 공격자가 인증 없이도 원격으로 코드를 실행하게 만듭니다. 취약점의 핵심 원리는 신뢰하지 않는 데이터의 역직렬화(Deserialization of Untrusted Data, CWE-502) 결함인데, 이 결함을 악용하면 공격자가 TeamCity 서버 프로세스의 권한으로 임의의 운영체제 명령을 내리게 됩니다.

보안 영향도는 치명적입니다. CVSS 3.1 기준 점수 9.8(CRITICAL)로 평가되었습니다. HTTP(S) 접근이 가능한 무인증 공격자가 취약한 TeamCity 서버에 닿기만 하면 즉시 코드가 실행되고, 저장된 자격증명 노출, 서버 상태 수정, 빌드 아티팩트 및 다운스트림 CI/CD 파이프라인의 무결성 훼손으로 번질 수 있습니다.

영향 버전과 수정 버전: 2026.1.3 미만·2025.11.7 미만 판별 기준

이 취약점은 TeamCity On-Premises의 모든 버전에 영향을 미칩니다. 구체적인 영향 범위와 수정 버전은 아래 표와 같습니다.

구분 상세 내용
영향 버전 TeamCity 2026.1.3 미만 및 2025.11.7 미만 버전 전체
수정 버전 2026.1.3 버전 및 2025.11.7 버전
특이 사항 TeamCity Cloud 고객은 조치 불필요 (이미 완화 조치 적용됨)
대체 조치 즉시 업그레이드 불가 시 TeamCity 2017.1 이상용 보안 패치 플러그인 제공

공격 원리와 실제 악용 사례: JetBrains Cadence 침해 분석

1. 공격 메커니즘

공격자는 TeamCity의 agent polling 프로토콜을 악용해 인증 과정을 우회합니다. 역직렬화 취약점으로 서버 권한을 획득한 뒤, 서버 내부에 저장된 설정 정보와 자격증명에 접근하는 식으로 공격이 진행됩니다.

2. JetBrains Cadence 침해 시계열

JetBrains가 운영하는 Cadence 환경은 TeamCity로 워크로드를 오케스트레이션하는데, 해당 TeamCity 서버가 CVE-2026-63077에 취약한 채로 방치되면서 실제 침해로 이어졌습니다.

  • 2026-07-27: JetBrains가 CVE-2026-63077 취약점을 최초 고지했습니다.
  • 2026-08-05: CISA가 해당 취약점을 Known Exploited Vulnerabilities(KEV) 카탈로그에 등재하면서 실제 악용이 확인됐습니다.
  • 2026-08-07: JetBrains가 패치 미적용 서버를 대상으로 한 실제 악용 및 시도 보고를 확인했다고 발표했습니다.
  • 2026-08-08 ~ 2026-08-24: Cadence 환경(api.cadence.jetbrains.com)에 무단 접근이 발생했습니다.
  • 2026-08-23: JetBrains가 Cadence 서버의 악용 사실을 발견했습니다.
  • 2026-08-24: 해당 서버를 오프라인화하고 PyCharm Cadence 플러그인의 모든 접근 토큰을 무효화했습니다.

Cadence 연동 환경의 위험 평가: AWS 자격증명 및 백업 침해

Cadence 침해 사례에서 드러난 가장 심각한 위험은 단순한 RCE를 넘어선 자격증명 및 데이터 탈취입니다. 위협 행위자는 RCE로 무단 접근한 뒤 다음과 같은 리스크를 일으켰습니다.

  1. 백업 데이터 침해: 공격자는 Cadence 서버의 2024년 시점 전체 백업을 침해했습니다.
  2. AWS 자격증명 탈취: 침해된 백업에 들어 있던 다수의 AWS IAM 사용자 자격증명과 시크릿이 탈취됐습니다. 여기에는 JetBrains 직원 소속의 IAM 사용자 정보도 포함되어 있었습니다.
  3. 클라우드 리소스 접근: 공격자는 JetBrains AWS 계정 내 Cadence가 사용하는 S3 버킷 파일에 접근했습니다. 고객이 자체 버킷 연결에 사용한 자격증명 역시 노출 가능성이 있는 것으로 평가됐습니다.
  4. 잠재적 데이터 노출: 2026-09-03 업데이트에 따르면 현재 Cadence 사용자의 이메일 주소, 프로젝트 소스코드, 자격증명이 포함된 스토리지에 대한 추가 노출 가능성이 확인됐습니다.

다만 탈취된 자격증명으로 수행된 구체적인 후속 활동(서비스 접근, 리소스 생성 등)의 범위, 영향받은 IAM 사용자의 정확한 수량, 2024년 백업의 상세 관리 방식 등은 공개된 자료에서 명확히 확인되지 않습니다.

대응 가이드 및 침해 여부 판단 기준

1. 기술적 조치

가장 확실한 대응책은 TeamCity를 2026.1.3 또는 2025.11.7 버전으로 즉시 업그레이드하는 것입니다. 당장 업그레이드가 불가능한 환경이라면 2017.1 버전 이상에서 사용할 수 있는 공식 보안 패치 플러그인을 적용합니다.

2. 침해 탐지 지표(IoC)

운영 중인 TeamCity 서버의 로그와 설정에서 아래 지표로 침해 시도 여부를 확인합니다.

  • XStream 예외 로그 확인:
    • com.thoughtworks.xstream.converters.ConversionException: 패치 적용 전 침해 시도가 있었을 가능성을 시사합니다.
    • com.thoughtworks.xstream.security.ForbiddenClassException: 패치 적용 후 공격 시도가 차단되었음을 나타냅니다.
  • 무단 빌드 에이전트 확인: 빌드 에이전트 목록에 이름이 'scan'으로 시작하는 항목이 있다면 외부 공격자가 시도한 악용으로 보면 됩니다.

3. 사후 조치 권고

JetBrains Cadence와 같이 취약한 TeamCity에서 자격증명이 노출된 환경이라면 단순 패치로는 부족합니다. 다음 조치가 필수입니다.

  • 노출 가능성이 있는 모든 AWS IAM 사용자 자격증명 및 시크릿의 폐기 및 재발급(Rotate).
  • 침해 기간 내 생성된 실행 결과물에 대한 신뢰 불가 처리.

함께보면 좋은 글!

 

toHaveScreenshot() 비교 환경 일관성과 pixelmatch 옵션 선택 기준

Playwright의 toHaveScreenshot() 시각 비교에서 반복적인 테스트 실패를 방지하려면 기준 스크린샷을 생성한 환경과 비교 실행 환경(OS, 브라우저 버전, 헤드리스 모드 등)을 완전히 일치시켜야 합니다. 렌더링의 비결정적 요소는 pixelmatch 옵션과 커스텀 스타일시트(stylePath)로 제어합니다.toHaveScreenshot()의 기준 생성과 비교 동작 원리Playwright Test는 await expect(page).toHaveScreenshot() 메서드로 페이지의 현재 상태를 스크린샷으로 만든 뒤 기존 기준과 시각적으로 비교합니다.동작은 크게 두 단계입니다. 최초 실행 시 Playwright는 현재 페이지의 스크린샷을 생성해 기준(reference) 스크린샷으로 저장합니..

ITDesk

 

맨체스터 공항그룹 유출, 결제 정보 없는데 이메일·차량번호 노출의 실질 위험은 무엇인가

맨체스터 공항그룹(MAG) 유출 사고에서 결제 및 은행 정보가 제외되었다 하더라도, 노출된 이메일, 전화번호, 차량 등록 번호, 우편번호의 조합은 공격자가 피해자의 예약 상태나 차량 정보를 구체적으로 언급하며 신뢰를 얻는 표적형 피싱 및 스미싱에 악용될 수 있는 수준의 위험입니다. FulcrumSec이 주장하는 프론트엔드 JavaScript 내 API 키 노출은 기술적 가능성이 제기되긴 했지만 독립적으로 검증된 사실이 아니어서, 공격자의 일방적 주장으로 평가하는 것이 맞습니다.MAG 공식 성명이 확인한 유출 항목과 금융 정보 부재의 의미맨체스터 공항그룹(MAG)은 Manchester, Stansted, East Midlands 공항의 주차, 라운지, Fast Track 예약 및 공항 Wi-Fi 가입과 관..

ITDesk

 

PHP 역직렬화 점검: 신뢰 경계 식별과 POP 체인 가용성 판단 기준

PHP 애플리케이션에서 unserialize() 입력 경로가 위험한지 판단하는 기준은 두 가지입니다. 해당 입력값이 공격자가 수정 가능한 신뢰 경계 외부의 데이터인지, 그리고 애플리케이션 안에 매직 메서드를 포함한 클래스가 존재하며 이것이 POP 체인으로 연결될 가용성을 갖췄는지입니다.unserialize()와 PHP 역직렬화 취약점의 기본 구조PHP의 unserialize() 함수는 직렬화된 문자열을 다시 PHP 값으로 되돌립니다. 이 함수 자체가 임의의 PHP 코드를 직접 실행하는 기능은 아닙니다. 다만 객체를 복원하는 과정에서 특정 조건이 충족되면 보안 약점이 발생합니다.객체가 복원될 때 PHP는 해당 클래스에 __wakeup() 또는 __unserialize() 메서드가 정의되어 있다면 이를 자동..

ITDesk