Come Chrome DevTools aiuta a difendersi dagli attacchi self-XSS

Wolfgang Beyer
Wolfgang Beyer

Che cosa sono gli attacchi self-XSS?

Il self-XSS, o self cross-site scripting, è un tipo di attacco di ingegneria sociale che ti induce con l'inganno a eseguire codice dannoso nel browser web. A differenza dei normali attacchi XSS, che si basano su vulnerabilità nelle applicazioni web che consentono agli utenti malintenzionati di iniettare codice dannoso, gli attacchi self-XSS si basano sulle tue potenziali azioni di esecuzione di codice.

In genere, gli attacchi di XSS autoreferenziali coinvolgono l'inganno da parte dell'aggressore che ti induce a copiare e incollare codice dannoso nella console di DevTools del browser. In genere l'aggressore ottiene questo risultato promettendo una sorta di ricompensa. ad esempio:

  • Ti promettono che il codice ti darà accesso a funzionalità nascoste o premi virtuali.
  • Far finta che il codice sia un test di sicurezza o una correzione di bug.
  • Promettono che il codice consente di eseguire l'hacking di un sito web a tuo vantaggio.

Una volta eseguito il codice, l'utente malintenzionato può ottenere il controllo del tuo account. In questo modo, l'utente malintenzionato può:

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

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

Consentire agli utenti di incollare codice in DevTools ed eseguirlo è intrinsecamente rischioso. ma è anche una delle funzionalità di base di Chrome DevTools. Di conseguenza, abbiamo dovuto trovare un equilibrio tra la mitigazione di potenziali attacchi di self-XSS e il non interferire con il lavoro degli sviluppatori che vogliono solo eseguire il debug dei siti web.

In genere, gli sviluppatori non copiano il codice che trovano sul web, lo incollano in DevTools ed eseguono l'esecuzione senza prima dare un'occhiata veloce a cosa fa il codice. La maggior parte degli sviluppatori è molto consapevole dei rischi per la sicurezza legati all'esecuzione di codice trovato in un angolo poco attendibile del web.

Chrome DevTools si fida degli sviluppatori e presume che sappiano cosa stanno facendo. Non vogliamo rallentarli o distrarli in alcun modo quando copiano e incollano il codice.

Riteniamo che i non sviluppatori siano a rischio molto più elevato di subire un attacco di self-XSS. Per proteggerti, riteniamo accettabile e utile interromperti quando stai facendo qualcosa di potenzialmente pericoloso. Quando Chrome DevTools rileva che un utente inesperto sta tentando di incollare del codice in DevTools, si arresta e mostra un avviso.

Quando DevTools mostra gli avvisi di auto-XSS?

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

Se il tuo profilo contiene almeno 5 voci nella cronologia della console, DevTools non ti infastidirà con avvisi o popup. La cronologia della console è l'elenco dei comandi che hai digitato ed eseguito nella console. Si tratta dei comandi visualizzati quando inserisci il cursore nella console e premi ripetutamente il tasto Freccia Su.

Che aspetto hanno gli avvisi di XSS autoindotti?

Quando un utente inesperto tenta di incollare del codice nella Console, questa azione viene bloccata e la Console mostra un avviso.

L'avviso di XSS autoreferenziale nella console.

Puoi ignorare questo avviso e attivare l'incollaggio, ma devi digitare "consenti incollaggio".

Quando un utente inesperto incolla del codice nell'editor di codice di DevTools (ad esempio il riquadro Origini), l'esperienza utente è molto simile. Invece di un avviso, viene visualizzata una finestra di dialogo modale.

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

Anche in questo caso, la chiusura della finestra di dialogo non è sufficiente per attivare il copia e incolla. Per ignorare l'avviso, devi digitare "consenti incolla" nel campo di immissione.

Si tratta di un'impostazione una tantum?

Sì, una volta che avrai deciso di consentire il copia e incolla, non riceverai più avvisi di XSS autonomo.

Ci auguriamo che questo approccio offra un buon compromesso tra utilità e fastidio. Aggiungendo attrito, aumentiamo la probabilità che tu legga l'avviso e di conseguenza diminuiamo la probabilità di un attacco di self-XSS riuscito.

Strumenti per sviluppatori di Chrome mantiene un flag che specifica se mostrare o meno gli avvisi di XSS autoreferenziali nel tuo profilo Chrome. Pertanto, se crei un nuovo profilo e inizi immediatamente a incollare il codice in DevTools, l'operazione viene bloccata e vengono visualizzati avvisi di self-XSS.

Puoi disattivarlo per l'automazione dei test?

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

Per ovviare a questo problema, esegui una delle seguenti operazioni:

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

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

Conclusione

Che ne 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 stai lavorando a un sito web che avvisa degli attacchi self-XSS tramite i log della console, saremo lieti di discutere di come allineare le nostre iniziative o misurare l'impatto delle misure di mitigazione degli attacchi self-XSS.

Scaricare i canali di anteprima

Valuta la possibilità di utilizzare Chrome Canary, Dev o Beta come browser di sviluppo predefinito. Questi canali di anteprima ti consentono di accedere alle funzionalità più recenti di DevTools, di testare API di piattaforme web all'avanguardia e di trovare i problemi sul tuo sito prima che lo facciano gli utenti.

Contatta il team di Chrome DevTools

Utilizza le seguenti opzioni per discutere di nuove funzionalità, aggiornamenti o qualsiasi altro argomento relativo a DevTools.