GitLab ha rilasciato aggiornamenti di sicurezza per risolvere una vulnerabilità critica di bypass dell'autenticazione SAML che ha un impatto sulle installazioni autogestite di GitLab Community Edition ed Enterprise Edition. Security Assertion Markup Language è un protocollo di autenticazione Single Sign-On (SSO) che consente agli utenti di accedere a diversi servizi utilizzando le stesse credenziali. La falla, tracciata come CVE-2024-45409, deriva da un problema nelle librerie OmniAuth-SAML e Ruby-SAML, che GitLab usa per gestire l'autenticazione basata su SAML. La vulnerabilità si verifica quando la risposta SAML inviata da un provider di identità (IdP) a GitLab contiene una configurazione errata o è manipolata. Il difetto riguarda una convalida insufficiente di elementi chiave nelle asserzioni SAML, come extern_uid (ID utente esterno). Quest’ultimo viene utilizzato per identificare in modo univoco un utente su sistemi diversi. Un aggressore può creare una risposta SAML dannosa che inganna GitLab facendogli riconoscere l'utente come utente autenticato.
La falla CVE-2024-45409 ha un impatto su GitLab 17.3.3, 17.2.7, 17.1.8, 17.0.8, 16.11.10 e tutte le release precedenti di tali branch. La vulnerabilità è stata risolta su GitLab 17.3.3, 17.2.7, 17.1.8, 17.0.8 e 16.11.10, dove OmniAuth SAML è stato aggiornato alla versione 2.2.1 e Ruby-SAML alla 1.17.0. Per gli utenti di istanze GitLab Dedicated su GitLab.com non è necessario intraprendere alcuna azione. Il problema riguarda infatti solo le installazioni autogestite. Per coloro che non possono eseguire immediatamente l'aggiornamento a una versione sicura, GitLab suggerisce di abilitare l'autenticazione a due fattori (2FA) per tutti gli account e di impostare l'opzione di bypass SAML 2FA su "non consentire".
GitLab: i segnali dello sfruttamento della vulnerabilità
Nel suo bollettino, GitLab ha fornito segnali di sfruttamento tentato o riuscito, suggerendo che gli attori malintenzionati potrebbero già sfruttare il difetto negli attacchi. I segnali di sfruttamento tentato o riuscito sono ad esempio: errori correlati a RubySaml::ValidationError (tentativi non riusciti), valori extern_uid nuovi o insoliti nei log di autenticazione (tentativi riusciti), informazioni mancanti o non corrette nelle risposte SAML, più valori extern_uid per un singolo utente (indicano una potenziale compromissione dell'account) e autenticazione SAML da un indirizzo IP non familiare o sospetto rispetto ai soliti modelli di accesso dell'utente. Ad oggi GitLab non ha rivelato se ha effettivamente osservato o meno uno sfruttamento attivo di CVE-2024-45409 in natura. Tuttavia, è possibile che nei prossimi giorni gli sviluppatori rilascino nuove informazioni in merito.