FixVibe
Covered by FixVibehigh

Rilevamento e prevenzione delle vulnerabilità di cross-site scripting (XSS)

Cross-Site Scripting (XSS) si verifica quando un'applicazione include dati non attendibili in una pagina Web senza un'adeguata convalida o codifica. Ciò consente agli aggressori di eseguire script dannosi nel browser della vittima, portando al dirottamento della sessione, azioni non autorizzate ed esposizione di dati sensibili.

CWE-79

Impatto

Un utente malintenzionato che sfrutta con successo una vulnerabilità Cross-Site Scripting (XSS) può mascherarsi da utente vittima, eseguire qualsiasi azione che l'utente è autorizzato a eseguire e accedere a qualsiasi dato dell'utente [S1]. Ciò include il furto di cookie di sessione per dirottare account, l'acquisizione di credenziali di accesso tramite moduli falsi o l'esecuzione di defacement virtuale [S1][S2]. Se la vittima dispone di privilegi amministrativi, l'aggressore può ottenere il pieno controllo dell'applicazione e dei suoi dati [S1].

Causa principale

XSS si verifica quando un'applicazione riceve input controllabile dall'utente e lo include in una pagina Web senza un'adeguata neutralizzazione o codifica [S2]. Ciò consente all'input di essere interpretato come contenuto attivo (JavaScript) dal browser della vittima, aggirando la Same Origin Policy progettata per isolare i siti Web gli uni dagli altri [S1][S2].

Tipi di vulnerabilità

  • Riflesso XSS: Gli script dannosi vengono riflessi da un'applicazione Web al browser della vittima, in genere tramite un parametro URL [S1].
  • Memorizzato XSS: Lo script viene memorizzato in modo permanente sul server (ad esempio, in un database o in una sezione commenti) e servito agli utenti successivamente [S1][S2].
  • XSS basato su DOM: la vulnerabilità esiste interamente nel codice lato client che elabora i dati provenienti da un'origine non attendibile in modo non sicuro, ad esempio scrivendo su innerHTML [S1].

Correzioni concrete

  • Codifica i dati sull'output: Converti i dati controllabili dall'utente in un formato sicuro prima di renderli. Utilizza la codifica dell'entità HTML per il corpo HTML e la codifica JavaScript o CSS appropriata per quei contesti specifici [S1][S2].
  • Filtra input all'arrivo: Implementa liste consentite rigorose per i formati di input previsti e rifiuta tutto ciò che non è conforme a [S1][S2].
  • Utilizza intestazioni di sicurezza: Imposta il flag HttpOnly sui cookie di sessione per impedire l'accesso tramite JavaScript [S2]. Utilizza Content-Type e X-Content-Type-Options: nosniff per garantire che i browser non interpretino erroneamente le risposte come codice eseguibile [S1].
  • Politica di sicurezza dei contenuti (CSP): Implementa un potente CSP per limitare le origini da cui è possibile caricare ed eseguire gli script, fornendo un livello di difesa approfondito [S1][S2].

Come lo esegue il test FixVibe

FixVibe è in grado di rilevare XSS attraverso un approccio a più livelli basato su metodologie di scansione consolidate [S1]:

  • Scansioni passive: identificazione di intestazioni di sicurezza mancanti o deboli come Content-Security-Policy o X-Content-Type-Options progettate per mitigare XSS [S1].
  • Sonde attive: Inserimento di stringhe alfanumeriche univoche e non dannose nei parametri URL e nei campi del modulo per determinare se si riflettono nel corpo della risposta senza la codifica corretta [S1].
  • Scansioni repository: analisi di JavaScript lato client per "sink" che gestiscono dati non attendibili in modo non sicuro, come innerHTML, document.write o setTimeout, che sono indicatori comuni di XSS basato su DOM [S1].