Marcus Chen, YuSMP Group
Marcus Chen Staff Engineer (Backend & Cloud), YuSMP Group · Sicurezza delle infrastrutture, architettura cloud-native e toolchain DevOps per team statunitensi ed europei
Sala server oscura con tre schermi che mostrano overlay di pattern di attacco rossi su un nodo API GraphQL, che rappresentano una violazione code-injection non autenticata su infrastruttura enterprise

In sintesi

CVE-2026-19478 è una vulnerabilità di code-injection nell’elaborazione delle direttive GraphQL di GitLab. Un attaccante remoto non autenticato può sfruttare una query GraphQL artefatta per modificare o eliminare qualsiasi progetto pubblicamente accessibile e i relativi dati su un’istanza self-managed vulnerabile — senza necessità di login né di interazione da parte dell’utente. GitLab ha rilasciato le patch il 17 agosto 2026 (versioni 19.2.4, 19.1.6, 19.0.8, 18.11.11). Lo sfruttamento in the wild è stato confermato entro due giorni. È la terza falla critica GraphQL che GitLab ha corretto nel 2026. Aggiornate immediatamente; non aspettate la prossima finestra di manutenzione.

Cos’è successo

17 agosto 2026. GitLab ha pubblicato una release di sicurezza di emergenza che corregge due vulnerabilità scoperte durante un audit interno. La falla principale, CVE-2026-19478, ha un punteggio base CVSS v3.1 di 9,4 (Critico). Una seconda vulnerabilità ad alta severità, CVE-2026-19650, è stata corretta nella stessa release. GitLab ha scelto di rilasciare la patch al di fuori del normale ciclo bimensile, segnale che adotta un approccio out-of-band per le falle critiche con bassa complessità di attacco e senza requisiti di autenticazione.

Le versioni corrette — 19.2.4, 19.1.6, 19.0.8 e 18.11.11 — non contengono nuove migrazioni del database. GitLab ha dichiarato che i deployment multi-nodo in alta disponibilità possono applicare l’aggiornamento senza richiedere downtime, eliminando la normale frizione legata alle finestre di aggiornamento. I team Cloud e DevOps che eseguono GitLab su Kubernetes o dietro load balancer possono applicare l’aggiornamento con un normale rolling restart.

19 agosto 2026. SecurityWeek ha riportato che la rete honeypot globale di WatchTowr Labs ha iniziato a rilevare tentativi di sfruttamento attivo di CVE-2026-19478 circa 48 ore dopo il rilascio della patch. Gli attaccanti sono passati dal proof-of-concept alla scansione attiva in meno di due giorni — in linea con il tipico ciclo di sfruttamento dei CVE ad alto profilo nelle toolchain DevOps.

Come funziona la vulnerabilità

CVE-2026-19478 origina nel modo in cui l’API GraphQL di GitLab elabora una specifica direttiva interna. Le direttive GraphQL sono annotazioni speciali che modificano il comportamento di esecuzione delle query; GitLab utilizza diverse direttive personalizzate nel proprio layer API. La falla consente a una richiesta GraphQL artefatta di iniettare un’operazione tramite una direttiva in modo che il server la esegua senza verificare l’identità o i permessi del chiamante rispetto alla risorsa target.

La conseguenza pratica è immediata: un attaccante che invia il payload GraphQL corretto all’endpoint /api/graphql su un’istanza vulnerabile può innescare operazioni di eliminazione o modifica su qualsiasi progetto pubblico — rimuovendo repository, issue, merge request e artefatti associati. L’attacco non richiede credenziali, utilizza una singola richiesta HTTPS e ha bassa complessità, il che lo rende banalmente scriptabile e adatto alla scansione automatizzata di massa.

L’analisi di OX Security della falla companion CVE-2026-19650 evidenzia che entrambe le vulnerabilità condividono la stessa superficie di esecuzione GraphQL, suggerendo che le due problematiche potrebbero essere varianti di un unico problema di progettazione nel modo in cui GitLab convalida le operazioni con scope di direttiva. GitLab non ha confermato pubblicamente questa relazione, ma il pattern è coerente con un gap di validazione dell’input a livello di direttiva piuttosto che con un bug isolato.

Le linee guida di rilevamento pubblicate da WatchTowr consigliano agli amministratori di cercare nei log web le richieste contenenti la stringa @gl_introduced come indicatore di attività di probe. Questa stringa compare nei payload di sfruttamento noti e nelle query Shodan utilizzate dagli attori delle minacce per enumerare le istanze esposte.

Sfruttamento attivo: cosa ha rilevato l’honeypot

