Marcus Chen, YuSMP Group
Marcus Chen Staff Engineer (Backend & Cloud), YuSMP Group · Sicurezza backend, cloud e piattaforma per prodotti US ed EU
Illustrazione di sicurezza astratta e scura con un lucchetto rotto su uno schema GraphQL con indicatori di avviso rossi e nodi di rete luminosi su sfondo blu marino scuro

In sintesi

GitLab ha rilasciato il 17 agosto 2026 una patch d'emergenza fuori ciclo per CVE-2026-19478, una vulnerabilità critica CVSS 9.4 che consente a un attaccante non autenticato di modificare o eliminare progetti GitLab pubblici e dati utente tramite una direttiva GraphQL contraffatta. Una seconda falla nello stesso release — CVE-2026-19650 (CVSS 7.1) — consente l'esecuzione di mutazioni GraphQL non autenticate tramite richieste HTTP GET attraverso una debolezza CSRF nel gestore di query multiplex. Le versioni corrette sono 19.2.4, 19.1.6, 19.0.8 e 18.11.11. Chi gestisce GitLab CE o EE self-managed nelle versioni 18.2–19.2 è vulnerabile in questo momento.

GitLab.com e GitLab Dedicated sono già protetti — GitLab li ha patchati lato server prima della divulgazione pubblica. Si tratta esclusivamente di un problema delle istanze self-managed.

Cos'è CVE-2026-19478

L'API GraphQL di GitLab accetta payload di direttive che indicano al server come elaborare una query. Nelle versioni 18.2–19.2, una direttiva appositamente contraffatta può aggirare l'autorizzazione su mutazioni che scrivono o eliminano dati di progetti pubblici — senza alcuna credenziale. Il punteggio CVSS di 9.4 riflette tre fattori: l'attacco è raggiungibile via rete, non richiede autenticazione e non è necessaria alcuna interazione da parte della vittima.

L'ambito riguarda i progetti pubblici e i dati utente, non i repository privati protetti da autenticazione. Questa distinzione è rilevante per la prioritizzazione, ma non riduce l'urgenza per i team che ospitano progetti open source pubblici, demo per clienti o istanze con visibilità pubblica abilitata. La cronologia del codice, le issue, i file di configurazione CI e i metadati associati sono tutti scrivibili o eliminabili dall'attaccante non autenticato.

La vulnerabilità correlata CVE-2026-19650 sfrutta un meccanismo diverso: l'endpoint multiplex GraphQL di GitLab accetta più operazioni raggruppate in una singola richiesta, e la protezione CSRF non si applica quando le operazioni vengono trasmesse via HTTP GET. Un attaccante può creare un link o incorporare una richiesta su qualsiasi pagina visitata dal bersaglio, e il browser della vittima esegue una mutazione a suo nome. CVSS 7.1 riflette che è necessaria una qualche interazione dell'utente, ma l'impatto finale è identico a CVE-2026-19478.

Chi è interessato e cosa fare

La tabella seguente copre l'intero intervallo interessato e la correzione per ogni ramo:

Versione GitLabStatoVersione corretta
18.2.x – 18.11.10VulnerabileAggiornare a 18.11.11
19.0.x – 19.0.7VulnerabileAggiornare a 19.0.8
19.1.x – 19.1.5VulnerabileAggiornare a 19.1.6
19.2.x – 19.2.3VulnerabileAggiornare a 19.2.4
GitLab.comNon interessatoPatchato lato server da GitLab
GitLab DedicatedNon interessatoPatchato lato server da GitLab

Gli aggiornamenti zero-downtime sono supportati per i deployment GitLab multi-nodo, quindi gli ambienti di produzione con capacità di rolling upgrade possono patchare senza pianificare una finestra di manutenzione. Le istanze single-nodo richiederanno un breve riavvio. I percorsi di aggiornamento sono documentati nella guida di aggiornamento standard di GitLab.

Se il patching non è veramente possibile oggi (freeze delle modifiche, lungo processo di release), il controllo provvisorio consiste nel disabilitare la visibilità pubblica dei progetti a livello di istanza: Area amministrativa → Impostazioni → Generale → Visibilità e controlli di accesso → impostare la visibilità predefinita dei progetti su Privato e impedire ai membri di modificarla. È una misura d'emergenza dirompente, non un fix — aggiornare non appena la finestra si apre.

La lezione GraphQL per i propri prodotti

Entrambi i CVE condividono un pattern alla radice che vale la pena interiorizzare se il proprio team sviluppa API GraphQL: i controlli di autorizzazione e CSRF devono essere applicati al livello di esecuzione delle query, non solo al livello dei resolver o del middleware HTTP. L'elaborazione delle direttive in particolare è un percorso di esecuzione facile da sotto-testare, perché opera prima della logica del resolver e si trova al di fuori del modello mentale tipico che la maggior parte degli sviluppatori applica quando scrive test.

Se il proprio prodotto espone un'API GraphQL — specialmente una con accesso pubblico alle query — le domande immediate sono: la pipeline di elaborazione delle direttive applica l'autorizzazione? L'endpoint multiplex valida il CSRF per le operazioni che cambiano stato indipendentemente dal metodo HTTP? Non sono preoccupazioni esotiche; sono esattamente le lacune che hanno prodotto due CVE critici in una piattaforma di produzione utilizzata da centinaia di migliaia di organizzazioni. Un audit di sicurezza del livello API è il modo più affidabile per rispondere a queste domande prima che lo faccia un ricercatore esterno — o un attaccante.

