Daniel Petri - Responsabile formazione senior

L'iniezione LDAP rappresenta un formidabile vettore di cyberattacco, che prende di mira i meccanismi di autenticazione e autorizzazione all'interno dell'ambiente Active Directory. Sfruttando una convalida impropria dell'input, gli aggressori possono manipolare le dichiarazioni LDAP e potenzialmente ottenere un accesso non autorizzato al vostro servizio di directory.

Gli esperti di cybersecurity e sicurezza delle identità di Semperis hanno una conoscenza approfondita dell'iniezione LDAP, dai suoi meccanismi alle strategie di mitigazione. Questo articolo fornisce le conoscenze che potete utilizzare per salvaguardare le vostre infrastrutture Active Directory dagli attacchi LDAP injection.

Che cos'è l'iniezione LDAP?

LDAP injection è un sofisticato vettore di cyberattacco che mira alle vulnerabilità del livello applicativo dei sistemi che utilizzano Lightweight Directory Access Protocol (LDAP). LDAP è un componente fondamentale dei servizi Active Directory, in quanto fornisce un formato strutturato per le voci della directory e un metodo per i client di interagire con i dati della directory.

L'iniezione LDAP assomiglia alla ben nota iniezione SQL nella metodologia e nell'impatto. Tuttavia, l'iniezione LDAP si rivolge specificamente ai servizi di directory come Active Directory, dove le istruzioni e le query LDAP sono generate dinamicamente dagli input degli utenti. Quando questi input non sono rigorosamente sanificati o convalidati, gli aggressori possono potenzialmente alterare le query LDAP e manipolare i servizi di directory per divulgare informazioni o autenticarsi in modo malevolo.

Per eseguire un'iniezione LDAP, gli attori malintenzionati richiedono una conoscenza approfondita della sintassi LDAP e una chiara comprensione della struttura delle query dell'applicazione di destinazione. Gli aggressori in genere verificano la vulnerabilità dell'iniezione LDAP attraverso messaggi di errore o osservando il comportamento dell'applicazione in risposta a input modificati.

Come funziona l'iniezione LDAP?

Le query LDAP vengono utilizzate per cercare e manipolare le voci della directory, rispettando filtri e controlli specifici. Queste query devono essere codificate in modo sicuro per impedire qualsiasi alterazione della loro funzione.

Le iniezioni LDAP sfruttano il modo in cui un'applicazione web costruisce le query LDAP in base all'input dell'utente. L'attacco prende di mira il nucleo dei meccanismi di autenticazione basati sui servizi di directory. Questo metodo di attacco è reso possibile da un'insufficiente sanitizzazione o validazione dell'input dell'utente prima che venga inserito in un'istruzione LDAP.

In un sistema con vulnerabilità di iniezione LDAP, i caratteri speciali, come le parentesi [()], l'asterisco (*) o l'ampersand (&), incorporati negli input dell'utente senza un corretto escape possono alterare la struttura logica delle query LDAP. Se un'applicazione non esegue correttamente l'escape dei caratteri speciali nell'input fornito dall'utente, questi input possono essere modificati per estendere o alterare la query LDAP prevista.

Ad esempio, gli aggressori possono utilizzare un carattere jolly in un input non correttamente sanificato per recuperare un insieme di record più ampio di quello normalmente consentito. Gli aggressori possono iniettare un filtro e controlli LDAP, modificare le query ed eseguire comandi arbitrari che il server LDAP elabora.

Ecco un esempio: Un utente malintenzionato adatta un nome utente o un termine di ricerca altrimenti benigno per includere un filtro LDAP come:

 )(|(uid=*))

Se incorporato direttamente in una query, questo filtro potrebbe restituire tutti gli utenti, aggirando di fatto le restrizioni di ricerca previste. Per le applicazioni che utilizzano LDAP per l'autenticazione, l'aggressore potrebbe iniettare elementi di controllo, come ad esempio LDAP_SCOPE_SUBTREE o operatori booleani, inducendo il sistema a concedere l'accesso senza le dovute credenziali.

