Prevenzione degli attacchi CSRF

Funzionamento degli attacchi del CSRF

La vulnerabilità cross-site request forgery (CSRF) è una vulnerabilità del sito web in cui il browser di un utente valido viene utilizzato per inviare una richiesta dannosa, possibilmente tramite un iFrame. Poiché il browser invia i cookie a livello di dominio, se l’utente ha effettuato l’accesso a un’applicazione, i dati dell’utente potrebbero essere compromessi.

Ad esempio, considera uno scenario in cui hai effettuato l’accesso alla console di amministrazione in un browser. Ricevi un messaggio e-mail contenente un collegamento. Fai clic sul collegamento , per aprire una nuova scheda nel browser. La pagina aperta contiene un iFrame nascosto che effettua una richiesta dannosa al server dei moduli utilizzando il cookie della sessione dei moduli AEM autenticati. Poiché User Management riceve un cookie valido, trasmette la richiesta.

Referente: Indirizzo della pagina di origine da cui proviene una richiesta. Ad esempio, una pagina web su site1.com contiene un collegamento a site2.com. Facendo clic sul collegamento viene pubblicata una richiesta a site2.com. Il referente di questa richiesta è site1.com perché la richiesta viene effettuata da una pagina la cui origine è site1.com.

URI inseriti nell'elenco Consentiti: Gli URI identificano le risorse sul server dei moduli richieste, ad esempio /adminui o /contentspace. Alcune risorse possono consentire a una richiesta di accedere all’applicazione da siti esterni. Queste risorse sono considerate URI inseriti nell'elenco Consentiti. Il server dei moduli non esegue mai un controllo referente dagli URI inseriti nell'elenco Consentiti.

Referente Null: Quando apri una nuova finestra o scheda del browser, digita un indirizzo e premi Invio, il referente è nullo. La richiesta è completamente nuova e non proviene da una pagina web padre; pertanto, non esiste un referente per la richiesta. Il server dei moduli può ricevere un referente null da:

  • richieste effettuate su endpoint SOAP o REST da Acrobat
  • qualsiasi client desktop che effettua una richiesta HTTP su un endpoint SOAP o REST di AEM forms
  • quando viene aperta una nuova finestra del browser e viene inserito l’URL per qualsiasi pagina di accesso dell’applicazione Web AEM forms

Consenti un referer null sugli endpoint SOAP e REST. Consentire anche un referer nullo su tutte le pagine di accesso URI come /adminui e /contentspace e le relative risorse mappate. Ad esempio, il servlet mappato per /contentspace è /contentspace/faces/jsp/login.jsp, che dovrebbe essere un'eccezione referer null. Questa eccezione è necessaria solo se si abilita il filtro GET per l'applicazione Web. Le applicazioni possono specificare se consentire riferimenti nulli. Consulta "Proteggere da attacchi di falsificazione di richieste intersito" in Hardening e sicurezza per i moduli AEM.

Eccezione referente consentita: Eccezione referente consentita è un sottoelenco dell’elenco dei referenti consentiti, da cui le richieste sono bloccate. Le eccezioni di riferimento consentite sono particolari per un'applicazione web. Se un sottoinsieme dei referenti consentiti non deve essere autorizzato a richiamare una particolare applicazione web, puoi inserire nell'elenco Bloccati i referenti tramite Eccezioni referente consentite. Le eccezioni di riferimento consentite sono specificate nel file web.xml per la tua applicazione. (Vedere "Protezione dagli attacchi di vulnerabilità cross-site Request Forgery" in Hardening and Security for AEM forms nella pagina Aiuto e Tutorials.)

Funzionamento dei referenti consentiti

I moduli AEM forniscono un filtro di riferimento che può aiutare a prevenire attacchi CSRF. Come funziona il filtro dei referenti:

  1. Il server dei moduli controlla il metodo HTTP utilizzato per la chiamata:

    • Se si tratta di POST, il server dei moduli esegue il controllo dell’intestazione del referente.
    • Se è GET, il server dei moduli ignora il controllo referer, a meno che CSRF_CHECK_GETS non sia impostato su true, nel qual caso esegue il controllo di intestazione referer. CSRF_CHECK_GETS è specificato nel file web.xml per l'applicazione. (Vedi "Protezione dagli attacchi di vulnerabilità cross-site Request Forgery" in Guida all’indurimento e alla sicurezza.)
  2. Il server dei moduli controlla se l’URI richiesto è inserito nell'elenco Consentiti:

    • Se l’URI viene inserito nell'elenco Consentiti, il server trasmette la richiesta.
    • Se l’URI richiesto non viene inserito nell'elenco Consentiti, il server recupera il referente della richiesta.
  3. Se nella richiesta è presente un referente, il server controlla se si tratta di un referente consentito. Se consentito, il server verifica la presenza di un'eccezione referer:

    • Se si tratta di un'eccezione, la richiesta viene bloccata.
    • Se non si tratta di un’eccezione, la richiesta viene passata.
  4. Se nella richiesta non è presente alcun referente, il server controlla se è consentito un referente null.

    • Se è consentito un referente null, la richiesta viene trasmessa.
    • Se non è consentito un referente null, il server controlla se l’URI richiesto è un’eccezione per il referente null e gestisce la richiesta di conseguenza.

Configurare i referenti consentiti

Quando si esegue Configuration Manager, l'host e l'indirizzo IP predefiniti o il server dei moduli vengono aggiunti all'elenco Riferimenti consentiti. Puoi modificare questo elenco nella console di amministrazione.

  1. Nella console di amministrazione, fai clic su Impostazioni > Gestione utente > Configurazione > Configura gli URL di riferimento consentiti. L’elenco Riferimenti consentiti viene visualizzato nella parte inferiore della pagina.

  2. Per aggiungere un referente consentito:

    • Digita un nome host o un indirizzo IP nella casella Riferimenti consentiti . Per aggiungere più di un referente consentito alla volta, digita ogni nome host o indirizzo IP su una nuova riga.
    • Nelle caselle Porta HTTP e Porte HTTPS specificare le porte consentite per HTTP, HTTPS o entrambe. Se queste caselle vengono lasciate vuote, vengono utilizzate le porte predefinite (porta 80 per HTTP e porta 443 per HTTPS). Se immetti 0 (zero) nelle caselle, tutte le porte di quel server sono abilitate. È inoltre possibile immettere un numero di porta specifico per abilitare solo tale porta.
    • Fate clic su Aggiungi.
  3. Per rimuovere la voce dall’elenco Riferimenti consentiti, selezionarla dall’elenco e fare clic su Elimina.

    Se l’elenco dei referenti consentiti è vuoto, la funzione CSRF smette di funzionare e il sistema diventa insicuro.

  4. Dopo aver modificato l’elenco Riferimenti consentiti, riavviare il server dei moduli AEM.

In questa pagina