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.
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 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:
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.
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.
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.
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).
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:
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.