[단독방어] 분석 — CVE-2026-10520
Ivanti Sentry OS command injection (CVE-2026-10520) enables unauthenticated remote code execution as root, so the top priority is to block external access to the vulnerable service immediately and apply layered detection and mitigation until a patched version is deployed.
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.99889 · 악용난이도 easy · KEV
🔍 공격 기법
원격 사용자가 HTTP(S) 요청에 조작된 파라미터를 삽입하면 애플리케이션이 그대로 OS 쉘 명령어로 전달한다. 입력 검증이 없으므로 ;, &&, ` 등 메타문자를 포함한 문자열이 실행되어 루트 권한의 쉘이 생성된다. 네트워크 접근(AV:N)·인증 없음(PR:N)·사용자 상호작용 필요 없음(UI:N)으로 즉시 원격 RCE가 가능하다.
악용 가능성: CVSS AV:N/AC:L/PR:N/UI:N 벡터는 공격자가 네트워크만 연결되면 별다른 사전 준비 없이 바로 악용할 수 있음을 의미합니다. 즉, 원격에서 인증 없이 HTTP(S) 요청을 전송하기만 하면 OS 명령이 그대로 실행되는 low‑complexity 조건이 충족됩니다. EPSS 0.99889이라는 거의 100%에 가까운 실측 확률과 KEV(실제 악용 사례) 등재는 이 취약점이 이론적 심각도를 넘어 실제 위협으로 빈번히 이용되고 있음을 강력히 뒷받침합니다. 공격 표면은 Ivanti Sentry 웹 관리 인터페이스의 특정 엔드포인트(예: /api/execute)와, 명령 문자열을 받아 그대로 쉘에 전달하는 파라미터에 국한됩니다. 해당 엔드포인트는 기본적으로 443 포트 등 공개된 HTTP(S) 포트를 통해 외부에 노출되어 있어 네트워크 경계만 뚫으면 접근이 가능합니다. 따라서 인증·권한·사용자 상호작용 없이도 원격 루트 권한 획득이 가능한 easy 등급의 전형적인 OS Command Injection 사례라 할 수 있습니다.
💥 영향 분석
성공 시 공격자는 대상 서버의 루트 계정으로 임의 코드를 실행할 수 있다. 이는 전체 시스템 장악, 민감 데이터 탈취, 내부 네트워크 이동, 서비스 파괴 등 모든 보안 목표를 달성할 수 있음을 의미한다.
🔗 관련 취약점·체이닝
OS Command Injection은 일반적으로 CWE‑78(OS Command Injection) 패턴이며, 동일 제품군에서 발견된 파일 업로드(RCE) 혹은 인증 우회(CVE‑2025‑xxxx)와 조합될 경우 초기 침투 후 권한 상승·수평 이동을 가속화한다. (구체적 CVE 번호는 확인되지 않음)
🔎 탐지
-
로그 지표
access.log(또는 Sentry 자체 HTTP 로그) :request_uri,query_string,request_body필드에 쉘 메타문자(;|&&||$(` 등)가 포함된 경우.- 시스템 이벤트 로그 :
sudo/su없이 UID 0 프로세스가 생성되는 기록, 특히cmd=필드에 원격 IP와 연관된 문자열이 나타날 때.
-
SIEM 탐지 규칙 예시
- 웹 요청 기반
1index=ivanti_sentry sourcetype="sentry:web" 2| regex query_string "(;|\|\||`|\$\\()" 3| stats count by src_ip, uri 4| where count > 5 1 *조건*: 동일 소스 IP가 5회 이상 메타문자를 포함한 요청을 보낼 경우 경보.2) 프로세스 생성 기반
1index=ivanti_sentry sourcetype="linux:audit" 2| where uid = 0 and execve.command matches "(/bin/sh|/bin/bash|-c)" 3| stats count by host, pid, parent_process 4| where count > 0 1 *조건*: 루트 권한으로 쉘이 비정상적으로 실행될 때 알림.3) 조합 규칙 (위 두 이벤트를 30초 내에 발생)
1rule "OS Command Injection – Sentry" 2when 3 Event[logsource="ivanti_sentry:web"] and 4 Event[logsource="linux:audit"] within 30s 5then 6 alert("Possible CVE-2026-10520 exploitation") 7end- 오탐 튜닝
- 내부 관리 스크립트가 정기적으로
;를 사용한다면,src_ip가 사내 CIDR(예: 10.0.0.0/8)인 경우 제외. - 정상적인 API 호출에 인증 토큰(
auth=Bearer …)이 포함된 요청은auth_token_present=true필터로 차단.
- 내부 관리 스크립트가 정기적으로
🛡️ 완화 방안
-
즉시(긴급 차단)
- 외부에서 Sentry 웹 인터페이스(기본 포트 443/80)로 들어오는 트래픽을 방화벽 ACL 로 차단하거나, VPN·IP‑허용 리스트만 허용한다. 구현 난이도 ★ (방화벽 규칙 추가), 운영 영향 △ (외부 관리자는 VPN 필요). 검증: 차단 후 해당 포트에 대한 연결 시도 로그가 0인지 확인.
-
단기(완화)
- Sentry 서비스 설정 파일(
sentry.conf)에서allow_unauthenticated_commands = false(존재 시) 혹은 유사 옵션을 비활성화한다. - 웹 프록시(Nginx/Apache) 앞에 WAF를 배치하고, 위 탐지 규칙과 동일한 정규식으로 요청 차단(rule “block_os_cmd_injection”). 구현 난이도 ★★ (WAF 정책 추가), 운영 영향 △ (정상 API 호출 중 일부가 오탐될 수 있음). 검증: WAF 로그에 “blocked” 항목이 생성되는지 확인.
- Sentry 서비스 설정 파일(
-
근본(해결)
- Ivanti에서 제공하는 패치 버전(R10.5.2 이상, R10.6.2 이상, R10.7.1 이상)으로 업그레이드한다. 구현 난이도 ★★★ (버전 호환성 테스트 필요), 운영 영향 ▲ (서비스 재시작 및 잠재적 다운타임). 검증: 버전 확인(
sentry --version) 후 CVE-2026-10520가 존재하지 않음을 공식 릴리즈 노트에서 확인.
- Ivanti에서 제공하는 패치 버전(R10.5.2 이상, R10.6.2 이상, R10.7.1 이상)으로 업그레이드한다. 구현 난이도 ★★★ (버전 호환성 테스트 필요), 운영 영향 ▲ (서비스 재시작 및 잠재적 다운타임). 검증: 버전 확인(
-
잔여 리스크
- 패치 전까지는 위 즉시·단기 조치를 유지해야 하며, 방화벽 차단이 전체 관리 흐름을 제한하므로 내부 운영 절차에 맞게 예외를 최소화한다. 패치 적용 후에도 WAF 규칙은 로그 기반 모니터링 용도로 남겨 두어 유사 공격 시 빠르게 탐지할 수 있다.
-
인시던트 대응 플레이북
- 경보 발생 →
src_ip와uri확인, 해당 IP가 허용된 범위인지 검증. - 시스템 로그에서 UID 0 프로세스 생성 시점과 연관된 네트워크 세션을 추적.
- 의심되는 프로세스를 즉시 격리(예:
kill -9), 포렌식 수집(/proc/<pid>/cmdline, 메모리 덤프). - 차단 규칙 적용 여부 재검증 후, 필요 시 방화벽 ACL 강화.
- 경보 발생 →
우선순위 근거 – 다중 소스에서 일관성이 확인된 CVE-2026-10520(교차검증)이며, EPSS 0.99889라는 거의 확정적인 실제 악용 예측과 KEV 등재·exploit easy 평가가 결합돼 “immediate”(24 시간 내) 대응이 규칙 기반 우선순위 결정에 의해 요구된다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.99889 · exploit=easy · in_scope=None