Come verificare se il tuo sistema WordPress è protetto dagli attacchi XSS

26

In tutto il mondo, quasi il 48% di tutti i siti Web è vulnerabile al cross-site scripting (XSS). In tutto il mondo, quasi esattamente il 25 percento di tutti i siti Web utilizza la piattaforma WordPress.

Ne consegue che nel diagramma di Venn dei siti Web vulnerabili a XSS e dei siti Web che eseguono la piattaforma WordPress, la sovrapposizione deve essere piuttosto ampia.

Questo non è un colpo alla piattaforma stessa. Il team di WordPress ha fatto della sicurezza una parte integrante della sua missione e corregge in modo aggressivo le vulnerabilità ogni volta che diventano note. Tuttavia, ciò non impedisce alle persone di codificare temi non sicuri o installare plug-in non sicuri. Questi problemi sono i due principali ingressi per gli attacchi XSS sui siti WordPress e questo articolo discuterà come fermarli.

Introduzione allo scripting tra siti

Innanzitutto, discutiamo di come vengono eseguiti gli attacchi XSS. Esiste più di un tipo di attacco XSS, quindi inizierò con una definizione semplificata. Generalmente, gli attacchi XSS iniziano con input non disinfettati: moduli di commento, caselle di commento, barre di ricerca e così via. Questi attacchi variano notevolmente in termini di sofisticazione. In realtà, la forma più semplice di attacco XSS viene vista ogni giorno dagli utenti di WordPress: il commento spam. Sai di cosa sto parlando: “Grazie per l’ottimo articolo. A proposito, ecco il mio sito dove guadagno 5.000 dollari a settimana lavorando da casa: www.only-an-idiot-would-click-this-link.co.uk."

In qualche modo, i commenti spam sono l’esempio perfetto di un attacco XSS. Un’entità dannosa sovverte l’infrastruttura del tuo sito (la casella dei commenti) per inserire il proprio contenuto (il collegamento dannoso) sul tuo sito. Mentre questo è un buon esempio illustrativo, un attacco XSS più realistico sarà molto più sottile. Un commento spam impiega circa cinque secondi per essere creato. Un attacco XSS è qualcosa su cui un vero hacker dedicherà un po’ più di tempo.

Un vero cappello nero proverà a trarre vantaggio da tutti gli aspetti del tuo sito che inviano dati al server, essenzialmente usandoli come un editor di testo in miniatura. Se i tuoi input non sono difesi, significa che possono letteralmente prendere il loro codice e forzare la tua applicazione a eseguirlo e a eseguire il rendering nel browser di un utente (e questo può includere il tuo browser). A differenza dei commenti spam, solo un esame dettagliato del codice modificato del tuo sito o l’analisi delle interazioni del sito web potrebbe rivelare una violazione. Come si potrebbe immaginare, non c’è fine al numero di cose sgradevoli che potrebbero derivare da una tale violazione.

Il semplice vandalismo è un risultato relativamente comune degli attacchi XSS, con il risultato che ai tuoi utenti vengono mostrate immagini grottesche o propaganda politica al posto dei tuoi contenuti. Gli esperti di marketing con pochi piani a lungo termine o preoccupazioni etiche li useranno per fare pubblicità alle persone contro la loro volontà. Un attacco più sfumato e sottile potrebbe rubare le credenziali di accesso degli utenti. Se uno di loro ha privilegi di amministratore, allora qualsiasi informazione personale che memorizzi sul tuo sito potrebbe essere in palio. In alternativa, potrebbero utilizzare l’attacco XSS iniziale come leva per forzare l’apertura del tuo sito e installare malware ancora più avanzati.

Fermare gli attacchi

Se sei un individuo ragionevolmente esperto di codice e sei l’unico proprietario di un sito WordPress relativamente piccolo, allora le pratiche di codifica sicure saranno probabilmente il modo migliore per bloccare il tuo sito dagli attacchi di scripting cross-site. Includo questo avvertimento perché se fai parte di un’organizzazione più grande che esegue un’applicazione più complessa, potrebbe non essere umanamente possibile per te trovare ogni area in cui un utente malintenzionato potrebbe iniettare codice. I siti Web moderni possono avere dimensioni enormi e potrebbe essere necessario assumere un professionista esperto e dedicare il proprio tempo ad altre attività per rendere il tuo sito Web ancora migliore per i tuoi lettori.

