Zimbra Classic UI stored XSS CVE-2025-66376


요약
CVE-2025-66376은 Zimbra Collaboration Classic UI에서 HTML 메일의 CSS @import directive를 통해 발생하는 stored XSS 취약점이다. 공격자가 보낸 HTML 메일을 로그인한 사용자가 Classic UI에서 열면 피해자의 웹메일 세션 문맥에서 JavaScript가 실행될 수 있다.
Unit 42는 2026-07-23 공개한 분석에서 Zimbra webmail을 겨냥한 JavaScript injection 캠페인을 러시아 연계 사이버 첩보 활동으로 분류했다. 공개 보도에서는 이 취약점이 메일과 2FA 코드를 탈취하는 데 실제 악용(in the wild)됐다고 설명한다.
| 항목 | 내용 |
|---|---|
| 식별자 | CVE-2025-66376 |
| 취약점 유형 | Classic UI stored XSS |
| 취약 입력 | HTML 메일에 포함된 CSS @import directive |
| 영향 버전 | Zimbra Collaboration 10.0.18 미만, 10.1.13 미만 |
| 공격 조건 | 악성 HTML 메일 전송 후 사용자가 Classic UI에서 열람 |
| exploit primitive | 인증된 웹메일 문맥에서 JavaScript 실행 |
| 주요 영향 | 메일 및 인증 관련 데이터 접근·유출 |
| CVSS | 6.1 Medium |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N |
patch 이후에도 탈취된 인증 수단은 남는다
XSS 실행 과정에서 세션이나 인증 관련 데이터가 외부로 유출됐다면 제품 업데이트만으로 기존 접근 수단이 폐기되지 않는다. 의심 계정의 세션과 2FA 관련 정보를 함께 교체해야 한다.
취약 지점
NVD는 취약 입력을 HTML 메일의 CSS @import directive로 특정한다. Classic UI가 메일 본문을 렌더링하는 과정에서 해당 CSS 구문을 안전하게 차단하지 못해 stored XSS로 이어진다.
공격자는 서버에서 직접 프로세스를 실행하거나 파일을 쓰는 대신 피해자 브라우저의 authenticated origin을 이용한다. 따라서 이 취약점의 핵심은 RCE가 아니라 로그인된 Zimbra 세션에서의 JavaScript 실행이다.
NVD의 CVSS vector에는 다음 조건이 반영돼 있다.
- 네트워크를 통한 공격이 가능하다.
- 공격자가 Zimbra 계정을 보유할 필요는 없다.
- 피해자가 악성 메일을 열어야 한다.
- JavaScript는 취약한 메일 콘텐츠의 보안 경계를 넘어 Zimbra 웹메일 origin의 권한으로 동작한다.
- 기밀성과 무결성에 영향이 있지만 가용성 영향은 평가되지 않았다.
실행 흐름
공개 자료에서 확인되는 공격 흐름은 다음 수준이다.
- 공격자가 CSS
@importdirective를 포함한 악성 HTML 메일을 전송한다. - 로그인한 사용자가 Zimbra Classic UI에서 메일을 연다.
- 취약한 렌더링 경로에서 stored XSS가 트리거된다.
- JavaScript가 사용자의 인증된 웹메일 문맥에서 실행된다.
- 스크립트가 접근한 메일 또는 인증 관련 데이터가 외부로 유출될 수 있다.
별도의 첨부파일 실행이나 운영체제 명령 실행은 이 exploit primitive에 포함되지 않는다. 사용자 상호작용은 Classic UI에서 메일을 여는 동작이다.
영향 범위
영향 버전은 다음과 같다.
- Zimbra Collaboration 10.0.18 미만
- Zimbra Collaboration 10.1.13 미만
- Classic UI에서 악성 HTML 메일을 렌더링하는 환경
10.0 계열은 10.0.18 이상, 10.1 계열은 10.1.13 이상으로 업데이트해야 한다. 제공된 자료에서는 Modern UI가 같은 렌더링 경로의 영향을 받는다고 확인되지 않으므로 자산 조사에서는 설치 버전과 Classic UI 사용 여부를 함께 확인한다.
공개 캠페인 분석과 보도에서 확인되는 탈취 대상은 메일, credentials, 2FA 코드다. 저장된 비밀번호나 특정 앱 비밀번호까지 수집됐다는 세부 내용은 제공된 출처 본문만으로 확인되지 않는다.
공개 경과
| 날짜 | 내용 |
|---|---|
| 2026-07-23 | Unit 42가 Zimbra JavaScript injection을 이용한 러시아 연계 webmail 첩보 캠페인 분석 공개 |
탐지 포인트
네트워크
악성 메일 열람 시각을 기준으로 사용자 브라우저에서 시작된 외부 통신을 확인한다.
- 기존에 관측되지 않은 도메인에 대한 DNS 질의
- Zimbra 메일 열람 직후 발생한 외부 HTTP·HTTPS 요청
- 웹메일 사용자 단말에서 평소 사용하지 않던 호스트로 전송된 요청
- 프록시 로그에서 Zimbra 접속과 외부 전송이 짧은 간격으로 이어진 흐름
DNS 또는 외부 요청 하나만으로 침해를 확정하지 않는다. 메일 열람 시각, 브라우저 세션, 프록시 기록을 같은 시간축에서 비교한다.
엔드포인트
사용자 브라우저와 단말에서 다음 흔적을 확인한다.
- 의심 메일 열람 시각의 브라우저 방문 기록과 캐시
- Zimbra 탭에서 시작된 외부 origin 요청
- 브라우저 개발자 도구나 EDR telemetry에 남은 비정상 script 실행
- 메일 열람 직후 생성된 DNS 및 HTTP 연결
- 동일 세션에서 평소보다 많은 메일 객체에 접근한 흔적
브라우저 캐시를 정리하기 전에 관련 artifact와 네트워크 telemetry를 보존한다.
서버
Zimbra 서버와 메일 저장소에서는 원본 HTML을 기준으로 조사한다. 단순 <script> 검색만으로는 CSS 기반 payload를 찾기 어렵다.
- HTML 메일의 CSS
@importdirective - 외부 리소스를 참조하는 비정상 CSS
- 동일하거나 유사한 HTML 구조로 여러 사용자에게 전달된 메일
- 의심 메일 열람 직후 증가한 메일 조회
- 같은 계정에서 이어진 비정상 세션 또는 인증 활동
메일 검색은 정규화된 본문뿐 아니라 원본 MIME과 HTML part를 대상으로 수행한다. 조사 대상의 형태는 다음과 같은 CSS directive다.
@import url("...");
위 문자열 자체는 정상 메일에도 포함될 수 있다. 외부 참조 대상, HTML 구조, 수신 범위와 열람 이후 활동을 함께 분석한다.
대응
Zimbra Collaboration 10.0 계열은 10.0.18 이상, 10.1 계열은 10.1.13 이상으로 업데이트한다. 이후 다음 조치를 수행한다.
- 의심 메일 원본과 관련 로그를 보존한다.
- 동일한 HTML 구조나 발신 특성을 가진 메일을 전체 저장소에서 검색한다.
- 영향 가능성이 있는 사용자의 활성 웹 세션을 무효화한다.
- 해당 계정의 비밀번호를 변경한다.
- 2FA 코드가 노출됐을 가능성이 있으면 기존 복구 수단을 폐기하고 재발급한다.
- 의심 메일 열람 전후의 메일 접근, 인증, 프록시, DNS 기록을 분석한다.
- 동일 계정에서 발생한 후속 로그인과 비정상 메일 조회를 확인한다.
악성 메일 삭제는 추가 열람을 막지만 이미 탈취된 세션이나 인증 정보를 무효화하지 않는다. 반대로 세션과 credentials만 교체하면 최초 유입 메시지와 외부 통신 흔적이 사라질 수 있으므로 증거 보존을 먼저 수행한다.
참고 자료
- NVD CVE-2025-66376
- Unit 42 Russian Global Webmail Espionage
- Russian Espionage Group Exploited Zimbra Zero-Day to Steal Mail and 2FA Codes