flawopen.com/Teardowns/cve-2026-73570-zimbra-snmp-command-injection
CVE-2026-73570: Zimbra SNMP 알림 경로에서 명령 주입이 발생한 과정
CVE-2026-73570은 Zimbra의 선택적 SNMP 알림 경로에 있는 인증 없는 명령 주입 취약점입니다. 조작된 이메일이 상태 값에 영향을 주고, 그 값이 나중에 셸 명령에 삽입될 수 있었습니다. Zimbra는 10.1.20에서 호출 방식을 수정했습니다. 이후 Microsoft는 공개 전에 스캔 도구가 취약한 경로를 탐색했다고 보고했습니다.[1], [2], [5]
우편 분류 담당자가 봉투의 라벨을 작업 지시서에 옮겨 적습니다. 이전 절차는 지시서 전체를 명령 해석기에 넘겨 라벨의 문자를 추가 명령으로 오해할 수 있었습니다. 수정 후에는 알림 프로그램에 인수를 각각 전달하므로 라벨은 데이터로만 남습니다.[8], [9], [3]
핵심 개념 및 용어
swatchdog- 이 Zimbra 경로에서 로그를 감시하고 서비스 상태 메시지를 찾아 알림 처리를 시작하는 프로세스입니다.[1]
SNMP trap- 이벤트가 발생했을 때 관리 대상 시스템이 SNMP 모니터링 수신기로 보내는 알림입니다.[1]
프레임워크 매핑
- 이 가이드에서 설명하는 약점의 CWE 참조: CWE-78
- CISA KEV — 추가일 2026-08-21 — CVE-2026-73570
근본 원인 분석 (Root Cause)
영향을 받은 코드는 rpmconf/Conf/swatchrc의 dosnmp 함수에 있습니다. swatch 규칙은 상태 줄에서 서비스 이름을 캡처해 donotify를 통해 SERVICE로 전달하고, dosnmp는 이 값을 $snmptrap이 포함된 역따옴표 명령에 삽입했습니다. 역따옴표는 셸을 호출하므로 로그에서 온 값이 명령 문법으로 해석될 수 있었습니다. 문서화된 전제 조건은 모두 충족되어야 합니다. Zimbra Collaboration Suite가 10.1.20보다 낮고, 선택 패키지 zimbra-snmp가 설치되어 있으며, SNMP 알림이 활성화되어야 합니다. Microsoft는 조작된 SMTP 입력이 알림 경로에 도달할 수 있었다고 보고했습니다. 또한 2026년 7월 28일부터 8월 7일까지 스캔 도구가 취약한 주입 지점을 탐색한 것을 관찰했습니다. 이는 7월 20일 패치 후이자 8월 13일 공개 전입니다. Zimbra 수정은 셸 문자열을 목록 형식 system(...)으로 바꿔 실행 파일과 인수를 분리해 전달하며, 실행 경로에서 셸을 제거합니다. 이 분석은 SNMP 알림 코드에 한정되며 모든 Zimbra 설치나 SMTP 이메일이 취약하다는 뜻은 아닙니다.[1], [2], [3], [5], [7]
CVE-2026-73570 도달 조건 및 조치 매트릭스
| 배포 조건 | 문서화된 경로가 적용되는가? | 방어 조치 |
|---|---|---|
Zimbra Collaboration Suite 10.1.20 미만, 선택적 zimbra-snmp 패키지 설치, SNMP 알림 사용. | 문서화된 알림 경로에는 세 조건이 모두 필요합니다. Microsoft는 조작된 SMTP 입력이 서비스 상태 값에 영향을 주고 이후 dosnmp에서 처리될 수 있다고 보고했습니다. | 10.1.20 이상으로 업그레이드하세요. 노출 기간의 관련 로그와 프로세스 텔레메트리를 검토하고, 지표는 침해 증거가 아니라 조사 단서로 취급하세요. |
zimbra-snmp 패키지가 없거나 SNMP 알림이 비활성화됨. | 이 구성에서는 설명된 dosnmp 알림 경로가 활성화되지 않습니다. 서버에 다른 취약점이 없다는 뜻은 아닙니다. | 서버를 패치할 때까지 기능을 비활성화하거나 패키지를 설치하지 마세요. 모든 mailbox 노드를 확인하고 각각의 설정을 점검하세요. |
| Zimbra Collaboration Suite 10.1.20 이상이며 공급업체 수정 패키지가 설치됨. | 문서화된 셸 명령 구성은 10.1.20에서 수정되었습니다. 버전 문자열만으로 모든 노드나 로컬 변경을 확인할 수는 없습니다. | 각 노드의 설치 버전과 패키지를 확인하고, 과거에 세 노출 조건을 모두 충족한 기간이 있다면 일반적인 사고 조사 절차를 따르세요. |
단계별 공격 실행 흐름
전제 조건이 충족됨
10.1.20 미만 버전, zimbra-snmp 설치, SNMP 알림 활성화가 모두 필요합니다.[1]
메일이 모니터링 값에 영향을 줌
Microsoft에 따르면 SMTP 요청이 로그의 상태 값에 영향을 줄 수 있었습니다. 악용 문자열과 네트워크 단계는 생략합니다.[1]
swatchdog가 값을 전달
규칙이 서비스 필드를 캡처해 알림이 켜진 경우 donotify를 통해 dosnmp로 보냅니다.[1]
셸이 값을 명령으로 해석
패치 전 Perl 역따옴표는 캡처 값을 포함한 문자열을 Zimbra 서비스 계정으로 셸에 전달했습니다.[1]
10.1.20이 셸을 제거
수정은 별도 인수로 snmptrap을 호출합니다. 업데이트 후 노출 시스템을 조사하세요. 수정이 과거 활동을 배제하지 않습니다.[1]
소스 코드 비교: 취약한 구현 vs 보안 패치
취약한 역따옴표는 보간된 문자열을 셸에 넘깁니다. 업스트림 수정은 여러 인수의 system을 사용해 실행 파일과 각 인수를 나눠 전달하므로 SERVICE의 메타 문자가 셸 명령이 되지 않습니다. 변경된 호출을 보여주는 발췌이며 실행 가능한 exploit이나 전체 파일은 아닙니다.[3], [4], [8], [9]
소스 코드 발췌: rpmconf/Conf/swatchrc: dosnmp
# 취약한 dosnmp 구현의 축약본. 악용 입력은 표시하지 않음.
sub dosnmp {
my %args = (@_);
`$snmptrap $snmpsvctrap $snmpsvcname s $args{SERVICE} $snmpsvcstatus i $statuses{$args{STATUS}}`;
}
# Zimbra 10.1.20 수정: 프로그램을 직접 실행하고 인수를 분리해 전달.
sub dosnmp {
my %args = (@_);
system(
"/opt/zimbra/common/bin/snmptrap",
"-v", "2c", "-c", "zimbra", $traphost, "",
$snmpsvctrap, $snmpsvcname, "s", $args{SERVICE},
$snmpsvcstatus, "i", $statuses{$args{STATUS}}
);
}
엔지니어링 및 시스템 보안 강화 체크리스트
- ✓모든 Zimbra Collaboration 10.1.20 미만 설치를 10.1.20 이상으로 업데이트하고 모든 mailbox 노드의 패키지 버전을 확인합니다.[2], [1]
- ✓
zimbra-snmp설치 여부와 SNMP 알림 활성화 여부를 조사합니다. 패치가 늦어지면 상황에 따라 선택 패키지를 제거하거나 알림을 끄고 SMTP와 SNMP 접근을 신뢰하는 시스템으로 제한합니다.[1] - ✓두 전제 조건을 충족하고 인터넷에서 접근 가능한 미패치 시스템은 노출된 것으로 간주합니다. 로그와 엔드포인트 텔레메트리에서 예상하지 못한 상태 값과 Perl 또는 swatchdog가 만든 이상 자식 프로세스를 확인합니다.[1], [6]
- ✓패치 전에 노출되었다면 로그를 보존하고 영향을 받은 mailbox 노드를 범위화해 지속성 및 계정 활동을 조사합니다. 증거나 노출 수준에 따라 비밀 정보를 교체합니다.[1], [6]
- ✓코드 리뷰에서 로그, 이메일 등 외부 입력에서 온 값이 포함된 셸 문자열 실행을 금지합니다. 인수 벡터 API를 우선하고 셸을 사용하는 인터페이스는 허용 값을 엄격히 검증합니다.[8], [9], [7], [3]
- ✓서비스 값이 단일 리터럴 인수로 전달되고 셸이 시작되지 않는지 확인하는 회귀 테스트를 추가합니다. 격리된 테스트 환경에서 무해한 메타 문자 문자열을 사용합니다.[3], [9]
출처
- Microsoft Threat Intelligence: CVE-2026-73570 악용 및 수정
- Zimbra 10.1.20 릴리스 노트 — SNMP 수정
- 업스트림 패치: Zimbra/zm-build 커밋 92b6ebe
- Zimbra/zm-build PR #333
- NVD/GitHub Advisory Database: CVE-2026-73570, CWE-78, CVSS 8.9
- CISA 알려진 악용 취약점 카탈로그 항목
- MITRE CWE-78: OS command injection
- Perl perlop: command execution with backticks
- Perl system function documentation
- NVD: CVE-2026-73570