Un utente GitLab autorizzato a configurare un flusso agente non dovrebbe ottenere i poteri del sistema operativo del servizio che lo interpreta. CVE-2026-90970 rompe questa separazione: una configurazione Duo preparata può uscire dalla sandbox dei template di prompt ed eseguire comandi arbitrari su un AI Gateway vulnerabile.

GitLab ha divulgato la falla il 2 ottobre 2026, assegnando CVSS 3.1 di 9,9, critico. Servono autenticazione e accesso a Duo Agent Platform. Non è un caso di presa di controllo anonima e senza clic di ogni server GitLab. Conta il confine attraversato dopo questi requisiti, non fingere che non esistano.

I gateway gestiti da GitLab sono già corretti. Gli operatori di gateway propri vulnerabili devono aggiornare e indagare. Tenere codice e prompt nella rete privata non mantiene automaticamente l'autore autenticato dentro la sandbox prevista.

Verificare il gateway, non soltanto GitLab

Gli intervalli indicati iniziano da AI Gateway 18.1.6 e arrivano prima di 19.2.4; il ramo 19.3 è colpito prima di 19.3.2 e il 19.4 prima di 19.4.1. Le versioni corrette sono 19.2.4, 19.3.2 e 19.4.1. Va installata la correzione appropriata o una successiva versione supportata del gateway.

I numeri riguardano un servizio autonomo tra funzioni IA GitLab e modelli. Gestisce logica applicativa e richieste, non è il modello linguistico. Immagine e ciclo di distribuzione possono differire dall'applicazione principale: controllare solo la versione GitLab può lasciare inosservato un vecchio gateway.

Configurazioni gestite, ibride e interamente proprie sono diverse. Nell'ibrido alcune funzioni possono usare l'infrastruttura cliente e altre servizi GitLab. L'inventario deve coprire instradamento per funzione, repliche, sviluppo e prove concettuali, immagini in cache e ripristino, non solo l'interfaccia produttiva.

Il self-hosting completo può operare con poco o nessun internet generale. Riduce alcune vie esterne ma non elimina un interno autorizzato, account rubato, token di servizio o carico interno compromesso. L'isolamento può anche rallentare avvisi e consegna delle patch.

L'errore è nel software dei template

Un flusso combina prompt, strumenti, decisioni e azioni in sviluppo multistadio. I template trasformano configurazione e valori a runtime in istruzioni per il modello. La sandbox deve impedire agli input di raggiungere funzioni applicative pericolose o capacità del sistema operativo.

CWE-1336 indica neutralizzazione impropria di elementi speciali del motore di template. La sintassi controllata dall'attaccante può diventare comportamento eseguibile invece di dati inerti. GitLab descrive comandi arbitrari sul gateway; gli effetti dipendono da permessi del processo, oggetti esposti, credenziali e percorsi di rete.

È diverso dalla prompt injection che influenza il modello con istruzioni. La template injection attacca software convenzionale che costruisce o renderizza le istruzioni. I comandi possono partire qualunque sia la risposta del modello. Aggiungere un'istruzione comportamentale di sicurezza non corregge il trattamento insicuro dei template.

Non dimostra neppure che un modello abbia inventato autonomamente la fuga. L'ingresso è un flusso IA, ma il confine vulnerabile è applicativo. L'esame deve includere cronologia, attività di gateway e container, permessi e credenziali a valle; le conversazioni non sono l'intera traccia dell'incidente.

Perché una falla autenticata arriva a 9,9

Il vettore è AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. Attacco di rete non richiede una shell locale precedente, ma rete non significa necessariamente internet pubblico. Bassa complessità indica assenza di una stretta condizione di gara o stato insolito nella valutazione. Privilegi bassi richiedono comunque login e accesso alla piattaforma.

Nessuna ulteriore interazione significa che un'altra persona non deve aprire file, approvare finestre o cliccare esche dopo l'arrivo della configurazione. Ambito modificato descrive il passaggio dall'input autorizzato del flusso a un'altra autorità: l'ambiente comandi del gateway.

Impatto alto su riservatezza, integrità e disponibilità comprende possibili letture, modifiche e interruzioni. Il 9,9 standardizzato non dimostra danni massimi ovunque, né alcuna intrusione. Architettura, privilegio minimo, sistemi raggiungibili e segreti determinano l'effetto reale.

Un utente autenticato non è automaticamente amministratore. Gli autori di flussi possono avere molte funzioni senza meritare i permessi del processo interpretante. Token rubati o identità automatiche eccessivamente privilegiate rendono importante il confine anche con utente originariamente legittimo.

