Come Chrome DevTools aiuta a difendersi dagli attacchi self-XSS

Wolfgang Beyer
Wolfgang Beyer

Cosa sono gli attacchi self-XSS?

Self-XSS, o self cross-site scripting, è un tipo di attacco di ingegneria sociale che inducono con l'inganno a eseguire codice dannoso nel browser web. A differenza dei normali attacchi XSS, che si basano sulle vulnerabilità delle applicazioni web che consentono ai malintenzionati di inserire codice dannoso, gli attacchi self-XSS si basano sulle tue potenziali azioni di esecuzione del codice.

Gli attacchi self-XSS in genere implicano l'inganno dell'utente malintenzionato a copiare e incollare codice dannoso nella console DevTools del browser. L’aggressore di solito raggiunge questo obiettivo promettendo una sorta di ricompensa. Può trattarsi di:

  • Promesse che il codice ti consentirà di accedere a funzionalità nascoste o a premi virtuali.
  • Fingere che il codice sia un test di sicurezza o una correzione di bug.
  • Promettere che il codice consente la compromissione di un sito web a tuo vantaggio.

Una volta eseguito il codice, il malintenzionato può ottenere il controllo del tuo account. Questo può consentire all’aggressore di:

  • Furto di informazioni personali, come nome, indirizzo e numero della carta di credito.
  • Pubblicare messaggi o commenti non autorizzati per tuo conto.
  • Assumi il controllo dei tuoi account di social media.
  • Diffondere il malware ad altri utenti.

In che modo Chrome DevTools cerca di mitigare gli attacchi self-XSS?

Consentire agli utenti di incollare il codice in DevTools ed eseguirlo è intrinsecamente rischioso. Ma è anche una delle funzionalità principali di Chrome DevTools. Dovevamo quindi trovare un equilibrio tra mitigare i potenziali attacchi self-XSS e non interferire con il lavoro di sviluppatori che volevano semplicemente eseguire il debug dei siti web.

Di solito gli sviluppatori non copiano il codice trovato sul web, lo incollano in DevTools ed lo eseguono, senza prima dare una rapida occhiata a ciò che fa. La maggior parte degli sviluppatori è molto consapevole dei rischi per la sicurezza associati all'esecuzione di codice che ha trovato in una parte approssimativa del web.

Chrome DevTools si affida agli sviluppatori per sapere cosa fanno. Non vogliamo rallentarli o distrarli in alcun modo quando copiano e incollano il codice.

Riteniamo che i non sviluppatori corrono un rischio molto maggiore di cadere vittima di un attacco self-XSS. Per tutelare gli utenti, riteniamo che sia accettabile e vantaggioso interrompere l'utilizzo dei servizi quando si sta facendo qualcosa di potenzialmente pericoloso. Quando Chrome DevTools rileva che un utente con poca esperienza sta cercando di incollare il codice in DevTools, si interrompe e mostra un avviso.

Quando DevTools mostrerà gli avvisi XSS automatici?

DevTools utilizza un'euristica molto semplice per decidere se mostrare gli avvisi self-XSS: si basa sulla cronologia della console del tuo profilo utente.

Se la cronologia della console del tuo profilo contiene almeno 5 voci, DevTools non ti infastidirà con avvisi o popup. La cronologia della console è l'elenco dei comandi che hai digitato ed eseguito nella console. Questi sono i comandi che vedi quando posizioni il cursore nella console e premi ripetutamente il tasto Freccia su.

Che aspetto hanno gli avvisi di auto-XSS?

Quando un utente con poca esperienza prova a incollare il codice nella console, questa azione viene bloccata e nella console viene mostrato un avviso.

L'avviso self-XSS nella console.

Puoi ignorare questo avviso e attivare l'opzione Incolla, ma per farlo devi digitare "consenti di incollare".

Quando un utente non esperto incolla il codice nell'editor di codice DevTools (ad esempio nel riquadro Origini), l'esperienza utente è molto simile. Invece di un avviso, verrà visualizzata una finestra di dialogo modale.

La finestra di dialogo modale self-XSS nel riquadro Origini.

Anche in questo caso, la semplice chiusura di questa finestra di dialogo non è sufficiente per consentire di incollare. Per ignorare l'avviso, devi digitare "consenti di incollare" nel campo di immissione.

L'impostazione deve essere effettuata una sola volta?

Sì, una volta che decidi di consentire di incollare, non sarai più disturbato dagli avvisi XSS automatici.

Speriamo che questo sia un buon compromesso tra utilità e fastidio. Aumentando la difficoltà di lettura, aumentiamo le probabilità che tu legga l'avviso e, di conseguenza, riduciamo le probabilità che un attacco self-XSS vada a buon fine.

Chrome DevTools mantiene un flag che specifica se mostrare o meno gli avvisi self-XSS nel tuo profilo Chrome. Di conseguenza, se crei un nuovo profilo e inizi immediatamente a incollare il codice in DevTools, l'operazione viene bloccata e al loro posto vengono mostrati avvisi XSS autonomo.

È possibile disabilitarla per l'automazione dei test?

E per quanto riguarda i test automatici? Molti strumenti di test creano un nuovo profilo temporaneo per ogni esecuzione di test. Pertanto, se utilizzi DevTools per eseguire il debug dei test automatici, incollare nella console è inizialmente bloccato.

Per aggirare questo problema, procedi in uno dei seguenti modi:

  • Utilizza Chrome for Testing, una gamma di Chrome progettata appositamente per i test e l'automazione. Gli avvisi di Self-XSS sono disattivati.

  • Per altri canali di rilascio di Chrome, passa il flag della riga di comando --unsafely-disable-devtools-self-xss-warnings a Chrome per disattivare completamente la finestra di dialogo di avviso self-xss.

Conclusione

Cosa pensi di questa strategia per mitigare gli attacchi self-XSS? Se hai commenti o suggerimenti, aggiungi un commento a questo bug o contattaci utilizzando uno dei seguenti metodi.

Soprattutto se lavori su un sito web che avvisa della presenza di attacchi self-XSS tramite i log della console, ci piacerebbe parlare di come allineare i nostri sforzi o misurare l'impatto delle misure di mitigazione auto-XSS.

Scaricare i canali in anteprima

Prendi in considerazione l'utilizzo di Chrome Canary, Dev o Beta come browser di sviluppo predefinito. Questi canali di anteprima ti consentono di accedere alle ultime funzionalità di DevTools, di testare le API delle piattaforme web all'avanguardia e di individuare i problemi sul tuo sito prima che lo facciano gli utenti.

Contattare il team di Chrome DevTools

Utilizza le seguenti opzioni per discutere delle nuove funzionalità e modifiche nel post o di qualsiasi altra informazione relativa a DevTools.

  • Inviaci un suggerimento o un feedback tramite crbug.com.
  • Segnala un problema di DevTools usando Altre opzioni   Altre   > Guida > Segnala un problema di DevTools in DevTools.
  • Invia un tweet all'indirizzo @ChromeDevTools.
  • Lascia commenti sulle novità nei video di YouTube di DevTools o nei video di YouTube dei suggerimenti di DevTools.