La patch d'emergenza di GitLab chiude un buco GraphQL a zero clic

CVE-2026-19478 è una falla critica di iniezione di direttive GraphQL in GitLab Community Edition ed Enterprise Edition, con un punteggio CVSS di 9.4, che permetteva a un attaccante non autenticato, ovunque su internet, di raggiungere metodi che modificano lo stato attraverso quella che sembrava una query di sola lettura.

Il difetto risiede nel modo in cui GitLab gestisce la direttiva @gl_introduced(version: ...): contrassegnare un campo con quella direttiva lo trasforma in un'invocazione di metodo contro qualunque oggetto occupi quella posizione nel grafo, cosicché una singola richiesta GraphQL costruita ad arte poteva modificare o cancellare progetti pubblici, dati utente e record di merge senza account, privilegi o interazione dell'utente.

GitLab ha rilasciato il 17 agosto 2026 le versioni corrette 19.2.4, 19.1.6, 19.0.8 e 18.11.11 come release di emergenza fuori dal consueto ciclo di patch quindicinale, a sottolineare quanto la gravità abbia imposto una risposta accelerata.

GitLab.com era già corretto prima che esistesse l'avviso pubblico

GitLab.com e GitLab Dedicated, le offerte ospitate dell'azienda, eseguivano già versioni corrette prima ancora che venisse pubblicato l'avviso di sicurezza per CVE-2026-19478, per cui i clienti su quelle piattaforme non hanno avuto alcuna finestra di esposizione.

Le installazioni self-managed sono state un'altra storia: watchTowr, la società di ricerca sulla sicurezza guidata dal principal researcher Jake Knott, ha fatto passare la divulgazione attraverso la propria rete di honeypot e ha riprodotto un exploit funzionante entro pochi minuti dalla pubblicazione dell'avviso, confermando separatamente tentativi di sfruttamento già attivi contro istanze non corrette in rete.

La falla è stata segnalata per la prima volta a GitLab tramite HackerOne da un ricercatore che usa lo pseudonimo hiimguardian, ed è arrivata insieme a una seconda vulnerabilità correlata: CVE-2026-19650, un problema CSRF nella gestione delle query multiplex di GraphQL con un punteggio CVSS di 7.1, corretto nella stessa ondata di rilasci.

DettaglioCVE-2026-19478CVE-2026-19650
Punteggio CVSS9.4 (Critico)7.1
Tipo di vulnerabilitàIniezione di direttive GraphQLCSRF nella gestione delle query multiplex GraphQL
Autenticazione richiestaNoRichiede l'inganno di una sessione autenticata
ImpattoModifica o cancellazione di progetti pubblici, dati utente e record di mergeCross-site request forgery tramite query multiplex

La scelta di sovranità che ha creato la finestra di esposizione

Molte organizzazioni europee scelgono GitLab self-managed proprio perché mantiene codice, credenziali e cronologia dei merge all'interno della propria infrastruttura, soddisfacendo requisiti di sovranità dei dati e di conformità che una piattaforma SaaS condivisa non può garantire da sola.

CVE-2026-19478 mostra l'altra faccia di questa scelta: i clienti SaaS di GitLab sono stati protetti automaticamente, corretti prima ancora che esistesse l'avviso pubblico, mentre le installazioni self-managed preferite dalle organizzazioni attente alla sovranità hanno avuto bisogno di una persona che notasse l'avviso, applicasse la patch e la confermasse, tutto all'interno di una finestra critica non autenticata, senza interazione e attivamente sfruttata.

Non è un argomento contro GitLab self-managed, ma un promemoria che sovranità e ritardo nell'applicazione delle patch sono due rischi diversi che si bilanciano a vicenda, e che un'organizzazione che sceglie il self-hosting per il controllo sui propri dati ha anche scelto se stessa come ultima linea di difesa il giorno della patch.

Una terza falla GraphQL nel 2026 trasforma una patch in uno schema ricorrente

CVE-2026-19478 è, secondo analisi della stampa di settore tra cui TechTimes, la terza vulnerabilità distinta della classe direttiva-GraphQL che GitLab rivela nel 2026, il che significa che la debolezza di fondo non è un singolo errore di codice ma uno schema ricorrente nel modo in cui il livello GraphQL di GitLab risolve le direttive.

La copertura indipendente di Dark Reading, eSecurityPlanet, SOCPrime, Ox Security e CyCognito conferma lo stesso quadro tecnico, e insieme al rilascio di emergenza di GitLab, lo schema suggerisce di trattare questo caso come una classe di rischio e non come un singolo ticket chiuso.

Per un amministratore di GitLab self-managed, la risposta pratica è aggiungere una scansione continua dello schema e dell'introspezione GraphQL alla pipeline di deployment invece di aspettare il prossimo avviso, perché l'iniezione basata su direttive si è già ripetuta tre volte in un anno ed è probabile che si ripeta ancora.