CVE-2026-18885 (ServiceNow AI Platform GraphQL 코드 인젝션) 분석

분류: CVE · 웹·서버 · 코드 인젝션(Unauthenticated RCE) · CVE-2026-18885 [표준]

개요

여러 위협 인텔리전스·보안 매체가 종합한 내용에 따르면, 이 취약점은 ServiceNow AI Platform의 GraphQL Composite Data API 컴포넌트로 전달되는 입력값 처리가 미흡해, 인증되지 않은 공격자가 크래프팅된 요청을 GraphQL 엔드포인트로 보내는 것만으로 플랫폼 내부에서 임의 코드가 실행될 수 있다고 서술됩니다. 결과로는 코드 실행 자체와 함께, 의도된 범위를 벗어난 인스턴스 데이터 접근·변조가 함께 거론됩니다. CVSS v3.1 9.8(CRITICAL), CVSS v4.0 10.0(CRITICAL, 만점)로 평가돼 있고, ServiceNow는 이를 2026-08-27자 자체 보안 공지(KB3152242)로 공개했습니다.

한 가지 먼저 짚어야 할 한계가 있습니다 — ServiceNow AI Platform은 폐쇄형(closed-source) 상용 SaaS입니다. 공개 소스 저장소가 없고, 벤더가 패치를 코드 diff나 커밋 형태로 공개하지 않으며 “Hot Fix 패치 레벨” 공지로만 알립니다. 그래서 이 글에서는 취약 코드의 파일 경로·라인·커밋 SHA를 확인할 방법 자체가 없습니다. 아래 “CVE 분석 요약”은 코드 인용 대신 공개된 공격 표면(GraphQL 요청 레벨) 서술로 대체합니다 — 이 점을 정직하게 먼저 밝힙니다.

기술 배경

GraphQL은 REST API의 대안으로 널리 쓰이는 질의 언어로, 클라이언트가 필요한 데이터의 모양을 직접 명시해 서버에 요청하면 서버가 그 모양대로 응답을 조립해 줍니다. Composite Data API라는 이름은, 여러 원천의 데이터를 하나의 요청·응답으로 “합성(compose)“해 주는 기능을 가리키는 것으로 이해할 수 있습니다(⚠️추정 — ServiceNow의 정확한 내부 아키텍처 설명은 공개되지 않았습니다).

REST가 “URL 경로 + 메서드”로 요청을 표현하는 반면, GraphQL은 요청 자체가 중첩된 질의 구조(트리) 형태입니다. 서버는 이 질의를 받아 리졸버(resolver)라 불리는 내부 함수들을 호출해 실제 데이터를 채웁니다. 이 구조의 장점은 유연성이지만, 동시에 함정이기도 합니다 — 질의 안에 포함된 필드·인자·별칭(alias) 같은 값들이 입력 검증 없이 리졸버 내부의 실행 경로까지 그대로 흘러들면, 클라이언트가 “무엇을 조회할지”를 넘어 “서버가 무엇을 실행할지”에 영향을 줄 수 있습니다. 이 CVE의 CWE 지정으로 언급되는 CWE-94(부적절한 코드 생성 제어 / 코드 인젝션)가 가리키는 것이 바로 이 지점입니다(⚠️미확인 — 단일 애그리게이터 출처에서만 확인, NVD·벤더 원문 대조 필요).

CVE 분석 요약

앞서 밝혔듯 이 취약점은 오픈소스 코드 인용이 불가능한 케이스입니다. 대신 공개된 사실만으로 공격 표면을 요약하면 다음과 같습니다.

  • 진입점: GraphQL Composite Data API 엔드포인트. 인증·사용자 상호작용 없이 도달 가능하다고 서술됩니다.
  • 원인 계열: Composite Data API로 전달되는 입력값에 대한 처리(검증/새니타이징으로 추정)가 미흡해, 주입된 코드가 플랫폼에서 실행됩니다.
  • 결과: (1) 서버 측 임의 코드 실행, (2) 의도된 범위를 벗어난 인스턴스 데이터 접근·변조.
  • 정확한 취약 리졸버·파라미터·내부 실행 메커니즘(예: 표현식 평가기·템플릿 엔진·동적 클래스 로딩 중 무엇을 거치는지)은 벤더가 공개하지 않았고, 이 글도 확인하지 못했습니다(⚠️미확인).

