In sintesiGli sviluppatori di Ruby hanno rilasciato le versioni 4.0.9, 3.4.12 e 3.3.13 per correggere quattro vulnerabilità RCE in GitLab, che permettevano l'esecuzione di codice arbitrario tramite espressioni regolari. Le vulnerabilità, identificate come CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 e CVE-2026-110264, sono dovute a errori nel motore Onigmo integrato in Ruby.
Gli sviluppatori di Ruby hanno rilasciato le versioni 4.0.9, 3.4.12 e 3.3.13 dopo quattro vulnerabilità di GitLab che permettevano l’esecuzione di codice arbitrario sul server tramite espressioni regolari appositamente preparate. Le quattro CVE sono dovute a tre errori nel motore Onigmo integrato in Ruby, di cui due valutate 10 su 10 da GitLab.
GitLab consente agli utenti di impostare espressioni regolari, ad esempio nella configurazione CI/CD. Tali modelli aiutano il programma a cercare e verificare il testo in base a regole specifiche. Come spiegato dagli sviluppatori di Ruby, una stringa appositamente composta poteva danneggiare la memoria già durante la compilazione del modello. In GitLab, il meccanismo vulnerabile permetteva di trasformare l’errore in esecuzione remota di codice e di costringere il server a eseguire i comandi dell’attaccante.
Il primo problema, CVE-2026-89078, portava a un doppio rilascio di una porzione di memoria se il motore non riusciva a interpretare un determinato modello. Pertanto le CVE-2026-93577 e CVE-2026-97229 sfruttavano un altro errore: durante il calcolo delle dimensioni dell’espressione compilata si verificava un integer overflow. Dietro i due identificatori CVE in questo caso si nasconde un unico difetto di Ruby.
Invece il CVE-2026-110264 riguardava gli identificatori interni di Onigmo. Se un malintenzionato impostava troppe ripetizioni all’interno dell’espressione, il contatore poteva traboccare e compromettere la gestione della memoria. GitLab ha valutato la vulnerabilità al massimo livello di 10 punti CVSS. Per l’attacco non era necessaria un’account, e le versioni vulnerabili di GitLab esistevano a partire dal ramo 7.0.
Due vulnerabilità precedenti, CVE-2026-89078 e CVE-2026-93577, richiedevano autorizzazione e hanno ricevuto 9,9 punti ciascuna. In seguito GitLab ha chiuso CVE-2026-97229 con una valutazione di 10,0, che permetteva di attaccare il server senza accesso al sistema. L’azienda ha rilasciato correzioni per i propri prodotti in anticipo, apportando modifiche alla versione di Ruby fornita insieme a GitLab.
Ora le correzioni sono arrivate al linguaggio stesso. Ruby 4.0 conteneva già parte delle modifiche di protezione: la versione 4.0.0 eliminava il doppio rilascio di memoria, mentre la 4.0.8 chiudeva l’overflow durante il calcolo delle dimensioni del modello. Ruby 4.0.9 ha aggiunto la correzione rimanente. Per i rami 3.4 e 3.3, l’intero set di correzioni è apparso nelle versioni 3.4.12 e 3.3.13.
Il pericolo non riguarda ogni applicazione Ruby. Il problema si verifica quando il programma prende una stringa da una fonte non attendibile e la trasforma in un’espressione regolare tramite Regexp.new, Regexp.union, Regexp.compile o inserisce dati utente direttamente nel modello. Se tutte le espressioni sono state scritte in anticipo dagli sviluppatori e l’utente non può modificarne il contenuto, gli errori descritti non si verificano.
L’impostazione Regexp.timeout non salva la situazione. Il limite controlla il tempo di ricerca delle corrispondenze, mentre la memoria viene danneggiata prima, durante la compilazione dell’espressione. Limitare la lunghezza della stringa è insufficiente: alcuni errori sono causati anche da modelli brevi. Gli sviluppatori consigliano di passare a Ruby 4.0.9, 3.4.12 o 3.3.13 e, fino all’aggiornamento, di non trasformare l’input non attendibile in espressioni regolari.
Carolina Vivianti è consulente/Advisor autonomo in sicurezza informatica con esperienza nel settore tech e security. Ha lavorato come Security Advisor per Ford EU/Ford Motor Company e Vodafone e ha studi presso la Sapienza Università di Roma.
Aree di competenza: Cybersecurity, IT Risk Management, Security Advisory, Threat Analysis, Data Protection, Cloud Security, Compliance & Governance