I container sono confini, non cancellano rischi. Anche senza root possono esporre segreti montati, token, dati elaborati e reti interne. Mount scrivibili, privilegi eccessivi e uscita ampia aumentano le conseguenze; comandi in un container non provano la compromissione totale.

Un secondo caso critico solleva domande architetturali

A febbraio GitLab ha corretto CVE-2026-1868 nel Duo Workflow Service del gateway. Anche questo riguardava espansione insicura di template dell'utente tramite flussi preparati, con identici 9,9 e vettore. Le correzioni includevano 18.6.2, 18.7.1 e 18.8.1; scoperta attribuita a un membro interno.

La somiglianza giustifica verifiche profonde del confine flusso-template. Non dimostra regressione, correzione incompleta a febbraio o percorso identico a ottobre. I riassunti pubblici non stabiliscono il rapporto: nessuna ipotesi va presentata come confermata.

Configurazioni dichiarative flessibili possono comportarsi da linguaggio quando espressioni, variabili e plugin diventano azioni privilegiate. Più personalizzazione aumenta ciò che parser e sandbox devono interpretare in sicurezza. È rischioso riunire rendering non fidato e accesso prezioso nello stesso processo.

Aiutano livelli indipendenti: input come dati, pochi oggetti esposti, invio autorizzato, limiti su filesystem/rete/credenziali e modifiche attribuibili. Creare o cambiare un flusso deve collegarsi al successivo comportamento. Servono proprietario, revisione, versioni e test come per CI.

Correggere e verificare l'intrusione sono due lavori

Gli operatori devono conservare digest precedente e prove di deployment, installare il corretto, riavviare i carichi e verificare l'immagine effettiva. Vecchie repliche, test e ripristino non devono mantenere versioni vulnerabili. Un avvio riuscito non prova sostituzione completa.

La verifica del periodo vulnerabile deve identificare persone e servizi capaci di creare o modificare flussi, conservare configurazioni ed esaminare audit. Figli inattesi, interpreti, file modificati, connessioni esterne e riavvii insoliti vanno confrontati con la normalità. Sono piste d'indagine, non indicatori universali pubblicati per questo CVE.

L'installazione descrive JWT firmati e servizi Gateway/Agent Platform separati con coppie di chiavi distinte. Bisogna esaminare entrambi, fiducia reciproca e chiavi/configurazione runtime. Una credenziale non rappresenta tutto il sistema. Segreti accessibili a un processo compromesso possono richiedere rotazione quando prove o esposizione lo giustificano.

Vanno mappati istanza GitLab, server di modelli, monitoraggio e sistemi interni accessibili. Prompt derivati dal codice e contesto delle issue sono sensibili anche se il container conserva poco. Uscita limitata, identità dei carichi, filesystem in sola lettura e minimi privilegi limitano danni, non riparano template né sostituiscono aggiornamento.

Il self-hosting divide responsabilità tra piattaforma, modelli, container e rete. Un'immagine senza proprietario può cadere tra i gruppi. Il gestito riduce questa specifica attività cliente, introducendo altri compromessi di fornitore, residenza e dipendenza. Il caso non dimostra che un'opzione sia sempre più sicura.

Ciò che il registro pubblico non dimostra

Le informazioni disponibili non stabiliscono sfruttamento attivo o diffuso in produzione, proof of concept pubblico, percorso dettagliato o indicatori universali successivi. Assenza di conferma non è conferma di assenza. Comandi riconosciuti dal fornitore e gravità critica giustificano riparare senza prolungare l'esposizione.

Le prove successive dovrebbero includere adozione verificata, causa spiegata da GitLab e telemetria credibile o nuove indicazioni ufficiali. Dopo tempo per aggiornare, i dettagli possono distinguere percorso separato, bypass o regressione. I registri locali devono identificare immagini precedenti/nuove, riavvio, verifica e responsabili accanto a cronologia e configurazione.

Il test pratico è conoscere gateway esistenti, autori delle modifiche e risorse/segreti raggiungibili da ciascun processo. Il middleware IA richiede disciplina come runner CI, archivi di artefatti e gestori di segreti. La località dei dati diventa controllo quando l'organizzazione sa inventariare, aggiornare, isolare e investigare il servizio operativo.

Fonti e letture correlate

Registro CVE-2026-90970 · Documentazione AI Gateway · Debolezza dei template CWE-1336 · Architettura Duo self-hosted · Installazione e chiavi di firma · Precedente CVE-2026-1868 · Guida ai registri degli incidenti · Registro originale della notizia

Fonti

Esplora la directory degli strumenti →