Skip to content
xss cross-site-scripting

XSS: cos'è il cross-site scripting e perché dovresti temerlo

Affrontando il cross-site scripting si contrasta una minaccia che fa leva su due fattori: la fiducia degli utenti e la superficialità di alcune configurazioni delle macchine.

Il cross-site scripting (XSS) è un attacco ai siti web dinamici che prevede l’immissione di codice malevolo nel form (cioè nell’interfaccia utente di un’applicazione) per compromettere, raccogliere oppure reindirizzare informazioni più o meno riservate (dai cookie ai token di sessione) in modo trasparente rispetto agli utenti. 

Questi ultimi sono infatti completamente ignari che si stia verificando un problema di questo tipo. Eseguendo script dannosi nel browser della vittima, gli attaccanti possono arrivare a prendere il controllo dell’account dell’utente per eseguire azioni non autorizzate. 

Questa minaccia è particolarmente pericolosa perché avviene lato client, tende quindi a superare misure di sicurezza server side, quali firewall e sistemi di rilevamento delle intrusioni. Inoltre, il diffondersi di framework e librerie JavaScript sta ampliando le superfici di attacco rendendo più vulnerabili i siti web. 

Vi sono varie tipologie di cross scripting attack tra cui Stored XSS, Reflected XSS e DOM-based XSS, ciascuna con meccanismi e impatti differenti. 

 

Cosa significa cross-site scripting (XSS)?

Cross-Site Scripting è comunemente abbreviato come XSS. La sigla è un’alterazione di quanto ci si poteva aspettare, ovvero CSS. È stata scelta la X perché l’acronimo CSS è ampiamente diffuso con un significato completamente differente. 

Con un attacco XSS si intende, in sintesi, la manipolazione delle funzionalità di un sito Web. Il cross-site scripting sfrutta due punti deboli, da un lato il visitatore web che solitamente ha fiducia nei siti che crede di conoscere e, da un punto di vista tecnico, il fatto che spesso siti web dinamici non impiegano un sufficiente controllo di quanto scritto dagli utenti. 

Dunque, perché quest’attacco si chiama cross site scripting?  

In brave perché è basato su script eseguiti in contesti diversi da quelli originali, inoltre, questa denominazione sottolinea la capacità degli attaccanti di oltrepassare i confini di sicurezza tra i diversi siti (script across sites).

 

Come funziona un attacco cross-site scripting (XSS)?

Come brevemente accennato, un XSS sfrutta la fragilità di un’applicazione Web che non valida correttamente l’input nel form da parte dell’utente. L’attaccante cyber può quindi inserire script pericolosi nei contenuti dinamici delle pagine web.  

Se si visita una pagina modificata il browser esegue lo script nocivo come se appartenesse al sito legittimo. 

Nello specifico l’attacco funziona come segue: 

  • Identificazione della vulnerabilità, cioè di un punto del sito dove è possibile inserire input che non vengono verificati (solitamente form, commenti eccetera); 
  • Iniezione dello script nelle pagine HTML e più precisamente nel campo vulnerabile (script che può avere vari scopi: dal furto di dati, all’avvio di sessioni di hijacking, che si verificano quando malintenzionati prendono il controllo della sessione); 
  • Esecuzione dello script a seguito dell’azione del visitatore. 

 

Tipologie di attacchi XSS: reflected, stored e DOM-based

Gli attacchi XSS possono essere ricondotti a 3 principali varianti: reflected, stored e DOM-based. Queste tipologie di minacce informatiche hanno meccanismi distinti tra loro e differenti scenari in cui le minacce si verificano. 

  • Reflected XSS (non persistent) In questo caso gli script degli attaccanti sono incorporati nella richiesta HTTP e “riflessi” appunto, nel contenuto della risposta dal server. Ciò accade quando i dati immessi dall’utente sono utilizzati nella risposta senza essere sanitizzati. Sono tipicamente usati campi di ricerca, moduli di contatto e così via, qui sono immessi link che inducono le vittime al clic. 
  • Stored XSS (persistent). Accade quanto gli script dei cyber attaccanti sono immagazzinati nel server (per esempio in un database) e vengono eseguiti quando l’utente vi accede, ogni volta che la pagina viene caricata. Questo può capitare nei sistemi di gestione dei contenuti, nelle piattaforme dei social media e, in generale, in quei siti dove è possibile salvare i propri dati: dai profili utenti ai commenti. 
  • DOM-based XSS. È un attacco che si verifica solo lato client, intervenendo sul Document Object Model (DOM, rappresentazione a oggetti dei documenti) della pagina web per far partire il codice indesiderato. Nel DOM-based XSS non sono coinvolti i server, ma sono protagonisti i soli utenti web. Gli scenari di utilizzo in tale ambito sono rappresentati dalle applicazioni che usano JavaScript per manipolare DOM in base agli input dell’utente senza fare le opportune verifiche. 

 

Un esempio di attacco XSS

Per comprendere ancora meglio la portata e l’impatto di cross scripting attack è interessante soffermarsi sulla spiegazione di come funziona un attacco di tipo reflected su una forma non validata per capire esattamente cosa accade e quali sono le conseguenze lato utente e lato infrastruttura. 

  • Preparazione dell’attacco. Il cyber attaccante individua un form di ricerca che riflette l’input del navigatore nei risultati senza validazione. 
  • Creazione di un URL malevolo, con lo script JavaScript pericoloso. 
  • Coinvolgimento della vittima mediante l’invio di email, messaggi social eccetera per indurla a cliccare. 
  • Esecuzione dello script nella risposta http. Il server riflette, infatti, l’input in quanto gli è stata inviata la richiesta da parte del browser. 