아래는 이 CVE의 실제 내부 구현이 아니라, GraphQL API가 “질의”에서 “코드 실행”으로 넘어가는 일반적인 취약 패턴을 개념적으로 보여주는 도식입니다(다른 어떤 제품의 실제 코드도 아닙니다).

# 개념용 단순화 — 이 CVE의 실제 코드가 아니라 "GraphQL 입력이 서버측 실행에 닿는" 일반 패턴을 보여주는 재구성입니다
[클라이언트] --(GraphQL 질의: 필드/인자/별칭에 값 포함)--> [GraphQL 엔드포인트, 인증 불필요]

                                          (질의를 파싱해 대응 리졸버 호출)

                    [Composite Data 리졸버]  자원 A + 자원 B를 조합해 응답 구성

                            (조합 과정에서 사용자 통제 값이 검증 없이 실행 경로에 도달 — 가정)

                                    서버 측에서 의도치 않은 코드 실행 → 응답/부수효과로 결과 반환

위 도식의 “검증 없이 실행 경로에 도달”이라는 인과는 우리 추론이며(⚠️추정), ServiceNow의 실제 리졸버 구현을 반영한 것이 아닙니다. 확정할 수 있는 것은 오직 공개된 결과(무인증 → 코드 실행 + 데이터 노출)뿐입니다.

같은 날 ServiceNow가 함께 공개한 관련 취약점들도 참고할 만합니다 — CVE-2026-18886(이미지 업로드 프로세서 접근 제어 미흡 → 권한 상승, CVSS 10.0), CVE-2026-74820(동적 스키마 ORDER BY절 SQL 인젝션, CVSS 10.0), CVE-2026-6876(샌드박스 이스케이프, CVSS 8.7)입니다. 넷 다 “사용자 입력이 플랫폼 내부의 실행·조회 경로에 검증 없이 닿는다”는 같은 계열의 결함으로 읽히지만, 서로 독립된 CVE이며 이 글이 다루는 CVE-2026-18885와 코드 경로를 공유하는지는 확인되지 않았습니다.

공격 시나리오·영향과 대응

공격 시나리오 (개념 수준 — 완성형 익스플로잇 아님)

  1. 공격자가 대상 ServiceNow 인스턴스의 GraphQL Composite Data API 엔드포인트를 식별한다.
  2. 인증 절차 없이, 크래프팅된 GraphQL 질의를 해당 엔드포인트로 전송한다.
  3. 서버가 질의를 처리하는 과정에서 주입된 코드가 실행된다.
  4. 결과로 서버 측 코드 실행과 함께, 원래 의도된 범위를 벗어난 인스턴스 데이터에 접근하거나 이를 변조할 수 있다.

영향도: NVD·벤더 확정치는 CVSS v3.1 9.8(CRITICAL) — 벡터 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 와 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으로 보고됩니다. 두 벡터 모두 네트워크에서 도달 가능(AV:N), 낮은 공격 복잡도(AC:L), 권한·사용자 상호작용 불필요(PR:N/UI:N)를 뜻합니다. ServiceNow는 공개 시점 기준 실제 악용 사례는 확인되지 않았다고 밝혔습니다(⚠️미확인 — 벤더 자체 진술로 다수 매체가 인용했으나 이 글이 직접 대조하지 못함).