Un altro avvertimento è che se non sei particolarmente esperto di codice e stai chiedendo a qualcun altro di creare il tuo sito per te, non dare per scontato che abbiano utilizzato pratiche di codifica sicure. Anche gli sviluppatori più esperti sono noti per lasciare la sicurezza nel dimenticatoio o commettere errori minori senza che qualcun altro controlli il proprio lavoro. Altri sviluppatori potrebbero semplicemente non sapere cosa stanno facendo in termini di sicurezza e altri ancora sorvolano sulla sicurezza per salvare tempo per se stessi (nonostante la mancanza di professionalità quando si tratta di questo). In sintesi, assicurati di assumere un professionista acclamato che non tagli gli angoli quando si tratta di sviluppare e proteggere il tuo sito web.

Questa preoccupazione è stata espressa, una delle prime e più semplici cose che puoi fare per prevenire il cross-site scripting è convalidare i dati dell’utente.

Supponiamo che tu abbia un modulo di iscrizione sul tuo sito e quel modulo chieda all’utente di inserire il proprio nome. Un utente malintenzionato potrebbe invece digitare qualcosa del tipo:

<script>CoughUpYourPreciousData();</script>

Ciò potrebbe, ad esempio, indurre la persona successiva che visita quella pagina a inviare una copia dei propri cookie a un utente malintenzionato.

Puoi vedere che in questo esempio, la stringa di codice sopra non assomiglia per niente al nome di qualcuno. Il tuo server non lo sa, ma usando alcuni parametri impostati, puoi insegnarlo. Ad esempio, puoi dire a quel campo di rifiutare i caratteri speciali, come <>,() e ; (non sono particolarmente necessari in una sezione commenti). Puoi dire a quel campo che il nome di una persona probabilmente non contiene numeri. Se sei disposto a essere un po’ draconiano, puoi dire a quel campo di rifiutare gli input che sono lunghi più di quindici caratteri (oppure puoi cambiare i valori come preferisci). Prendere questi passaggi limiterà drasticamente la quantità di danno che un attaccante può fare con un particolare campo.

Anche con la convalida dei dati, potrebbero esserci moduli o campi in cui non è possibile limitare realisticamente il tipo di caratteri utilizzati, ad esempio in un modulo di contatto o in un campo di commento. Quello che puoi fare è disinfettare i dati. Questo processo rende impossibile l’esecuzione dell’HTML in un dato campo, convertendo tutto ciò che potrebbe essere riconoscibile come parte di codice eseguibile in caratteri non codificanti. Ad esempio, un collegamento ipertestuale non verrà visualizzato dove altrimenti potrebbe essercene uno.

Infine, ci sono casi in cui il tuo sito potrebbe finire per visualizzare dati non sicuri per gli utenti. Supponiamo che qualcuno scriva un commento dannoso su una delle tue pagine, che viene successivamente indicizzata dalla funzione di ricerca del tuo sito web. Ogni volta che uno dei tuoi utenti esegue una ricerca, quel codice dannoso viene eseguito quando il suo browser carica i risultati della ricerca. Ciò è impedito dall’escape dei dati, che garantisce che quando il tuo sito fornisce dati a un utente, l’unico codice che viene eseguito è il codice che desideri eseguire.

Per ulteriori informazioni sulla convalida dei dati, sulla sanificazione dei dati e sull’evasione dei dati, il Codex di WordPress ha una risorsa eccellente. Spiegherà in dettaglio i concetti di cui sopra e fornirà altri esempi che possono essere applicati universalmente.

Altri metodi

Le grandi aziende hanno siti web più grandi; è un fatto. Forse migliaia di persone usano il tuo sito al giorno. Magari al posto di form e campi standard ci sono anche animazioni, vari portali, parti scritte in Java, e così via. Anche se tieni traccia di tutto ciò, forse c’è un giorno zero in una delle tue domande e non hai modo di difenderti.