WatchTowr gestisce una rete honeypot distribuita che emula servizi di livello production su più regioni geografiche. Instrumenta specificamente le istanze GitLab a diverse versioni per catturare il traffico di sfruttamento reale non appena il codice proof-of-concept circola. Per CVE-2026-19478, i primi probe hanno raggiunto la telemetria di WatchTowr entro 48 ore dalla patch — tra i più rapidi tempi di sfruttamento osservati dalla società per una vulnerabilità GitLab.

Il pattern iniziale del traffico è coerente con la scansione automatizzata di massa: richieste ad alta frequenza da IP distribuiti, che puntano all’endpoint /api/graphql con un numero ridotto di varianti di payload. Questa è l’impronta digitale di toolkit costruiti attorno al proof-of-concept pubblico piuttosto che di attacchi manuali mirati. L’implicazione per le istanze non aggiornate è significativa: qualsiasi istanza GitLab raggiungibile pubblicamente è già sotto probe e il passo dall’esplorazione all’eliminazione è banale una volta che un attaccante identifica un target vulnerabile.

Cosa significa per i team di sviluppo

GitLab self-managed è un’infrastruttura ad alto valore, non uno strumento periferico. Le istanze GitLab CE e EE tipicamente ospitano tutto il codice sorgente, la configurazione delle pipeline CI/CD, i token di accesso ai provider cloud e i segreti di deployment memorizzati nelle variabili CI protette. La perdita di un repository per eliminazione è dirompente; la perdita di segreti delle variabili CI per esfiltrazione — se dovesse emergere una variante più mirata di questa classe di exploit — costituisce un incidente alla supply chain. La superficie di attacco è l’intera pipeline di delivery del software, non solo l’interfaccia del repository.

I progetti pubblici sono il punto di ingresso, ma il raggio d’azione può estendersi ulteriormente. CVE-2026-19478 prende di mira specificamente le risorse pubbliche, ma in molti deployment GitLab enterprise i progetti pubblici condividono uno spazio di nomi con quelli privati, e gli stessi runner CI elaborano job per entrambi. A seconda di come un team ha definito lo scope delle credenziali dei runner e dei segreti a livello di progetto, un punto d’appoggio acquisito attraverso un progetto pubblico potrebbe consentire movimento laterale. I team che eseguono configurazioni miste di progetti pubblici e privati dovrebbero rivedere le impostazioni di isolamento dei runner insieme alla patch.

Gli utenti di GitLab.com (SaaS) non sono interessati e non devono intraprendere alcuna azione. La vulnerabilità è specifica ai deployment self-managed di Community Edition ed Enterprise Edition. I team su GitLab.com possono verificare il proprio modello di hosting tramite l’URL dell’istanza: se l’URL è gitlab.com, si trovano sul prodotto SaaS. Se l’URL punta a un dominio aziendale, si tratta di un deployment self-managed che deve essere aggiornato.

I team europei devono fare i conti con una scadenza di conformità più stringente. Ai sensi del DORA (Digital Operational Resilience Act), le entità del settore finanziario nell’UE sono tenute a documentare le vulnerabilità ICT e a dimostrare che le patch critiche vengono applicate entro tempi coerenti con la propria propensione al rischio. Un CVE con CVSS 9,4 attivamente sfruttato in un sistema classificato come infrastruttura ICT critica non è una questione da rinviare al prossimo sprint. I responsabili della conformità dovrebbero trattare il timestamp della patch come un evento operativo rilevante ai fini DORA e documentarlo di conseguenza.

Per i team italiani, questa vulnerabilità assume rilevanza immediata su più fronti. L’ACN (Agenzia per la Cybersicurezza Nazionale) classifica le falle con CVSS ≥ 9,0 tra le priorità assolute di intervento e ha emanato specifiche linee guida sulla sicurezza delle piattaforme DevOps e dei sistemi CI/CD. Il D.Lgs. 138/2024, che recepisce la Direttiva NIS2 in Italia (vigente dal 16 ottobre 2024), obbliga i soggetti essenziali e importanti a notificare all’ACN incidenti significativi entro 24 ore dalla presa di conoscenza: un’istanza GitLab self-managed compromessa che ospita il codice sorgente di sistemi critici rientra pienamente in questa fattispecie. Le aziende del settore finanziario e bancario, soggette anche alla vigilanza di Banca d’Italia, devono inoltre trattare questa patch come un evento ICT da registrare nel proprio framework di gestione del rischio tecnologico ai sensi delle disposizioni EBA e BCE in materia di operational resilience.

Utilizzate GitLab self-managed? Richiedete una revisione della sicurezza.

I nostri ingegneri conducono penetration test e audit di sicurezza che coprono l’hardening delle istanze GitLab, la gestione dei segreti CI/CD, l’isolamento dei runner e l’esposizione degli endpoint API. Se non siete certi che il vostro deployment GitLab sia aggiornato e correttamente configurato, possiamo valutare la vostra postura in due o tre settimane e fornire una roadmap di remediation prioritizzata.