대응방안

  1. 근본: ServiceNow가 배포한 Hot Fix 레벨로 즉시 업데이트합니다. 리서치 단계에서 확인된 영향/수정 버전 범위는 다음과 같습니다(⚠️미확인 — 벤더 KB 원문 직접 대조 필요): Xanadu는 Patch 11 Hot Fix 7a 이전이 영향받고 그 이상에서 수정, Yokohama는 Patch 12 HF 3b 또는 Patch 13 HF 4 이전이 영향받고 그 이상에서 수정, Zurich는 Patch 7b HF 3 ~ Patch 12 구간, Australia는 Patch 2 HF 3 ~ Patch 5 구간이 영향받는다고 서술됩니다. 정확한 버전 문자열은 발행 전 ServiceNow KB3152242 원문으로 재확인해야 합니다.
  2. 차선(즉시 패치 불가 시): ServiceNow는 SaaS이므로 벤더 클라우드 인스턴스는 이미 자동 업데이트됐을 가능성이 있지만, 자체 호스팅·지연 패치 구성이면 GraphQL Composite Data API 엔드포인트에 대한 네트워크·WAF 레벨 접근 제어(허용 IP·요청 검사 강화)를 임시로 적용합니다.
  3. 탐지 관점: GraphQL 엔드포인트로의 비정상적인 무인증 요청, 특히 Composite Data 관련 질의 패턴이나 예상치 못한 서버 오류·예외 로그를 이상 신호로 봅니다.

결론

한 줄 요약: 질의 언어가 “무엇을 조회할지”를 넘어 “서버가 무엇을 실행할지”까지 결정하게 두면, 인증 없는 질의 하나가 코드 실행이 된다.

GraphQL은 REST보다 유연하다는 것이 장점이지만, 그 유연성은 “클라이언트가 던진 구조를 서버가 그대로 신뢰해 조합·실행하는” 자리를 늘리기도 합니다. 이번 CVE처럼 여러 자원을 하나로 합성(compose)하는 API는 특히 위험한데, 조합 과정 자체가 여러 내부 컴포넌트를 가로지르며 사용자 입력을 전달하기 때문입니다. 같은 뿌리를 공유하는 사례로는 GraphQL 배치 질의를 통한 인가 우회, 리졸버 체이닝을 이용한 정보 노출 등이 있습니다 — “클라이언트가 구조를 정하게 두더라도, 그 구조가 실행 경로까지 결정하게는 두지 말라”는 원칙이 지켜지지 않으면 이런 취약점이 반복됩니다. 이 인스턴스는 패치됐지만, GraphQL API를 앞세운 다른 플랫폼에서도 이 사고방식은 다시 나올 수 있습니다 — 그래서 우리는 특정 벤더의 특정 Hot Fix가 아니라 이 방법을 남깁니다.

(이 글은 표준판 요약본입니다. ServiceNow가 폐쇄형 SaaS라 소스코드·패치 diff 대조가 원천적으로 불가능해, 심층판으로 승급되기 어려운 케이스입니다.)

참고자료

  1. ServiceNow, “August 2026 CVE Advisory Notification” (KB3152242) — 벤더 1차출처. 이 글이 재구성의 출발점으로 삼은 공식 보안 공지(본문 직접 열람은 이 초안 작성 시점에 확인하지 못함 — 팩트체크 시 재fetch 필요). https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3152242
  2. IONIX Threat Center, “CVE-2026-18885” — 영향/수정 버전, CVSS v4.0 벡터, 근본원인·영향 서술의 근거. https://www.ionix.io/threat-center/cve-2026-18885/
  3. Tenable, “CVE-2026-18885” — CVSS v3.1 벡터의 근거(v3.1/v4.0 병기 유일 출처). https://www.tenable.com/cve/CVE-2026-18885
  4. The Hacker News, “Three CVSS 10.0 ServiceNow Flaws Could Have Allowed…” — 공개일, 형제 CVE(CVE-2026-18886/74820/6876) 종합 서술의 근거. https://thehackernews.com/2026/08/three-cvss-100-servicenow-flaws-could.html

이 글은 위 1차출처(ServiceNow 보안 공지 및 공개 배경 자료)를 우리 관점에서 다시 쓰고 논평을 더한 것입니다. 특정 문장·코드를 그대로 옮기지 않았으며, ⚠️미확인 표시가 붙은 구체 사실(CWE 지정·영향/수정 버전 세부·근본원인 인과·발견자)은 독립 팩트체커가 1차출처로 대조한 뒤에야 확정됩니다. 자세한 내용은 벤더 보안 공지를 참고하세요.