In una situazione come questa, se hai l’influenza e il budget per farlo, ti consiglio di investire in un Web Application Firewall (WAF). Un buon WAF avrà regole di correlazione che identificano e bloccano automaticamente le stringhe HTML che sono più comunemente associate agli attacchi di code injection. Possono anche avvisarti quando le applicazioni iniziano a estrarre dati quando non dovrebbero o lo stanno facendo in un volume insolito, aiutando così a difenderti dagli attacchi zero-day e da altre minacce avanzate. Un WAF non è un proiettile d’argento, ma è uno strumento prezioso per i professionisti della sicurezza e i proprietari di siti Web che sperano di proteggere applicazioni complesse.

Esistono anche numerosi plug-in che pretendono di difendersi dagli attacchi XSS. In realtà non li consiglio. Piuttosto che ridurre il rischio, molti di questi plug-in rappresentano solo un’altra superficie di attacco che un hacker può sfruttare. Anche uno dei plugin di sicurezza più noti e ampiamente utilizzati, Akismet, è risultato essere vulnerabile agli attacchi XSS lo scorso anno. Quando si tratta di deviare gli attacchi XSS, non fare affidamento sulle mezze misure. Sviluppa le competenze necessarie e utilizza il set di strumenti appropriato per proteggere il tuo sito web.

Altre applicazioni pratiche

Queste informazioni possono essere un po’ complesse per chi non lo sapesse, ma non vorrei che le persone si lasciassero scoraggiare dalle potenziali complessità di queste informazioni. Se si verifica un attacco XSS, puoi essere certo che ripulire le conseguenze di un tale evento sarà molto più complesso che apportare modifiche al tuo sito web. Ripulire i costi reputazionali del tuo sito Web (i lettori abituali abbandoneranno il tuo sito Web abbastanza facilmente) sarà un problema aggiuntivo di cui non devi preoccuparti.

Anche se stai chiedendo a qualcun altro di gestire lo sviluppo e la sicurezza del tuo sito Web per te, fai il possibile per essere almeno in grado di rispondere a un’emergenza e sapere dove sono i tuoi punti deboli. Sapere come controllare il tuo sistema sarà un’abilità vitale a lungo termine e sarà la base per altri argomenti di sicurezza e progetti di sviluppo di siti web. Tutto è interconnesso online e mentre gli attacchi XSS potrebbero essere una cosa degli ultimi anni (per quanto improbabile sia), sapere che i dettagli del tuo sito Web non saranno mai obsoleti.

Pensieri finali

Il panorama della sicurezza in Internet cambia costantemente. Non puoi mai essere del tutto certo di come potrebbe apparire un attacco XSS o di come potrebbe essere utilizzato contro di te, ma lo devi a te stesso e ai tuoi lettori per assicurarti di fare tutto ciò che è in tuo potere per fermarli. Continua a informarti su questa minaccia e controlla regolarmente (raccomanderei almeno una volta al mese) eventuali sviluppi rilevanti nel mondo della sicurezza informatica.

Anche questo non significa che puoi ignorare altre minacce. L’accesso alla rete pubblica richiede ancora l’uso della VPN per essere sicuro. Non puoi trascurare la sicurezza di qualsiasi computer che utilizzi per accedere al tuo sito web. Le informazioni di accesso devono ancora essere modificate spesso ed essere al sicuro da attacchi di forza bruta. Gli attacchi XSS sono brutali, ma non sono l’unica minaccia a cui prestare attenzione.

Potrebbe anche essere necessario che tu condivida queste informazioni (o anche questo articolo) con i tuoi colleghi e le parti interessate al fine di diffondere la resistenza contro questo tipo di attacchi. Anche se potresti non essere in grado di fare molto da solo, se un numero sufficiente di persone si protegge adeguatamente, potremmo assistere a una diminuzione generale di questi tipi di attacchi mentre gli hacker cercano di trovare un modo diverso di trarre profitto dagli utenti poveri di Internet.

Hai qualche idea su come verificare la presenza di attacchi XSS e difenderti da essi in futuro? Esistono altre strategie di rilevamento e rimozione che utilizzi per combattere questa minaccia? Ci sono strumenti che consiglieresti ai tuoi colleghi lettori? In tal caso, lascia un commento qui sotto e continua questa importante conversazione con i tuoi colleghi lettori.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More