Gli sviluppatori della distribuzione Alpine Linux hanno rivelato informazioni su un tentativo di hack della piattaforma di sviluppo collaborativo gitlab.alpinelinux.org, sulla quale si stava lavorando al gestore di pacchetti APK, agli strumenti di build, ai componenti dell'infrastruttura e agli script per la creazione di pacchetti (aports). L'attacco è stato effettuato attraverso l'esploitazione di una vulnerabilità nella piattaforma GitLab, causata da un overflow di buffer nel motore delle espressioni regolari del linguaggio Ruby. Non sono stati trovati prove e tracce di un hack riuscito, ma poiché non è possibile escludere completamente un'esploitation riuscita della vulnerabilità, il contenitore con GitLab è stato considerato potenzialmente compromesso e il suo contenuto è stato ricostruito da zero, e agli utenti è stata avviata la procedura di cambio password.
Gli amministratori dell'infrastruttura di Alpine Linux non hanno rilevato la presenza di file non autorizzati, processi sospetti in esecuzione, accessi insoliti all'API, modifiche alle impostazioni e ai file di sistema, né picchi di carico tipici dell'estrazione dati di massa. Durante l'analisi dell'integrità del repository aports, dei pacchetti e dei file di rilascio, così come il loro confronto con le copie da server di build esterni e dai sistemi degli sviluppatori, non sono state rilevate modifiche nascoste.
Escludere completamente la possibilità che l'attacco sia andato a buon fine è complicato dall'assenza di informazioni sulle connessioni di rete in uscita, dalla cancellazione di alcuni log durante la rotazione (per esempio, il log cron) e dalla mancanza di dettagli sufficienti nei log del server web (l'applicazione riuscita di un exploit che non porta a un crash non è registrata nel log).
In caso di attacco riuscito, gli aggressori potrebbero aver ottenuto accesso al database con informazioni su tutti gli utenti di GitLab (hash delle password, email, Indirizzi IP ecc.), variabili ambientali e token dai sistemi di integrazione continua, codici per l'autenticazione a due fattori, hash dei token di accesso personali, contenuto di repository privati e discussioni riservate sui problemi. Le chiavi per la generazione delle firme digitali per le versioni e i pacchetti sull'attaccato server non erano memorizzate.
I primi tentativi di sfruttare la vulnerabilità sono stati registrati il 20 e il 21 ottobre. L'attaccante ha registrato un account su GitLab e ha tentato di inviare impostazioni modificate per il sistema di integrazione continua. Nei log sono stati registrati 8 arresti anomali dei processi di GitLab, 4 dei quali sono stati collegati all'uso dell'exploit. Si segnala che la prima fase dell'exploit ha avuto successo, ma la seconda fase è fallita.
Al momento dell'attacco, nel container era in uso una versione vulnerabile di GitLab 19.3.4, che il 22 ottobre è stata aggiornata alla versione GitLab 19.3.6. Tuttavia, gli amministratori di Alpine non hanno considerato che la correzione era stata apportata solo ai pacchetti di installazione ufficiali di GitLab 19.3.6 e non al codice stesso di GitLab, poiché la vulnerabilità era presente negli strumenti di Ruby. Nel container continuava ad essere utilizzato un vecchio strumento Ruby e la vulnerabilità è rimasta irrisolta.
Il fatto che il sistema rimanesse vulnerabile è stato rilevato solo il 26 ottobre. L'analisi dei log ha mostrato che il 25 e il 26 ottobre gli attaccanti hanno ripreso i tentativi di attacco. Il 27 ottobre l'accesso degli utenti esterni a GitLab è stato limitato. Il 28 ottobre il contenuto è stato ricompilato, tutte le password sono state reimpostate (gli utenti devono impostare una nuova password tramite la procedura di recupero password dimenticata) e le chiavi di accesso sono state sostituite. Il 29 ottobre il nuovo server è stato messo in servizio. Il progetto accompagnato dal container Docker alpinelinux/gitlab è rimasto vulnerabile fino al 27 ottobre.
Fonte: opennet.ru
