[방어] 분석 — CVE-2023-35078
CVE-2023-35078 is a critical unauthenticated authentication bypass in Ivanti Endpoint Manager Mobile, and the highest‑priority immediate mitigation is to block any admin‑API request that lacks a valid Authorization header.
📋 요약
- 심각도 critical · CVSS 9.8 · EPSS 0.99999 · 악용난이도 easy · KEV
🔍 공격 기법
Ivanti Endpoint Manager Mobile(EPMM)의 관리 API(/api/v1/admin/* 등)에서 인증 검증 로직이 결함을 가지고 있어 Authorization 헤더가 없거나 비정상적인 값일 경우에도 정상 응답(200)을 반환합니다. 공격자는 네트워크를 통해 해당 엔드포인트에 HTTP GET/POST 요청만 전송하면 관리자 권한으로 정책 조회·수정 등 제한된 기능을 바로 이용할 수 있습니다. 이 취약점은 원격에서 인증 없이 직접 활용 가능하므로, CVSS 벡터 AV:N/AC:L/PR:N/UI:N 를 그대로 반영합니다.
악용 가능성: 이 취약점은 AV:N(네트워크 직접 접근)이며 AC:L(공격 난이도 낮음), PR:N(인증 필요 없음), UI:N(사용자 인터랙션 불필요)라는 CVSS 벡터를 갖고 있어, 원격에서 별도의 계정이나 피싱 절차 없이 바로 악용할
💥 영향 분석
- 기밀성(C): 관리 콘솔 및 디바이스 설정 정보가 무단 열람됨.
- 무결성(I): 정책·설정을 임의로 변경·삭제할 수 있음.
- 가용성(A): 악의적인 설정 변경으로 서비스 중단 또는 비정상 동작을 유발함.
🔗 관련 취약점·체이닝
인증 우회(CWE‑287)와 결합하면 세션 고정(Session Fixation)이나 권한 상승(Privilege Escalation) 공격으로 이어질 가능성이 있습니다. 동일 제품군에서 발견된 다른 인증 로직 오류와 연계될 경우 추가적인 관리자 권한 탈취 경로가 형성될 수 있습니다.
🔎 탐지
-
로그 위치·필드
- 웹 서버 접근 로그(
access.log):request_path,status_code,remote_ip,http_method,authorization_header(존재 여부) - 애플리케이션 인증 로그(
auth.log):event_type="AUTH_CHECK",user_id(null),result="bypass"
- 웹 서버 접근 로그(
-
탐지 규칙 예시
- SIEM(Splunk) 쿼리
1index=ivanti sourcetype=access_log 2| where like(request_path, "/api/v1/admin/%") 3 and isnull(authorization_header) 4 and status_code=200 5| stats count by remote_ip, request_path, _time span=5m 6| where count >= 3-
WAF 정규식 (Authorization 헤더 부재 감지)
^POST\s+/api/v1/admin/[^ ]*\s+HTTP/1\.1\r\n(?!.*Authorization:\s+\S) -
IDS 의사코드
1if packet.dst_port == 443 and 2 http.method in ("GET","POST") and 3 http.uri startswith "/api/v1/admin/" and 4 not http.header contains "Authorization" 5 then alert "Ivanti EPMM auth bypass"- 오탐 튜닝
- 정상 헬스‑체크(
/api/v1/health)와 내부 자동화 스크립트가 사용하는 경로는 화이트리스트에 추가합니다. - 동일 IP에서 정기적인 모니터링 작업이 수행되는 경우
user_agent또는source_process필드로 예외 규칙을 만든다(예: “EPMM‑Agent”). 이렇게 하면 정상 관리 자동화와 악의적 우회 시도를 구분해 오탐률을 크게 낮출 수 있습니다.
- 정상 헬스‑체크(
🛡️ 완화 방안
-
즉시(긴급 차단)
- 방화벽 또는 WAF에서
/api/v1/admin/*에 대한 모든 요청 중Authorization헤더가 없을 경우 403 Forbidden 으로 응답하도록 ACL을 추가한다.
구현 난이도: ★☆☆ (간단한 정책 삽입)
운영 영향: 기존 무인 헬스‑체크만 별도 허용 규칙으로 유지하면 가용성에 영향 없음.
검증 방법:curl -k https://<EPMM>/api/v1/admin/policy로 헤더 없이 호출했을 때 403 반환 여부 확인.
- 방화벽 또는 WAF에서
-
단기(완화)
- 관리 API 접근을 사내 VPN 또는 지정된 관리자 서브넷(IP allow‑list)으로 제한한다.
- 프록시 레이어에서
/api/v1/admin/*요청에 대해 JWT·OAuth 토큰 검증을 강제하고, MFA가 적용된 세션만 통과하도록 설정한다.
구현 난이도: ★★☆ (네트워크 정책 및 프록시 설정 변경)
운영 영향: 외부 관리자 접근이 차단되어 업무 흐름에 약간의 지연 발생 가능.
검증 방법: 허용된 IP·VPN 내에서 정상 로그인 후 API 호출 성공 여부와, 비허용 IP에서는 403/401 응답 확인.
-
근본(해결)
- Ivanti 공식 패치를 적용하여 버전을
11.8.1.1이상,11.9.1.2이상 또는 최신11.10.x로 업그레이드한다.
구현 난이도: ★★★ (시스템 다운타임 및 호환성 테스트 필요)
운영 영향: 서비스 재시작이 필요하므로 계획된 유지보수 창에 적용해야 함.
검증 방법: 패치 후 동일 관리 API에 인증 없이 접근 시 401 Unauthorized 또는 403 Forbidden 반환 확인.
- Ivanti 공식 패치를 적용하여 버전을
-
잔여 리스크
- 패치 이후에도 유사한 인증 로직 오류가 다른 모듈에 존재할 가능성이 있으므로, 정기적인 코드 리뷰와 DAST·SAST 기반 보안 테스트를 수행한다.
-
인시던트 대응 플레이북
- 경보 발생 시
remote_ip와request_path를 확인하고 즉시 차단 리스트(IP block) 에 추가한다. auth.log에서 동일 IP·세션의event_type="AUTH_CHECK"결과가 “bypass” 로 기록된 경우, 침해 범위(조회·수정된 정책)를 파악한다.- 임시 차단 규칙을 적용하고 관리자에게 상황 보고 후 패치 일정에 맞춰 근본 조치를 진행한다.
- 사후 포렌식을 통해 악용 여부와 데이터 유출 가능성을 평가하고, 탐지 룰을 최신화한다.
- 경보 발생 시
우선순위 판단 근거: 다중 소스에서 일관성이 확인된 CVE-2023-35078(교차검증)이며, KEV 등재·EPSS 0.99999·CVSS 9.8·exploit easy 로 즉시 대응(immediate)으로 지정되었습니다. EPSS 0.99999는 실제 악용 가능성이 거의 100%에 가깝다는 의미이며, 이러한 수치는 우선순위 결정 논리(KEV 등재 → immediate)에서 핵심적인 역할을 합니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=9.8 · KEV · EPSS=0.99999 · exploit=easy · in_scope=None