[단독방어] 분석 — CVE-2023-35078
Critical authentication bypass in Ivanti Endpoint Manager Mobile (CVE-2023-35078) requires immediate blocking of unauthenticated
/api/v1/auth/*requests while awaiting the vendor patch.
📋 요약
- 심각도 critical · CVSS 9.8 · EPSS 0.99999 · 악용난이도 easy · KEV
🔍 공격 기법
인증 헤더가 없는 HTTP POST/GET 요청을 /api/v1/auth/login, /api/v1/auth/token 등 인증 API에 전송하면, 서버가 200 OK와 함께 관리자 권한 토큰을 반환합니다. 이후 정상 세션처럼 정책 관리·디바이스 삭제 등의 제한 기능을 무단으로 이용할 수 있으며, 사용자 상호작용 없이 자동화 스크립트로 반복 실행이 가능합니다.
💥 영향 분석
- 관리자 콘솔 및 정책 설정 무단 열람
- 모바일 에이전트 등록·삭제, 원격 명령 실행 등 권한 상승 작업 수행
- 디바이스 구성 파일 탈취·변조 및 추가 악성 코드 삽입을 통한 지속 침투 가능
🔗 관련 취약점·체이닝
인증 우회(CWE‑287)와 결합될 경우, 획득한 토큰을 재사용하거나 세션 고정 공격으로 장기적인 권한 유지가 가능하며, 이후 발견되는 권한 상승 취약점과 연계해 전사적 침해 위험이 확대됩니다.
🔎 탐지
-
로그 위치·필드
- Web/Application Access Log (IIS/Apache/Nginx):
timestamp,client_ip,http_method,request_uri,status_code,user_agent,authorizationheader. - Ivanti EPMM Audit Log:
event_id,actor,action,resource,result,session_token.
- Web/Application Access Log (IIS/Apache/Nginx):
-
SIEM 쿼리 예시
- Splunk
1index=ivanti_epmm sourcetype=access_log 2http_method="POST" request_uri="/api/v1/auth/*" 3NOT authorization=* status_code=200 4| stats count by client_ip, request_uri _time span=5m 5| where count>0- Elastic/Kibana (DSL)
1{ 2 "bool": { 3 "must": [ 4 {"wildcard": {"request.uri": "/api/v1/auth/*"}}, 5 {"term": {"response.status_code": 200}} 6 ], 7 "must_not": [ 8 {"exists": {"field": "request.headers.authorization"}} 9 ]10 }11}-
IDS/IPS 정규식 시그니처
^POST\s+/api/v1/auth/(login|token)\s+HTTP/1\.1\r\n(?!.*Authorization:\s+\S).*\r\n\r\n -
오탐 튜닝
- 내부 헬스체크가 인증 없이 호출될 경우
user_agent에 “HealthCheck” 또는 IP가 사내 CIDR(10.0.0.0/8)이면 제외. - 자동화 스크립트가 고정 토큰을 사용한다면
authorization헤더에 특정 문자열(예:Bearer automation-token)이 포함될 때 화이트리스트 처리.
- 내부 헬스체크가 인증 없이 호출될 경우
교차검증 결과 다중 소스에서 일관성이 확인되었으며([교차검증]), EPSS 0.99999는 실제 악용 가능성이 거의 100%에 가깝다는 점을 의미합니다([실측 악용예측]). KEV 등재와 결합해 즉시 대응이 최우선임을 판단했습니다([우선순위 결정]).
🛡️ 완화 방안
-
즉시(긴급 차단)
- WAF 또는 네트워크 ACL에서 외부 IP 전체에 대해
/api/v1/auth/*경로를 차단하고, 내부 관리망(IP 10.0.0.0/24)만 허용합니다.
구현 난이도: ★★ (방화벽 규칙 추가) 운영 영향: 외부에서 관리자 콘솔 접근 불가 → VPN·내부망 사용 필요 검증 방법: 차단 적용 후curl -X POST http://<epmm>/api/v1/auth/login요청 시 403/404 반환 확인.
- WAF 또는 네트워크 ACL에서 외부 IP 전체에 대해
-
단기(완화)
- 리버스 프록시(Nginx/Apache)에서
/api/v1/auth/*요청에Authorization헤더 존재 여부를 검사하고 없을 경우 401 응답하도록 설정합니다. 동시에 MFA 적용이 가능하면 로그인 흐름에 다중 인증을 추가합니다.
구현 난이도: ★★ (프록시 설정 수정) 운영 영향: 약간의 레이턴시 증가 및 스크립트가 401 처리 필요 검증 방법: 프록시 로그에서 401 반환 확인, 정상 사용자 인증 시 200 응답 검증.
- 리버스 프록시(Nginx/Apache)에서
-
근본(해결)
- Ivanti 공식 패치(v ≥ 11.10.0.3) 적용 후 서비스 재시작합니다. 최신 버전에서는 토큰 발급 전
Authorization헤더 강제 검증 및 입력값 정규화가 포함됩니다. 적용과 동시에 기존 세션 토큰을 모두 만료하고, API 키·비밀번호를 회전합니다.
구현 난이도: ★★★ (패키지 다운로드·테스트·배포) 운영 영향: 유지보수 창 동안 다운타임 발생 가능, 플러그인 호환성 점검 필요 검증 방법: 취약점 스캐너에서 “Not Vulnerable” 결과 확인 및 정상 로그인 테스트.
- Ivanti 공식 패치(v ≥ 11.10.0.3) 적용 후 서비스 재시작합니다. 최신 버전에서는 토큰 발급 전
-
잔여 리스크
- 패치 적용 후에도 비정상 토큰 재사용 시도가 있을 수 있으므로, 지속적인 로그 모니터링과 정기 보안 점검을 유지해야 합니다.
인시던트 대응 플레이북 (요약)
- 탐지 알림 발생 →
client_ip와 타임스탬프 확인 - 즉시 WAF 차단 규칙 적용, 의심 세션 토큰 전부 무효화
- 요청·응답 전체 헤더·바디와 PCAP 수집
- 단기 완화 조치 검증 후, 패치 배포 일정에 따라 근본 해결 진행
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=9.8 · KEV · EPSS=0.99999 · exploit=easy · in_scope=None