A questo punto, le conseguenze per l’utente sono visualizzazione di contenuti ingannevoli, il reindirizzamento ad altri siti (quali quelli di phishing), oppure il furto di dati. Anche il server viene però compromesso, un attacco XSS di questa tipologia può danneggiare la reputazione del sito. 


Attacchi XSS vs attacchi CSRF

Gli attacchi XSS sono molto comunemente confusi con i CSRF (Cross-Site Request Forgery). Essi però sono diversi tra loro e soprattutto cambiano gli obiettivi per cui vengono sferrati dai cyber criminali. 

Come abbiamo visto, gli attacchi XSS si fondano sulle vulnerabilità delle applicazioni Web e sono finalizzati a compromettere informazioni o a compiere azioni a nome dell’utente che però ne è del tutto all’oscuro. 

Gli attacchi CSRF portano, invece, un utente autenticato in un’applicazione a realizzare azioni non desiderate. L’attaccante, cioè, crea una richiesta HTTP dannosa sfruttando le credenziali dell’utente per esempio per trasferire denaro, cambiare password eccetera ma senza il suo consenso.  

Il sito, infatti, si fida delle credenziali effettivamente messe dall’utente, ma non verifica l’autenticità della richiesta specifica. 

Le misure di difesa da attacchi XSS riguardano la validazione degli input e prevedere l’uso di Content Security Policy (CSP) per limitare le fonti di script eseguibili e l’uso di librerie di templating sicure, oltre all’escaping dei dati prima di renderizzarli nel browser. 

Per quanto concerne il Cross-Site Request Forgery è utile servirsi di token CSRF unici e imprevedibili da associare a ogni richiesta sensibile e implementare verifiche dell’origine delle richieste tramite header, controlli sui referrer HTTP e meccanismi di autenticazione a due fattori (2FA). 


Come proteggersi dagli attacchi XSS cross scripting

Esistono vari metodi per diminuire il rischio di iniezione di codice ai fini di sottrarre dati o dare nelle mani del cybercrime i propri dispositivi. Le principali tecniche da utilizzare sono: 

  • escaping dell’output, da applicare a tutti i dati visualizzabili nelle pagine Web, è una procedura che consiste nel trasformare i caratteri speciali in entità HTML prima di indirizzarli nel browser, perché non siano interpretati come codice; 
  • validazione dell’input perché siano veicolati solo caratteri che rispettino un determinato formato e siano rimossi quelli non validi. Le regole di validazione (quali l’uso di white list) devono essere applicate sia su client che su server e per tutti i campi di input; 
  • content security policy, si tratta di direttive di sicurezza che stabiliscono politiche restrittive nell’eseguire gli script, per esempio ponendo limiti alle origini da cui gli script stessi sono caricati; 
  • utilizzo di framework e librerie sicure (consolidate da community o enti affidabili) e, nella fattispecie, quelle che gestiscono in automatico escaping e sanitizzazione; 
  • disabilitazione dell’esecuzione di script all’interno del codice HTML (spostando tutti gli script in file separati); 
  • configurazione dei cookie per impedire l’accesso mediante JavaScript (HTTPOnly) e garantirne la trasmissione solamente su connessioni HTTPS (Secure). 

 

Proteggiti dagli attacchi XSS con DigitelNET

I cross scripting attack spiccano nel panorama delle minacce alla cybersecurity per la loro capacità di camuffarsi agli occhi degli utenti, ovviamente non sono gli unici e non sono a sé stanti. Possono, infatti come abbiamo visto, fornire dati preziosi per poi perpetrare altre tipologie di attacco. 

Un partner tecnologico esperto in sicurezza informatica aziendale come DigitelNET è in grado di fornire un portafoglio di soluzioni complete per mitigare qualsiasi possibile rischio.

 

Come migliorare la tua cybersecurity strategy?

Scarica ora la checklist e scopri 10 semplici strategie per migliorare la strategia di cybersicurezza della tua organizzazione.

#cybersecurity

Leggi i nostri ultimi articoli

rootkit

Rootkit: cos'è e quali danni causa

La conoscenza e la consapevolezza rappresentano dunque il primo passo per l’adozione di misure di sicurezza necessarie per ...
information security

Information security: soluzioni per proteggersi sul web

La partecipazione all’economia digitale a cui imprese di qualunque settore e dimensione devono partecipare per poter prosperare, ...
attacco informatico ransomware

Ransomware: cosa succede al pc e come proteggersi dagli attacchi

Un ransomware è un tipo di malware che, una volta infiltrato in un sistema informatico, cripta i file e i dati, rendendoli ...
spoofing

Cos'è lo spoofing e cosa fare in caso di attacco

Lo spoofing è una tipologia di cyber attack subdolo, studiato per ingannare i destinatari di comunicazioni digitali e manipolarli ...
Minacce informatiche

Minacce informatiche: quali sono e quali misure di sicurezza adottare

Gli incidenti di ransomware sono aumentati nella prima metà del 2023 e non hanno mostrato segni di rallentamento, mentre anche ...
Attacchi DDOS

Cosa sono gli attacchi DDoS, come funzionano e come proteggersi

Comprendere cos'è un attacco DDoS è fondamentale per adottare le giuste contromisure. A differenza di altre minacce informatiche ...