CVE-2026-74820 (ServiceNow AI Platform SQL 인젝션) 분석
분류: CVE · SaaS/플랫폼 · SQL 인젝션 · CVE-2026-74820 [표준]
개요
이 취약점의 핵심은 “동적으로 생성되는 쿼리의 정렬 절에 사용자 입력이 새니타이징(입력값 정제) 없이 섞여 들어가, 쿼리 구조 자체가 조작될 수 있다”는 것입니다. 리서치 재료에 따르면 이는 CWE-89(부적절한 SQL 명령 구성요소 무력화, SQL Injection) 로 분류되며, CVSS v4.0 기준 만점인 10.0(Critical) 이 부여됐습니다(벡터 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H — 네트워크에서, 낮은 공격 복잡도로, 별도 권한이나 사용자 상호작용 없이 도달 가능하다는 뜻입니다). 벤더 서술 자체가 “특정 조건에서 인증되지 않은 사용자”가 실행할 수 있다고 밝히고 있어, 선행조건이 낮은(pre-auth) 취약점으로 다뤄지고 있습니다(⚠️CVSS 벡터·CWE 분류는 리서치 워커가 OpenCVE·Strix.ai 두 독립 출처에서 확인했으나, NVD/CVE.org 원문 페이지는 이 세션에서 직접 로드하지 못해 byte-level 재확인이 필요합니다).
이 부류의 버그 — “인스턴스마다 스키마가 달라지는 걸 지원하려고 SQL을 동적으로 조립하는 지점에, 사용자 입력이 새니타이징 없이 섞여 들어가는” 문제 — 는 ServiceNow 한 제품의 실수가 아니라, 유연한 커스터마이징을 지원하는 대형 플랫폼에서 반복되는 구조적 실패입니다. 이 글은 그 사례로 이 CVE를 읽습니다.
기술 배경
ServiceNow AI Platform은 IT 서비스관리(ITSM)·워크플로 자동화를 중심으로, 기업마다 필드·테이블 구조를 자유롭게 확장할 수 있게 해주는 SaaS 플랫폼입니다. 이런 유연성을 지원하려면 애플리케이션 코드가 “고정된 스키마”가 아니라 동적 스키마(dynamic schema) — 즉 테이블·컬럼 구성이 인스턴스·고객마다 달라질 수 있는 구조 — 를 다뤄야 합니다.
동적 스키마 환경에서 목록 화면의 “정렬 기준” 같은 기능을 구현하려면, 사용자가 고른 필드명을 쿼리의 ORDER BY 절(결과를 어떤 컬럼 기준으로 정렬할지 지정하는 SQL 구문)에 프로그램적으로 끼워 넣어야 하는 경우가 생깁니다. 값(value)이 아니라 식별자(컬럼명 등 구조 자체) 를 사용자 입력으로 조립할 때는, 값 하나를 이스케이프하는 일반적인 SQL 인젝션 방어(파라미터 바인딩 등)가 그대로 적용되기 어려운 경우가 있어 별도의 화이트리스트·검증이 필요합니다(⚠️추정 — ServiceNow가 실제로 어떤 방식으로 컬럼명을 조립하는지, 구체 검증 로직의 부재가 정확히 무엇인지는 벤더가 공개하지 않아 미확인).
SQL 인젝션(SQL Injection) 이란, 애플리케이션이 조립하는 SQL 쿼리에 공격자가 의도한 SQL 구문 조각을 섞어 넣어, 원래 쿼리의 의미를 바꾸는 공격 기법입니다. 값 자리에 주입하는 고전적 형태가 널리 알려져 있지만, 이번 사례처럼 정렬 절·컬럼명 같은 쿼리의 구조적 요소에 주입하는 변형도 같은 뿌리의 문제입니다.
분석
리서치 재료(OpenCVE, IONIX Threat Center 등 다출처)가 공통으로 서술하는 내용은 다음과 같습니다.
- 대상: ServiceNow AI Platform(SaaS, 플랫폼 릴리스 계열 전체).
- 영향 버전: Xanadu(Patch 11 Hot Fix 7a 이전), Yokohama(Patch 12 Hot Fix 3b / Patch 13 Hot Fix 4 이전), Zurich(Patch 7b
12 여러 핫픽스 레벨 이전), Australia(Patch 25 여러 핫픽스 레벨 이전)(⚠️정확한 핫픽스 경계값은 벤더 KB 원문 byte-level 재확인 대상). - 위치: 동적 스키마 관련 쿼리의 ORDER BY 절 — 사용자 영향 입력이 이 절에 충분히 새니타이징되지 않은 채 삽입됨.
- 결과: 인스턴스 기반 데이터베이스에서 임의 SQL 문 실행이 가능해져, 의도한 범위를 벗어난 데이터 접근·변조로 이어질 수 있음.
- 조건: 벤더 서술상 “특정 조건 하에서 인증되지 않은 사용자”가 실행 가능 — 네트워크 접근만 있으면 되고 사용자 상호작용은 불필요.
여기서부터는 우리 추론입니다(1차출처 미대조, 팩트체크 대상):
# 개념용 단순화, 실제 페이로드/원본 코드 아님 — 동적 ORDER BY 인젝션의 일반적 구조를 보여주는 재구성입니다
[클라이언트] --(목록 정렬 기준 파라미터 = "column_name" 형태로 전달)--> [쿼리 조립 계층]
│
├─ 화이트리스트로 필드명을 검증하는가? ← 불충분/부재로 추정
│
└─ 검증 안 된 문자열이 그대로 ORDER BY <입력값>에 삽입
└─> 쿼리 구조 조작 → 임의 SQL 실행
취약 지점이 정확히 어떤 API 엔드포인트·모듈에 있는지, 검증 로직이 어떤 조건에서 빠지는지, 그리고 각 핫픽스가 실제로 무엇을 바꿨는지는 이 글 작성 시점에 확인하지 못했습니다. ServiceNow AI Platform은 클로즈드소스 SaaS 제품이라 공개 저장소·커밋·diff가 존재하지 않습니다 — 리서치 재료가 확인한 6건의 독립 출처(벤더 KB 포함) 모두 코드나 패치 diff를 공개하지 않았고, 벤더는 빌드·핫픽스 번호로만 수정 사항을 서술합니다. 이 CVE에서는 “실제 오픈소스 코드 렌더” 섹션을 원천적으로 제공할 수 없다는 점을 정직하게 밝힙니다(§6-bis 코드 그림 규율의 면제 사유).
공격 시나리오·영향과 대응
공격 시나리오 (개념 수준 — 완성형 익스플로잇 아님)
- 공격자가 영향받는 ServiceNow 인스턴스에 네트워크로 접근한다(공개 인터넷에 노출된 인스턴스가 일반적인 배포 형태입니다).
- 정렬 기준 등 동적 스키마 관련 파라미터에, 정상 컬럼명이 아닌 SQL 구문 조각을 담아 요청을 보낸다.
- 서버 측 쿼리 조립 로직이 이 입력을 충분히 검증하지 않고 ORDER BY 절에 그대로 반영해, 원래 쿼리의 구조가 바뀐다.
- (후속) 인스턴스 데이터베이스에서 의도 범위를 벗어난 데이터 접근·변조가 가능해질 수 있음 — 후속 영향의 구체 범위(예: 데이터베이스 엔진 자체에 대한 명령 실행까지 가능한지)는 벤더 원문이 확정하지 않았으며, 일부 매체(IONIX)만 “RCE급”이라는 표현을 쓰고 다른 매체는 이를 사용하지 않습니다. 이 글에서는 벤더가 실제로 확인한 “SQL 실행 → 데이터 접근/변조”까지만 사실로 다루고, RCE(원격 코드 실행) 수준 확대는 ⚠️미확인/과장 가능성으로 남깁니다.
영향도: CVSS v4.0 10.0(Critical)이라는 점, 그리고 인증이 사실상 불필요하다는 점에서 우선순위가 매우 높은 유형입니다. 리서치 재료에 따르면 이 글 작성 시점 기준 실제 공격에 악용됐다는 관측은 보고되지 않았고(EPSS 30일 예측 악용확률도 낮게 보고됨), 발견자·연구자 크레딧도 여러 매체에서 확인되지 않았습니다(⚠️미확인). 같은 2026년 8월 27일 어드바이저리에서 CVE-2026-18885(GraphQL 관련 코드 인젝션→RCE)·CVE-2026-18886(이미지 업로드 처리 과정의 접근제어 미비→권한상승)도 함께 CVSS 10.0으로 공개됐다고 리서치 재료가 서술합니다(⚠️미확인, 팩트체커가 별도 CVE 레코드로 교차확인 필요) — 세 건이 한 어드바이저리에 묶여 있다는 점은 이 CVE 하나만 보고 판단하지 않을 이유가 됩니다.
대응방안
- 근본: ServiceNow가 배포한 해당 계열(Xanadu/Yokohama/Zurich/Australia)의 지정 핫픽스로 업데이트합니다. ServiceNow가 직접 호스팅하는 클라우드 인스턴스는 벤더가 이미 자동 적용했다고 알려져 있으나(⚠️미확인), self-hosted 또는 파트너 호스팅 환경은 관리자가 직접 패치 적용 여부를 확인해야 합니다. 정확한 핫픽스 번호는 ServiceNow 지원 포털(KB3152242)에서 최종 확인합니다.
- 차선(즉시 적용 불가 시): 동적 정렬·필터 파라미터를 받는 API·인터페이스에 대해, 방화벽(WAF)이나 프록시 단에서 비정상 SQL 구문 패턴을 포함한 요청을 차단하는 규칙을 임시로 적용합니다. 인스턴스 접근을 신뢰된 네트워크·VPN으로 제한해 노출면을 줄이는 것도 유효합니다.
- 탐지 관점: 정렬·필드 지정 파라미터에 SQL 예약어·특수문자(따옴표, 세미콜론, 주석 기호 등)가 포함된 요청, 그리고 짧은 시간에 다양한 정렬 파라미터 값을 시도하는 패턴을 이상 신호로 봅니다. 인증 세션 없이 반복적으로 목록 조회 API를 호출하는 트래픽도 점검 대상입니다.
결론
한 줄 요약: 값이 아니라 쿼리의 구조(정렬 기준 컬럼명)를 사용자 입력으로 조립하면, 일반적인 SQL 인젝션 방어만으로는 막히지 않는 틈이 생긴다.
이런 부류가 반복되는 이유는 분명합니다 — “유연한 커스터마이징”을 지원하려는 설계가, 쿼리를 문자열 조립으로 만드는 지점을 늘리기 때문입니다. 값 자리는 파라미터 바인딩으로 막아도, 컬럼명·테이블명 같은 식별자 자리는 바인딩이 통하지 않아 별도의 화이트리스트 검증이 빠지기 쉽습니다. 이는 우리가 다룬 다른 “입력이 데이터가 아니라 쿼리/명령의 구조로 취급되는” 계열 — 명령 인젝션, ORDER BY·LIMIT 같은 동적 SQL 구성요소 인젝션 — 과 같은 뿌리입니다. 특정 SaaS 제품의 특정 버전을 넘어, “사용자 입력이 값인지 구조인지를 먼저 구분하고, 구조 자리는 반드시 화이트리스트로 제한한다”는 원칙을 남깁니다.
(이 글은 표준판 요약본입니다. ServiceNow AI Platform은 클로즈드소스 SaaS라 소스코드·패치 diff가 공개되지 않으므로, 이 CVE는 심층판(코드 레벨 분석) 승급 대상이 되기 어렵습니다.)
참고자료
- ServiceNow, “August 2026 CVE Advisory Notification” (KB3152242) — 이 글이 재구성의 출발점으로 삼은 1차출처(벤더 보안 공지, 영향 버전·핫픽스 정보). https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3152242
- OpenCVE, “CVE-2026-74820 - Vulnerability Details” — CWE·CVSS 벡터·공개일 등 메타데이터 확인 출처. https://app.opencve.io/cve/CVE-2026-74820
- IONIX Threat Center, “CVE-2026-74820 – Unauthenticated SQL Injection – ServiceNow AI Platform” — 근본원인(동적 스키마 ORDER BY 절) 서술 출처(단, “RCE급”이라는 표현은 이 출처만의 서술이라 본문에서 별도 표시함). https://www.ionix.io/threat-center/cve-2026-74820/
- The Hacker News, “Three CVSS 10.0 ServiceNow Flaws Could Let Unauthenticated Attackers Execute Code and SQL” — 같은 어드바이저리의 관련 CVE 3종 비교 출처. https://thehackernews.com/2026/08/three-cvss-100-servicenow-flaws-could.html
- SecurityWeek, “ServiceNow Patches 3 Critical Code Injection Vulnerabilities” — 독립 분석 교차확인 출처. https://www.securityweek.com/servicenow-patches-3-critical-code-injection-vulnerabilities/
이 글은 위 1차출처(ServiceNow 벤더 공지 및 공개 배경 자료)를 우리 관점에서 다시 쓰고 논평을 더한 것입니다. 특정 문장·코드를 그대로 옮기지 않았으며, ⚠️미확인 표시가 붙은 구체 사실(핫픽스 경계값·CVSS 벡터 원문 대조·“RCE급” 표현의 타당성·관련 CVE 세부사항)은 독립 팩트체커가 1차출처로 대조한 뒤에야 확정됩니다. 자세한 내용은 벤더 보안 공지를 참고하세요.