Se la query dell'applicazione include funzioni amministrative, l'aggressore potrebbe essere in grado di modificare le voci o lo schema LDAP, eliminare i record o persino modificare i controlli di accesso, a seconda dei diritti dell'esecutore della query LDAP.

I sistemi vulnerabili all'iniezione di LDAP includono tipicamente applicazioni Web con backend LDAP, in cui gli input dell'utente non vengono sanificati correttamente prima di essere passati agli interpreti delle query LDAP. Le applicazioni che consentono agli utenti di inserire direttamente i filtri di ricerca sono particolarmente a rischio.

L'iniezione di operatori di query LDAP può trasformare una ricerca di directory benigna in un comando che espone dati sensibili per gli utenti, come ad esempio:

  • Nomi utente
  • Indirizzi e-mail
  • Hash delle password

Di conseguenza, questo tipo di attacco può portare ad azioni non autorizzate, come la visualizzazione o la manipolazione di informazioni privilegiate all'interno del servizio di directory. L'attacco non solo aggira i meccanismi di autenticazione, ma può anche modificare o corrompere i dati della directory, rappresentando un rischio significativo per la sicurezza dell'infrastruttura IT di un'organizzazione.

Quali sono i rischi associati all'iniezione di LDAP?

Un'iniezione LDAP riuscita può compromettere più di un'applicazione; l'attacco può avere effetti a cascata su tutti i sistemi che si affidano alla stessa directory per l'autenticazione e l'autorizzazione.

Ad esempio, un aggressore potrebbe recuperare informazioni sensibili dell'utente, comprese le credenziali di accesso, che potrebbe poi utilizzare in ulteriori attacchi. La violazione iniziale può portare alla visualizzazione non autorizzata dei record, alla modifica dei dati della directory o all'aggiramento dei protocolli di autenticazione. L'attacco compromette l'integrità e la riservatezza dei servizi di Active Directory, con conseguente perdita di fiducia e potenziale non conformità normativa.

I rischi associati all'iniezione di LDAP non si limitano all'esposizione dei dati. Poiché LDAP può essere utilizzato anche per autenticare gli utenti, un'iniezione può essere usata per impersonare un altro utente, potenzialmente un account amministrativo, alterando una query di autenticazione in modo che restituisca sempre True, indipendentemente dalla password fornita.

Come si può rilevare un attacco LDAP injection?

Per rilevare l'iniezione di LDAP, i professionisti della sicurezza devono monitorare le query LDAP insolite. Cercate schemi indicativi di iniezione, come richieste non ortodosse o query che contengono payload tipici di iniezione. L'impiego di sistemi di rilevamento delle intrusioni che cercano specificamente tali anomalie è una misura prudente.

Come si può mitigare un attacco LDAP injection?

La comprensione e la mitigazione dell'iniezione di LDAP è imperativa a causa del suo potenziale di compromissione dell'integrità e della riservatezza dei sistemi di autenticazione basati su directory. LDAP è un servizio fondamentale per molti sistemi aziendali, tra cui:

  • Client di posta elettronica
  • Quadri per il Single Sign-On (SSO)
  • Applicazioni che si basano su servizi di ricerca di directory

Le ramificazioni di un attacco di questo tipo sono di ampia portata. La protezione delle query LDAP non è solo una pratica di programmazione difensiva. È piuttosto una salvaguardia essenziale per la sicurezza dei servizi di directory aziendali e, per estensione, dell'intera rete organizzativa.

La mitigazione dell'iniezione LDAP comporta le seguenti azioni:

  • Implementare una robusta convalida dell'input nell'applicazione che riceve l'input dell'utente LDAP.
  • Adozione di istruzioni preparate con query parametrizzate
  • Impiego delle routine di escape di LDAP
  • Rispettare il principio del minor privilegio nella concessione dei permessi di accesso.