Cosa significa per il mercato italiano

GitLab è la piattaforma CI/CD e di gestione del codice sorgente preferita da una grande quota dei team di ingegneria europei e americani di medie dimensioni, e in particolare per quelli che necessitano di un deployment on-premises o in cloud privato per ragioni di compliance o residenza dei dati. Questa preferenza è esattamente il motivo per cui una vulnerabilità scrittura/eliminazione senza autenticazione nell'API è un problema di ordine superiore: i team più propensi a gestire GitLab self-managed sono quelli con le ragioni più stringenti per proteggere ciò che contiene.

La priorità pratica: se l'istanza GitLab è esposta su Internet, è un'attività da completare nella stessa giornata. Se si trova dietro una VPN senza progetti pubblici, è comunque necessario patchare entro questo sprint — CVSS 9.4 non rimane nel backlog. Se un freeze delle modifiche blocca l'aggiornamento, applicare il blocco della visibilità pubblica descritto sopra e documentare il controllo compensativo nel registro dei rischi.

Cosa fare oggi

  1. Trovare ogni istanza GitLab self-managed. Le installazioni GitLab non censite sono comuni nelle organizzazioni cresciute tramite acquisizioni o autonomia dei team. Non si può patchare ciò che non si conosce.
  2. Verificare il numero di versione di ogni istanza. Area amministrativa → Aiuto o l'API GitLab GET /api/v4/version restituisce la versione corrente. Qualsiasi risultato compreso tra 18.2 e 19.2.3 (incluso) necessita del patch odierno.
  3. Dare priorità alle istanze esposte su Internet. Qualsiasi GitLab accessibile da Internet o da un segmento di rete non controllato dalla propria organizzazione deve essere trattato come un'attività di aggiornamento P0.
  4. Applicare la versione corretta per il proprio ramo. Seguire il percorso di aggiornamento documentato da GitLab per la versione corrente; non saltare versioni major. L'aggiornamento zero-downtime si applica ai setup multi-nodo.
  5. Se il patching è bloccato, limitare la visibilità dei progetti pubblici. Area amministrativa → Impostazioni → Generale → Visibilità e controlli di accesso. Documentare questo come controllo compensativo temporaneo.
  6. Esaminare i log di audit per attività GraphQL anomale. Verificare eliminazioni inattese, modifiche alle impostazioni dei progetti o mutazioni in massa su progetti pubblici nei giorni precedenti la scoperta di questo bollettino.
  7. Verificare che l'aggiornamento sia andato a buon fine. Dopo l'upgrade, chiamare GET /api/v4/version e confermare che il numero di versione corrisponda alla versione corretta.

Domande frequenti

Cos'è CVE-2026-19478 in GitLab?

CVE-2026-19478 è una vulnerabilità critica CVSS 9.4 in GitLab CE ed EE che consente a un attaccante remoto non autenticato di modificare o eliminare progetti pubblici e dati utente tramite una direttiva GraphQL contraffatta. Sono interessate le istanze self-managed nelle versioni 18.2–19.2. Le versioni corrette sono 19.2.4, 19.1.6, 19.0.8 e 18.11.11. GitLab.com e GitLab Dedicated sono stati patchati prima della divulgazione pubblica.

GitLab.com o GitLab Dedicated sono interessati da CVE-2026-19478?

No. GitLab.com e GitLab Dedicated sono gestiti da GitLab e sono stati patchati lato server prima della divulgazione pubblica del 17 agosto 2026. Solo le installazioni self-managed di GitLab CE ed EE nelle versioni 18.2–19.2 richiedono un'azione immediata.

Cos'è CVE-2026-19650 e come si collega a CVE-2026-19478?

CVE-2026-19650 è una vulnerabilità CVSS 7.1 pubblicata nello stesso release del 17 agosto. È una falla CSRF nel gestore di query multiplex GraphQL di GitLab che consente l'esecuzione di mutazioni non autenticate tramite richieste HTTP GET. Entrambi i CVE condividono la stessa superficie di attacco (l'API GraphQL) e la stessa correzione: aggiornare a 19.2.4, 19.1.6, 19.0.8 o 18.11.11.

È possibile un aggiornamento senza interruzione del servizio?

Sì. Gli aggiornamenti zero-downtime sono supportati per i deployment GitLab multi-nodo, il che significa che gli ambienti CI/CD di produzione non devono pianificare una finestra di manutenzione per il patching. Consultare la documentazione di aggiornamento GitLab per la propria topologia di deployment prima di procedere.

Perché una falla GraphQL non autenticata è particolarmente pericolosa per i team di sviluppo?

GitLab contiene codice sorgente, pipeline CI/CD, credenziali di deployment, cronologia delle merge request e issue tracker. Un attaccante che può eliminare o sovrascrivere progetti pubblici senza autenticarsi può causare perdita di dati, corrompere configurazioni di pipeline o preparare un attacco alla supply chain. Non essendo richieste credenziali, chiunque possa raggiungere la porta HTTP di GitLab è un potenziale attaccante.

Fonti

GitLab — Patch Release: 19.2.4, 19.1.6, 19.0.8, 18.11.11, 17 agosto 2026 (fonte primaria)
IT-Boltwise — GitLab stopft kritische GraphQL-Schwachstelle (copertura indipendente)
CyberSecurityNews — GitLab Patches Critical Security Vulnerabilities