
GitLab CE/EE에서 CVE-2026-19478을 탐지합니다. 비파괴적 Nuclei 템플릿을 사용하여 touch를 통한 GraphQL 폴백 필드 메서드 호출을 트리거하고, 파괴적 호출 없이 취약한 인스턴스를 확인합니다.
CVE-2026-19478에 대한 비파괴적 Nuclei 탐지 템플릿입니다. 이 취약점은 GitLab GraphQL API의 인증되지 않은 임의 메서드 호출 결함으로, 심각도(CVSS 9.4) 등급이며 GitLab에서 2026년 8월 17일에 패치했습니다.
GitLab의 GraphQL 스키마는 필드를 특정 최소 GitLab 버전으로 제한하는 @gl_introduced(version: "X.Y.Z") 디렉티브를 지원합니다. 디렉티브가 실행 중인 인스턴스보다 버전을 참조하면, GitLab은 (다른 방식으로는 알 수 없는) 필드 이름에 대한 를 생성합니다. 이 폴백 리졸버는 기본 Ruby 객체(, 등)에서 을 직접 호출합니다.
ProjectUserobject.public_send(method_name)결과적으로 /api/graphql에 도달할 수 있고 공개 프로젝트의 fullPath(또는 공개 프로필의 사용자 이름)를 아는 인증되지 않은 공격자는 해당 객체에서 공개된 인자 없는 메서드를 호출할 수 있습니다. 여기에는 touch 같은 읽기 전용 메서드뿐 아니라 destroy / delete 같은 파괴적 메서드와 deactivate / block / ban 같은 상태 변경 메서드도 포함됩니다.
이 저장소의 템플릿은 오직 touch만 호출합니다(updated_at를 갱신하고 true를 반환). 자세한 내용은 아래의 안전성(Safety)를 참조하세요.
| 트랙 | 영향받는 버전 | 수정 버전 |
|---|---|---|
| 18.2.x – 18.11.x | >= 18.2, < 18.11.11 | 18.11.11 |
| 19.0.x | < 19.0.8 | 19.0.8 |
| 19.1.x | < 19.1.6 | 19.1.6 |
| 19.2.x | < 19.2.4 | 19.2.4 |
셀프 매니지드 GitLab CE/EE에만 해당됩니다. GitLab.com과 GitLab Dedicated는 영향을 받지 않았습니다.
이 템플릿은 테스트할 권한이 있는 서버들을 스캔할 수 있도록 의도적으로 무해화(defanged)되어 있습니다.
touch**만 호출합니다(단순히 updated_at을 올리고 true를 반환하는 ActiveRecord 메서드).destroy, delete, deactivate, block, ban은 절대 호출하지 않습니다. 이들 모두 동일한 버그로 접근 가능하며 실제로 파괴적입니다.root 사용자 프로필을 탐지합니다. 둘 다 접근할 수 없으면 추측하지 않고 단순히 "탐지되지 않음"으로 보고합니다.소유하지 않았거나 테스트에 대한 명시적 서면 승인을 받지 않은 시스템에 대해 돌연변이(mutating) 메서드를 호출하기 위해 이 템플릿의 GraphQL 쿼리를 다른 용도로 사용하지 마십시오.
| 단계 | 요청 | 목적 |
|---|---|---|
| 1 | GET /api/v4/projects?visibility=public | 무해한 대상으로 사용할 공개 프로젝트를 찾습니다 |
| 2 | POST /api/graphql — 해당 프로젝트에 touch @gl_introduced(version: "999.0.0") | 폴백 필드 리졸버를 트리거합니다. 취약한 인스턴스는 "touch": true를 반환합니다 |
| 3 (대체) | POST /api/graphql — user(username: "root")에 대해 동일한 쿼리 | 1단계에서 공개 프로젝트를 찾지 못한 경우에만 사용됩니다 |
패치된 인스턴스는 알 수 없는 필드를 완전히 거부하므로("... doesn't exist on type ..."), 템플릿의 매처는 touch 양성 신호 및 해당 거부 메시지가 없음을 요구합니다.
# 단일 대상
nuclei -t CVE-2026-19478.yaml -u https://gitlab.example.com
# 템플릿 자체 검증
nuclei -t CVE-2026-19478.yaml -validate
# 대상 목록, JSON 출력
nuclei -t CVE-2026-19478.yaml -l targets.txt -j -o results.json
nuclei v3가 필요합니다(이 템플릿은 v3 템플릿 엔진에서 도입된 http: 프로토콜 블록과 jq 스타일 json 추출기를 사용하므로 nuclei v2.x에서는 로드되지 않습니다).
[CVE-2026-19478] [http] [critical] https://gitlab.example.com/api/graphql
18.11.11, 19.0.8, 19.1.6, 19.2.4(또는 이후 버전)로 업그레이드하세요. 전체 보안 권고는 GitLab의 19.2.4 패치 릴리스 노트를 참조하세요.
이 템플릿은 방어적 보안 목적으로 게시되었습니다 — 소유하거나 명시적으로 테스트 권한을 받은 인프라를 스캔하기 위한 것입니다. 승인 없이 시스템에 실행(또는 링크된 PoC 실행)하는 것은 대부분의 국가에서 불법입니다. 작성자는 오용에 대한 책임을 지지 않습니다.