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

Pubblicato: 2016-07-09

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% 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 reso la sicurezza una parte integrante della sua missione e corregge in modo aggressivo le vulnerabilità ogni volta che vengono rese note. Tuttavia, ciò non impedisce alle persone di codificare temi non sicuri o di installare plug-in non sicuri. Questi problemi sono i due ingressi principali 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. In genere, gli attacchi XSS iniziano con input non disinfettati: moduli di commento, caselle di commento, barre di ricerca, ecc. Sai di cosa parlo: “ Grazie per l'ottimo articolo. A proposito, ecco il mio sito dove guadagno $ 5.000 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 posizionare il suo contenuto (il collegamento dannoso) sul tuo sito. Anche se questo è un buon esempio illustrativo, un attacco XSS più realistico sarà molto più sottile. Un commento spam richiede circa cinque secondi per essere creato. Un attacco XSS è qualcosa su cui un vero hacker trascorrerà un po' più di tempo.

spam as visitor comments

Un vero cappello nero cercherà di sfruttare tutti gli aspetti del tuo sito che inviano dati al server, utilizzandoli essenzialmente 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 renderizzare 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 un'analisi delle interazioni del sito Web potrebbe rivelare una violazione. Come si può 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 utilizzeranno per fare pubblicità alle persone contro la loro volontà. Un attacco più sfumato e sottile potrebbe rubare le credenziali di accesso dei tuoi utenti. Se uno di loro ha privilegi di amministratore, tutte le informazioni personali che memorizzi sul tuo sito potrebbero essere in palio. In alternativa, potrebbero utilizzare l'attacco XSS iniziale come leva per aprire il 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, le pratiche di codifica sicura saranno probabilmente il modo migliore per bloccare il tuo sito contro attacchi di scripting tra siti. Includo questo avvertimento perché se fai parte di un'organizzazione più grande che esegue un'applicazione più complessa, potrebbe non essere umanamente possibile trovare tutte le aree in cui un utente malintenzionato potrebbe iniettare codice. I siti Web moderni possono essere di dimensioni enormi e potrebbe essere opportuno che tu assuma un professionista esperto e trascorri il tuo tempo in 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. È risaputo che anche gli sviluppatori più esperti lasciano la sicurezza nel dimenticatoio o commettono piccoli errori senza che qualcun altro controlli il loro lavoro. Altri sviluppatori potrebbero semplicemente non sapere cosa stanno facendo in termini di sicurezza e altri continuano a ignorare la 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 espressa, una delle prime e più semplici cose che puoi fare per prevenire lo scripting tra siti è la convalida dei dati degli utenti.

Supponiamo che tu abbia un modulo di registrazione sul tuo sito e quel modulo chiede all'utente di inserire il proprio nome. Un utente malintenzionato potrebbe invece digitare qualcosa come:

[xhtml]
<script>CoughUpYourPreciousData();</script>
[/xhtml]

Ciò potrebbe, ad esempio, far sì che la persona successiva che visita quella pagina invii 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' draconico, puoi dire a quel campo di rifiutare gli input che contengono più di quindici caratteri (oppure puoi cambiare i valori come preferisci). L'esecuzione di questi passaggi limiterà drasticamente la quantità di danni che un attaccante può fare con un determinato campo.

Stopping Attacks

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 di HTML in un determinato campo, convertendo tutto ciò che potrebbe essere riconoscibile come un pezzo di codice eseguibile in caratteri non codificanti. Ad esempio, un collegamento ipertestuale non apparirà dove altrimenti potrebbe essercene uno.

Infine, ci sono casi in cui il tuo sito potrebbe finire per visualizzare dati non sicuri per gli utenti. Diciamo che qualcuno scrive 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ò viene 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, la sanificazione e l'evasione dei dati, il codice di WordPress ha una risorsa eccellente. Spiegherà in dettaglio i concetti di cui sopra e fornirà più 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 ogni giorno. Forse invece di moduli 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 applicazioni 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 più comunemente associate agli attacchi di code injection. Possono anche avvisarti quando le applicazioni iniziano a esfiltrare i dati quando non dovrebbero o lo stanno facendo in un volume insolito, aiutando così a difendersi 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.

Ci sono anche una serie di plugin che pretendono di difendersi dagli attacchi XSS. In realtà non li consiglio. Piuttosto che ridurre il rischio, molti di questi plugin rappresentano solo un'altra superficie di attacco da sfruttare per un hacker. Anche uno dei plugin di sicurezza più conosciuti e ampiamente utilizzati, Akismet, è risultato 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 usa il set appropriato di strumenti per mantenere il tuo sito web sicuro.

Altre applicazioni pratiche

Queste informazioni possono essere un po' complesse per chi non lo sapesse, ma mi dispiacerebbe che le persone si scoraggiassero dalle potenziali complessità di queste informazioni. Se si verifica un attacco XSS, puoi essere certo che ripulire con le conseguenze di un tale evento sarà molto più complesso che apportare le modifiche al tuo sito web. Ripulire i costi di reputazione del tuo sito Web (i lettori abituali lasceranno il tuo sito Web abbastanza facilmente) sarà un problema aggiuntivo di cui non ti devi preoccupare.

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), conoscere i dettagli del tuo sito Web non sarà mai obsoleto.

Pensieri finali

Il panorama della sicurezza di 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 devi a te stesso e ai tuoi lettori assicurarti di fare tutto ciò che è in tuo potere per fermarli. Continua a informarti su questa minaccia e controlla regolarmente (raccomanderei almeno mensilmente) per 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 dagli attacchi di forza bruta. Gli attacchi XSS sono brutali, ma non sono l'unica minaccia a cui prestare attenzione.

Potrebbe anche essere opportuno 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 sta proteggendo adeguatamente, potremmo assistere a una diminuzione generale di questi tipi di attacchi mentre gli hacker cercano di capire un modo diverso di trarre profitto dai poveri utenti di Internet.

Hai qualche idea su come verificare la presenza di attacchi XSS e difenderti da essi in futuro? Ci sono altre strategie di rilevamento e rimozione che usi tu stesso per combattere questa minaccia? Ci sono strumenti che consiglieresti ai tuoi colleghi lettori? Se è così, per favore lascia un commento qui sotto e continua questa importante conversazione con i tuoi colleghi lettori.