Prevenzione degli attacchi CSRF

Funzionamento degli attacchi CSRF

La vulnerabilità cross-site request forgery (CSRF) è una vulnerabilità del sito web in cui un browser dell’utente valido viene utilizzato per inviare una richiesta dannosa, possibilmente tramite un iFrame. Poiché il browser invia cookie su base di dominio, se l’utente ha attualmente effettuato l’accesso a un’applicazione, i suoi dati 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, che apre una nuova scheda nel browser. La pagina aperta contiene un iFrame nascosto che invia una richiesta dannosa al server Forms utilizzando il cookie della sessione autenticata dei moduli AEM. Poiché la gestione utenti riceve un cookie valido, trasmette la richiesta.

Referer: Indirizzo della pagina sorgente da cui proviene una richiesta. Ad esempio, una pagina Web su site1.com contiene un collegamento a site2.com. Facendo clic sul collegamento viene inviata 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 nel server Forms richieste, ad esempio /adminui o /contentspace. Alcune risorse possono consentire una richiesta di accesso all’applicazione da siti esterni. Queste risorse sono considerate URI inseriti nell'elenco Consentiti. Il server forms non esegue mai un controllo referente dagli URI inseriti nell'elenco Consentiti.

Referente nullo: Quando apri una nuova finestra o scheda del browser, quindi digiti un indirizzo e premi Invio, il referente è nullo. La richiesta è completamente nuova e non proviene da una pagina web principale; pertanto, non vi è alcun referente per la richiesta. Il server Forms può ricevere un riferimento null da:

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

Consenti un referente null negli endpoint SOAP e REST. Consenti anche un referente null in tutte le pagine di accesso URI, ad esempio /adminui e /contentspace, e nelle relative risorse mappate corrispondenti. 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 l'utilizzo di referenti null. Consulta "Protezione da attacchi di tipo Cross-Site Request Forgery" in Indurimento e sicurezza dei moduli AEM.

Eccezione referente consentita: Eccezione riferimenti consentiti è un sottoelenco dell’elenco dei riferimenti consentiti, dai quali le richieste sono bloccate. Le eccezioni Riferimenti consentiti sono specifiche per un’applicazione web. Se a un sottoinsieme dei Riferimenti consentiti non deve essere consentito richiamare una particolare applicazione web, puoi inserire nell'elenco Bloccati i referenti tramite Eccezioni di Riferimenti consentiti. Le eccezioni di riferimento consentite sono specificate nel file web.xml dell’applicazione. (Consulta "Protezione da attacchi di tipo Cross-Site Request Forgery" in Protezione e protezione per i moduli AEM nella pagina Guida e Tutorials.)

Funzionamento dei referenti consentiti

I moduli AEM forniscono un filtro dei referenti che può aiutare a prevenire gli attacchi CSRF. Ecco come funziona il filtro dei riferimenti:

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

    • Se si tratta di POST, il server Forms esegue il controllo dell'intestazione del referente.
    • Se è GET, il server Forms ignora il controllo del referente, 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. (Consulta "Protezione da attacchi di tipo Cross-Site Request Forgery" in Guida all’irrigidimento e alla sicurezza.)
  2. Il server Forms 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 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 controlla se è consentito un referente null.

    • Se è consentito un referente null, la richiesta viene passata.
    • Se un referente null non è consentito, 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 Forms vengono aggiunti all'elenco dei riferimenti consentiti. Puoi modificare questo elenco nella console di amministrazione.

  1. Nella console di amministrazione, fai clic su Impostazioni > Gestione utente > Configurazione > Configura 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, digitare ogni nome host o indirizzo IP in 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 si immette 0 (zero) nelle caselle, tutte le porte del server sono abilitate. È inoltre possibile immettere un numero di porta specifico per abilitare solo tale porta.
    • Fai clic su Aggiungi.
  3. Per rimuovere una voce dall'elenco Riferimenti consentiti, selezionare la voce dall'elenco e fare clic su Elimina.

    Se l'elenco dei riferimenti consentiti è vuoto, la funzione CSRF smette di funzionare e il sistema non è più sicuro.

  4. Dopo aver modificato l’elenco dei riferimenti consentiti, riavvia il server AEM forms.

In questa pagina