Richiedi una revisione della sicurezza

Cosa fare adesso

AzioneTempisticaNote
Aggiornare a 19.2.4, 19.1.6, 19.0.8 o 18.11.11Adesso — trattare come P0Nessuna migrazione del database; il rolling restart è sufficiente. Verificare la versione corrente tramite /help sulla propria istanza.
Se l’aggiornamento è rimandato: limitare /api/graphql alle sessioni autenticatePrima della prossima ora lavorativaConfigurare il reverse proxy (nginx, Traefik) per richiedere cookie di sessione o token API sull’endpoint GraphQL. Si tratta esclusivamente di una soluzione temporanea.
Cercare nei log la stringa @gl_introduced nelle richieste a /api/graphqlOggiIndicatore di WatchTowr per i probe noti di CVE-2026-19478. Ruotare i token accessibili ai job nei progetti pubblici se vengono trovate richieste sospette.
Verificare lo scope dei runner CI/CDIn questo sprintI runner condivisi che elaborano job sia per progetti pubblici che privati devono essere esaminati per l’esposizione delle credenziali. Passare a runner specifici per i progetti con segreti elevati.
Ruotare le variabili CI protette per i progetti pubbliciIn questo sprintSe la pipeline di un progetto pubblico ha accesso a credenziali per provider cloud, registry o API interne, ruotare quelle credenziali subito a titolo precauzionale.
Documentare l’evento di patching ai fini della conformità DORA e NIS2Entro 48 oreTeam del settore finanziario e soggetti NIS2 nell’UE: registrare l’identificatore CVE, CVSS, versioni interessate, patch applicata, timestamp e responsabile nel proprio registro degli incidenti ICT e delle patch.

Fonti: The Hacker News — Critical GitLab GraphQL Flaw Could Let Unauthenticated Attackers Delete Public Projects (agosto 2026); SecurityWeek — Critical GitLab Flaw Exploited Shortly After Disclosure (agosto 2026); Help Net Security — Critical GitLab flaw allows attackers to modify or delete public projects (CVE-2026-19478) (18 agosto 2026).

FAQ

Che cos’è CVE-2026-19478 in GitLab?

CVE-2026-19478 è una vulnerabilità critica di code-injection (CVSS 9,4) nel layer API GraphQL di GitLab. Un difetto nel modo in cui GitLab elabora una direttiva GraphQL consente a un attaccante remoto non autenticato di iniettare operazioni che possono modificare o eliminare progetti GitLab pubblicamente accessibili e dati utente. Non sono richieste credenziali, privilegi o interazione da parte dell’utente per sfruttarla.

Quali versioni di GitLab sono vulnerabili a CVE-2026-19478?

La vulnerabilità riguarda GitLab Community Edition (CE) ed Enterprise Edition (EE) nelle versioni 18.2.0 fino a 18.11.10, 19.0.0 fino a 19.0.7, 19.1.0 fino a 19.1.5 e 19.2.0 fino a 19.2.3. Le versioni corrette sono 18.11.11, 19.0.8, 19.1.6 e 19.2.4. Gli utenti di GitLab.com (SaaS) non sono interessati.

CVE-2026-19478 è attivamente sfruttata?

Sì. La rete honeypot globale di WatchTowr ha rilevato i primi tentativi di sfruttamento in the wild circa due giorni dopo la patch di emergenza di GitLab del 17 agosto 2026, secondo SecurityWeek. Gli attaccanti sono passati dal proof-of-concept alla scansione attiva entro 48 ore dalla divulgazione pubblica.

Cosa possono fare gli attaccanti con CVE-2026-19478?

Un exploit riuscito consente a un attaccante remoto non autenticato di eseguire modifiche o eliminazioni non autorizzate di progetti GitLab pubblici e dei dati utente associati. Ciò significa che un attaccante può eliminare repository, issue, merge request e artefatti di progetto su qualsiasi progetto pubblico ospitato su un’istanza GitLab self-managed vulnerabile — senza effettuare l’accesso.

Qual è la mitigazione per CVE-2026-19478?

La mitigazione principale consiste nell’aggiornare immediatamente a GitLab 19.2.4, 19.1.6, 19.0.8 o 18.11.11. Queste versioni non contengono nuove migrazioni del database, quindi i deployment multi-nodo non dovrebbero richiedere downtime. Come misura temporanea prima dell’aggiornamento, gli amministratori possono limitare l’accesso non autenticato all’endpoint /api/graphql tramite reverse proxy, oppure disabilitare completamente la visibilità pubblica dei repository. Il blocco della stringa @gl_introduced nelle regole del web application firewall può bloccare le firme di probe note.