🔍 CVE-2026-119286

7.5
CVSS Score
HIGH
2026-10-29
2026-10-30 19:37
✅ 완료

🇰🇷 한글 설명

GraphQL-core는 GraphQL.js 참조 구현을 Python으로 포팅한 라이브러리이다. 3.3.0a3부터 3.3.1 이전 버전에서는 문서가 max_errors를 초과할 때 validate()가 모듈 수준의 ValidationAbortedError 객체를 재사용하며, Python이 재발생(raise)마다 해당 예외의 traceback에 프레임을 계속 추가해 문서, 검증 컨텍스트, 오류 집합이 프로세스 수명 동안 메모리에 누적된다. 인증되지 않은 공격자가 100개 이상의 검증 오류를 유발하는 작은 문서를 반복 전송하면 쿼리 실행 전에 메모리가 무제한 증가하여 워커 메모리가 고갈될 수 있다.

💡 쉬운 설명

GraphQL 서버가 잘못된 요청을 처리할 때 오류 기록을 계속 쌓아두는 버그가 있습니다. 공격자가 오류를 많이 일으키는 짧은 요청을 반복해서 보내면 서버 메모리가 끝없이 늘어나 결국 서비스가 멈출 수 있습니다.

🇺🇸 원문 (English)

GraphQL-core is a Python port of the GraphQL.js reference implementation. From 3.3.0a3 until 3.3.1, validate() reuses a module-level ValidationAbortedError when a document exceeds max_errors. Python appends frames to the reused exception's traceback on every raise, retaining each document, validation context, and error set for the process lifetime. An unauthenticated client can repeatedly submit a small document with more than 100 validation errors to cause unbounded memory growth before query execution, eventually exhausting worker memory without disclosing or modifying data. This issue is fixed in version 3.3.1.

📍 영향받는 시스템

graphql-core 3.3.0a3 이상 3.3.1 미만을 사용하는 Python 애플리케이션 및 서버

⚔️ 공격 벡터

인증 없이 검증 오류가 100개 이상 발생하는 작은 GraphQL 문서를 반복 전송하여 워커 메모리를 고갈시키는 서비스 거부(DoS) 공격

🛡️ 대응 방법

graphql-core를 3.3.1 이상으로 업그레이드한다 (pip install --upgrade "graphql-core>=3.3.1")

🔧 검증 코드

출력된 버전이 3.3.0a3 이상 3.3.1 미만이면 취약하며, 3.3.1 이상이면 패치된 상태이다 (설치되어 있지 않으면 결과가 비어 있음).

Shell / Script
pip show graphql-core 2>/dev/null | grep -i '^version'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Python