Gli amministratori di Active Directory sono i difensori in prima linea contro gli attacchi LDAP injection. Ecco 10 passi da compiere per rafforzare le vostre difese:

  1. Convalida dell'input. Implementare controlli rigorosi di convalida dell'input per tutti i dati forniti dall'utente. Applicare set di caratteri e modelli di input rigorosi. Rifiutate le richieste che contengono caratteri inattesi o illegali. Utilizzare espressioni regolari per definire l'input consentito. Assicurarsi che vengano elaborati solo i dati sanificati.
  2. Utilizzare librerie LDAP sicure. Utilizzate librerie e framework che supportano intrinsecamente le query parametrizzate quando costruiscono le istruzioni LDAP. Tali librerie impediscono l'inclusione di input non attendibili nel contesto di esecuzione del comando, neutralizzando così i tentativi di iniezione.
  3. Eseguire correttamente l'escape dei caratteri speciali. Sviluppare un robusto meccanismo di escape in cui tutti i caratteri speciali vengano correttamente escapeati, secondo la sintassi LDAP, prima di essere inclusi nelle query LDAP. Questa parte sistematica del processo di assemblaggio delle query aiuta a evitare che l'interprete identifichi erroneamente i dati come codice.
  4. Seguire il principio del minor privilegio. Applicate il principio del minimo privilegio a tutti gli account del servizio LDAP. Assicuratevi che gli account utilizzati dalle applicazioni per interagire con il server LDAP abbiano solo i privilegi necessari per svolgere le attività richieste.
  5. Verifica frequente. Verificate e monitorate continuamente i modelli di query LDAP e i registri di accesso. Stabilite delle linee di base per il comportamento normale delle query e utilizzate strumenti automatizzati per rilevare le deviazioni che potrebbero indicare tentativi o successi di iniezioni.
  6. Educare gli utenti e gli sviluppatori. Svolgete regolarmente sessioni di formazione sia per gli utenti che per gli sviluppatori. Insegnate agli utenti l'importanza dell'igiene dei dati. Istruite gli sviluppatori sulle pratiche di codifica sicura, soprattutto per quanto riguarda l'interazione con LDAP. Avvisateli dei segnali di iniezione LDAP e comunicate le migliori pratiche di prevenzione.
  7. Aggiornamento e patch. Mantenete i vostri server LDAP e il relativo software aggiornati con le ultime patch di sicurezza. Molte iniezioni sfruttano vulnerabilità note per le quali sono disponibili patch, quindi gli aggiornamenti regolari sono una difesa semplice ma efficace.
  8. Sicurezza a livelli. Combinate misure di sicurezza come firewall, sistemi di rilevamento delle intrusioni e autenticazione a più fattori (MFA) per creare livelli di sicurezza. In questo modo è possibile rallentare gli aggressori e fornire più opportunità di rilevare e rispondere a un attacco.
  9. Documentare un piano di risposta agli incidenti. Sviluppare un piano di risposta agli incidenti specifico per gli attacchi LDAP injection. Questo piano deve includere le fasi di identificazione della portata della violazione, il contenimento dell'attacco, l'eliminazione della minaccia, il ripristino del normale funzionamento dei sistemi e la notifica alle parti interessate.
  10. Creare backup regolari. Mantenete backup regolari dei dati della directory LDAP e di Active Directory. In caso di danneggiamento dei dati dovuto a un attacco di iniezione, i backup possono garantire un'interruzione minima dei servizi.

Verifica della superficie di attacco di Active Directory

L'iniezione di LDAP rappresenta una minaccia sostanziale per gli ambienti Active Directory. Tuttavia, la comprensione del funzionamento di questo attacco e l'implementazione di un approccio di sicurezza a più livelli possono ridurre significativamente il rischio. La vigilanza, unita alle misure tecniche di salvaguardia, è fondamentale per garantire che i servizi di directory rimangano sicuri contro vettori di attacco così sofisticati. Un buon punto di partenza: Scaricate Purple Knight e verificate oggi stesso il vostro sistema Active Directory ibrido.