[방어] 분석 — CVE-2026-59309
CVE‑2026‑59309 is a critical unauthenticated authentication‑bypass in VMware vCenter Directory Service; the highest priority mitigation is to block all network traffic to the vCenter host from untrusted sources immediately.
📋 요약
- 심각도 critical · CVSS 9.8 · EPSS 미확보 · 악용난이도 easy
🔍 공격 기법
네트워크에 접근 가능한 공격자는 vCenter HTTPS(443) 혹은 LDAP 포트(389/636)로 직접 요청을 보내 디렉터리 서비스의 인증 절차를 우회한다. 인증 헤더 없이 /rest/com/vmware/cis/session API 호출이 성공하면 세션 토큰이 발급되고, 이후 모든 vSphere 관리 API에 무제한 접근이 가능해진다.
악용 가능성: 이 취약점은 AV:N(네트워크를 통한 직접 접근)·AC:L(낮은 복잡도)·PR:N(특별 권한 불필요)·UI:N(사용자 개입 없음)이라는 CVSS 벡터가 그대로 실제 공격 전제조건으로 이어집니다. 즉, 내부망 혹은 VPN 등 네트워크 연결만 확보하면 별도의 인증 절차 없이 바로 VMware vCenter의 Directory Service에 접근할 수 있습니다. EPSS 값이 제공되지 않고 KEV에도 등재되지 않았지만, “네트워크 접근 가능 → 인증 우회”라는 경로가 매우 단순하기 때문에 실제 위협으로 간주됩니다. 공격자는 일반적으로 HTTPS(포트 443) 혹은 HTTP / HTTPS 기반 vCenter API 엔드포인트에 GET/POST 요청을 보내면, 내부 인증 로직이 누락된 파라미터를 이용해 세션 토큰 없이 관리 콘솔에 진입할 수 있습니다. 노출되는 공격 표면은 vCenter 웹 인터페이스와 REST‑API이며, 별도의 쿠키나 세션 값이 요구되지 않으므로 탐지 우회가 용
💥 영향 분석
인증을 우회한 공격자는 vCenter 관리 콘솔 및 REST API 전체를 제어할 수 있어 가상 머신 생성·삭제·스냅샷 조작 등 인프라 전반에 대한 관리자 권한을 획득한다. 결과적으로 데이터 유출, 서비스 중단, 랜섬웨어 배포 등이 발생할 위험이 있다.
🔗 관련 취약점·체이닝
디렉터리 서비스 인증 우회가 성공하면 기존에 보고된 vCenter 세션 탈취·권한 상승 취약점과 연계되어 원격 코드 실행(RCE)까지 이어질 가능성이 있다.
🔎 탐지
-
로그 소스
/var/log/vmware/vpxd/vc.log– API 호출 로그,clientIP,requestURI,sessionID,authResult필드 포함/var/log/vmware/directoryservice/*.log– LDAP 바인드 시도 기록,bindDN,resultCode,sourceIP등
-
탐지 규칙 예시
-
SIEM 쿼리 (Splunk) – 인증 토큰 없이 세션 생성
text1index=vmware sourcetype=vpxd2| where requestURI="/rest/com/vmware/cis/session" AND authResult="Success"3| eval tokenMissing = if(isnull(sessionID) OR sessionID=="", 1, 0)4| where tokenMissing=15| table _time clientIP requestURI sessionID조건:
sessionID가 비어있음에도 성공 응답이 반환될 경우 경보. -
LDAP 바인드 우회 탐지 (Regex)
text1^.*bindDN=""\s+resultCode=0\s+sourceIP=([0-9\.]+).*$조건: 빈 DN(Anonymous)으로
resultCode=0(성공) 로그가 기록될 때 경보. -
비정상 IP 패턴 (Elastic/Kibana)
text1{2 "bool": {3 "must": [4 { "match_phrase": { "requestURI": "/rest/com/vmware/cis/session" } },5 { "term": { "authResult": "Success" } }6 ],7 "must_not": [8 { "terms": { "clientIP": ["10.0.0.0/16","192.168.1.0/24"] } } // 허용된 관리 VLAN9 ]10 }11}조건: 허용된 내부 IP 범위에 속하지 않는 클라이언트가 세션 생성에 성공하면 경보.
-
-
오탐 튜닝
- 자동화 스크립트가 인증 없이 API를 호출할 수 있는 경우, 해당 서비스 계정·IP 를 화이트리스트에 추가한다.
- LDAP 로그에서 정상적인 Anonymous 조회가 허용된 환경이라면
resultCode=0만으로는 경보하지 말고,sourceIP가 신뢰되지 않는 네트워크(예: 외부 서브넷)와 결합해 판단한다.
🛡️ 완화 방안
-
즉시(긴급 차단)
조치: 방화벽 혹은 vSphere Distributed Switch에서 vCenter 호스트(IP X.X.X.X)의 TCP 443·8443 포트를 신뢰 구역(예: 관리 VLAN) 외부에 대해 모두 차단한다.
난이도: ★★ (방화벽 규칙 추가만으로 적용 가능)
운영 영향: vCenter에 대한 모든 외부 접근이 차단되므로, 외부 파트너·클라우드 연동이 즉시 중단된다.
검증: 방화벽 로그에서 해당 포트에 대한 DROP 이벤트가 발생하는지 확인하고, 내부 IP 에서만 정상 API 호출이 가능한지 테스트한다. -
단기(패치 전 완화)
-
IP 기반 API 허용 리스트 적용 – vCenter 관리 VLAN 혹은 지정된 관리 서버 IP 만
/rest/com/vmware/cis/session및 기타 관리 API에 접근하도록 ACL을 설정한다.
난이도: ★★★ (ACL 정책 정의·배포 필요)
운영 영향: 기존 자동화가 허용되지 않은 IP에서 동작 중단될 수 있다 → 사전 화이트리스트 작성 필수.
검증: 허용된 IP 로 정상 세션 생성 테스트, 차단된 IP 로 시도시 403/401 응답 확인. -
원격 LDAP 바인드 비활성화 –
/etc/vmware/vmdir/config.xml에서<EnableRemoteLDAP>false</EnableRemoteLDAP>로 설정하고 vCenter 서비스를 재시작한다.
난이도: ★★★ (설정 파일 편집·서비스 재시작)
운영 영향: 외부 LDAP 연동을 사용하는 경우 서비스 중단 → 대체 인증 방식 검토 필요.
검증: 디렉터리 서비스 로그에Remote LDAP bind disabled메시지가 출력되는지 확인하고, LDAP 포트(389/636)에 대한 연결 시도는 차단된다. -
클라이언트 인증서 강제 – vCenter SSL 설정에서
clientAuth=required로 전환해 API 호출 시 클라이언트 인증서를 검증하도록 한다.
난이도: ★★★★ (인증서 발급·배포·vCenter 재구성)
운영 영향: 기존 비인증 자동화가 실패하므로, 모든 관리 스크립트에 인증서 적용 필요.
검증: 허용된 인증서를 사용한 요청은 정상 토큰을 받으며, 인증서 없이 시도하면 TLS 핸드쉐이크 오류 로그가 남는다.
-
-
근본(장기) 해결
조치: VMware 에서 제공하는 공식 패치를 적용하고, vCenter를 최신 지원 버전으로 업그레이드한다. 패치 릴리스 노트에 “Directory Service authentication bypass” 수정 사항이 포함된 것을 확인한다.
난이도: ★★★★★ (버전 호환성 검증·업그레이드 계획 수립·서비스 중단 창 필요)
운용 영향: 업그레이드 동안 vCenter 서비스가 일시 중단되며, 사전 백업 및 복구 절차가 요구된다.
검증: 패치 적용 후 동일 로그(성공적인 무인 세션 생성)가 발생하지 않는지 재현 테스트하고, VMware 보안 가이드에 명시된 취약점 검사 툴(VMware Security Hardening Guide)으로 확인한다.
잔여 리스크 : 패치를 적용하기 전까지는 위 단기·즉시 조치에 의존해야 하며, 내부 공격자가 이미 인증 우회 세션을 확보한 경우 탐지와 대응이 필요하다. 따라서 실시간 세션 모니터링과 비정상적인 API 호출 프로파일링도 병행한다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=9.8 · non-KEV · EPSS=미확보 · exploit=easy · in_scope=None