Prevenzione degli attacchi CSRF

Funzionamento degli attacchi CSRF

Il CSRF (Cross-site request forgery) è una vulnerabilità del sito Web in cui un browser di utenti 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 attualmente eseguito il login a un'applicazione, i dati dell'utente potrebbero essere compromessi.

Ad esempio, considerate uno scenario in cui avete eseguito l’accesso alla console di amministrazione in un browser. Riceverete 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 esegue 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: l'indirizzo della pagina di origine da cui proviene una richiesta. Ad esempio, una pagina Web sul sito1.com contiene un collegamento a sito2.com. Facendo clic sul collegamento si invia 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 whitelist: gli URI identificano le risorse sul server dei moduli che vengono richieste, ad esempio, /adminui o /contentspace. Alcune risorse possono consentire l'accesso all'applicazione da siti esterni. Queste risorse vengono considerate URI inseriti nell'elenco Consentiti. Il server dei moduli non esegue mai un controllo referente dagli URI inseriti nell'elenco Consentiti.

Referente nullo: Quando si apre una nuova finestra o scheda del browser, si digita un indirizzo e si preme 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 moduli può ricevere un referente nullo da:

  • richieste effettuate su endpoint SOAP o REST da Acrobat
  • qualsiasi client desktop che esegue una richiesta HTTP su un endpoint SOAP o REST AEM moduli
  • quando si apre una nuova finestra del browser e viene inserito l'URL per qualsiasi pagina di login AEM modulo per l'applicazione Web

Consentire un referente nullo sugli endpoint SOAP e REST. Consentite inoltre un referente nullo su tutte le pagine di login URI, ad esempio /adminui e /contentspace, e sulle relative risorse mappate. Ad esempio, il servlet mappato per /contentspace è /contentspace/faces/jsp/login.jsp, che deve essere un'eccezione di riferimento null. Questa eccezione è necessaria solo se si abilita il filtro GET per l'applicazione Web. Le applicazioni possono specificare se consentire referenti null. Vedere "Protezione dagli attacchi di contraffazione delle richieste tra siti" in Protezione e protezione per AEM moduli.

Eccezione referente consentita: Eccezione referente consentita è un sottoelenco dell'elenco di referenti consentiti, da cui vengono bloccate le richieste. 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, è i referenti tramite Eccezioni Referente Consentite. Le eccezioni di riferimento consentite sono specificate nel file web.xml dell'applicazione. (Vedere "Protezione dagli attacchi di contraffazione delle richieste cross-site" nella pagina Hardening and Security for AEM forms on Help and Tutorials.)

Come funzionano i referenti

AEM moduli fornisce un filtro di riferimento, che può aiutare a prevenire attacchi CSRF. Come funziona il filtro dei riferimenti:

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

    • Se si tratta di un POST, il server dei moduli esegue il controllo dell'intestazione del referente.
    • Se è GET, il server dei moduli bypassa il controllo del referer, a meno che CSRF_CHECK_GETS non sia impostato su true, nel qual caso esegue il controllo dell'intestazione del referente. CSRF_CHECK_GETS è specificato nel file web.xml dell’applicazione. (Vedere "Protezione dagli attacchi di contraffazione delle richieste cross-site" in Guida all'indurimento e alla sicurezza.)
  2. Il server dei moduli verifica 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 verifica se si tratta di un referente consentito. Se consentita, il server verifica la presenza di un'eccezione di referente:

    • 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 verifica se è consentito un referente nullo.

    • Se è consentito un referente nullo, la richiesta viene passata.
    • Se non è consentito un referente nullo, il server verifica se l'URI richiesto è un'eccezione per il referente nullo 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 moduli vengono aggiunti all'elenco Referente consentito. Potete modificare questo elenco nella console di amministrazione.

  1. Nella console di amministrazione, fate clic su Impostazioni > Gestione utente > Configurazione > Configura URL referente consentiti. L'elenco Referente consentito viene visualizzato nella parte inferiore della pagina.

  2. Per aggiungere un referente consentito:

    • Digitare un nome host o un indirizzo IP nella casella Referenti 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, specificate le porte consentite per HTTP, HTTPS o entrambe. Se lasciate vuote queste caselle, vengono utilizzate le porte predefinite (porta 80 per HTTP e porta 443 per HTTPS). Se immettete 0 (zero) nelle caselle, tutte le porte del server vengono abilitate. Potete inoltre immettere un numero di porta specifico per attivare solo tale porta.
    • Fate clic su Aggiungi.
  3. Per rimuovere una voce dall'elenco Referente consentito, selezionarla dall'elenco e fare clic su Elimina.

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

  4. Dopo aver modificato l'elenco Referente consentito, riavviare il server moduli AEM.

In questa pagina