Come bucare un sito: le 10 falle informatiche più diffuse secondo OWASP

Argomenti: ,
Pubblicato il: 01-04-2021 00:00 , Ultimo aggiornamento: 28-04-2021 16:55

Tra le tante attività borderline che è possibile compiere sul web, sicuramente la possibilità di bucare un sito, di buttarlo giù o di prenderne il controllo è tra le più diffuse: qualsiasi attività online, del resto, dovrebbe tenere conto di questa eventualità ed attrezzarsi con le adeguate tecnologie di protezione. A tale riguardo, esiste un’organizzazione no profit che si chiama OWASP e che stila periodicamente dei report sulla sicurezza informatica e sulla protezione dei siti web, proponendo dei documenti standard di riferimento per la sicurezza in ambito WordPress e non solo. Esso rappresenta un focus molto dettagliato sui principali problemi che possono derivare dall’utilizzo di applicazioni su internet, ed include documenti ufficiali da parte di esperti del settore.

Che cos’è uno standard di sicurezza informatica

Si tratta di un livello ideale di protezione che OWASP invita tutte le aziende a seguire, per evitare problemi presenti e soprattutto in prospettiva, visto che ogni giorno i bollettini online di security sono invasi di segnalazioni di ogni tipo e, spesso, quando la segnalazione è uscita bisogna mettere una “pezza” in corsa e le patch a volte non sono neanche subito disponibili. Nonostante la sicurezza non sia per forza vista come una priorità dalle aziende (anzi, la pratica in larga scala dimostra l’esatto contrario), o comunque venga tirata in ballo quando i guai sono già presenti, il sito OWASP viene aggiornato periodicamente, e contiene informazioni di carattere generale sulla sicurezza informatica.

Come implementare la sicurezza sui siti web

La sicurezza di un sito passa in genere per due aspetti complementari:

  • un maggiore senso di sicurezza da infondere agli utenti, che dovrebbero evitare azioni azzardate su siti di dubbia qualità, soprattutto qualora offrano risorse free o promettano premi in denaro e simili;
  • un migliorato senso di responsabilità da parte dei siti delle aziende, che devono capire che un sito sicuro fa la differenza per l’ecosistema web ma anche a livello di branding, di sicurezza percepita e di numero di potenziali conversioni raggiungibili.

Molti attacchi, di fatto, possono ricadere in più di una categoria contemporaneamente, come successo, per versioni di wordpress antecedenti ala 5.1.1 che erano affette da Remote Code Execution, XSS e CSRF.

Nel seguito, comunque, faremo riferimento a WordPress, come CMS tra i più utilizzati.

Tipi di attacchi informatici: Injection

La prima categoria da prendere in considerazione è la Injection: si tratta di un attacco text-based, ovvero basato sull’impartire impropriamente comandi e fare in modo di eseguire operazioni pericolose come quelle di cancellazione o modifica di dati sensibili.

La injection, di qualunque tipo essa sia, può comportare la perdita o la divulgazione non autorizzata di dati, nei casi peggiori, può addiritura portare alla completa acquisizione dell’host da parte dell’attaccante.
Alcune tra le più comuni sono SQL, NoSQL, OS command, Object Relational Mapping (ORM), LDAP, ed Expression Language (EL) o Object Graph Navigation Library (OGNL) injection, ma il concetto rimane sempre lo stesso.

Il modo migliore per capire se un’applicazione sia vulnerabile alla injection, è quello di controllare che siano attivi degli opportuni filtri sui dati, e nel caso di SQL utilizzare prepared statement e stored procedure evitando query dinamiche. Questo viene fatto lato codice e, in genere, WordPress viene continuamente aggiornato da questo punto di vista: motivo per cui è fondamentale aggiornare sempre il CMS ed i vari theme e plugin all’ultima versione disponibile.

Vediamo un esempio di SQL injection, in modo da capire meglio di cosa stiamo parlando.
Una SQL Injetion consiste nell’inserimento, in un capo di input, di qualcosa del genere:

' OR '1'='1 

Così sembra non aver significato, ma se pensiamo che, dopo aver inserito la nostra username nel campo di input di un form, per verificare che l’utente sia effettivamente presente nel database, verrà eseguita una query del tipo:

SELECT * FROM users WHERE usernaname = 'nome inserito dall'utente nell'apposito campo';

la query risultante sarà allora

SELECT * FROM users WHERE username = '' OR '1'=1';

essendo la codizione 1 = 1 sempre vera, verranno visualizzati i record della tabella username.

La vignetta seguente, ad esempio, ironizza su un attacco informatico di questo tipo: qualcuno ha provato a violare il database degli utenti inserendo come nome un comando MySQL per cancellare tutti i dati dal DB. Se il codice avesse previsto la sanificazione degli INPUT, come si dovrebbe sempre fare, non sarebbe mai successo.

Clicca per ingrandire

Tipi di attacchi informatici: Broken Authentication

La Broken Authentication si basa su un furto di informazioni dall’esterno sfruttando tipicamente account rubati (come il leak di Gmail di qualche anno fa), cookie o session ID allo scopo di impersonificare altri utenti; in quest’ottica gli utenti più a rischio sono quelli che possiedono privilegi elevati, quindi gli utenti amministratori o super-amministratori, che diventano inconsapevoli vettori di attacco per minare la sicurezza e l’integrità dei dati.

Questo è un caso che avviene spesso in WP qualora, ad esempio, le credenziali di accesso di un utente amministratore  vengono pubblicate sul dark web o dumpate pubblicamente, in modo che chiunque possa accedervi: come prima cosa, cambiate password in questo caso.

Ci sono vari accorgimenti che si possono seguire per difendersi:

  • implementando l’autenticazione multifattore;
  • non utilizzare le password di default, soprattutto per account con privilegi elevati, come quelli da amministratore;
  • inserire verifiche sull’affidabilità delle password;
  • utilizzare rigide politiche sulla lunghezza e complessità della password, prevedere la modica delle stessa a scadenze fissate;
  • gestire correttamente i tentavi di login falliti, aumentando progressivamente il tempo di attesa tra un tentativo fallito e l’altro. Registrare in un file di log tutti i tentativi che non vanno a buon fine, soprattutto nel caso in cui vengono individuati credential stuffing, brute force o altri tipi di attacchi;

Tipi di attacchi informatici: Cross Site Scripting (XSS)

Il Cross Site Scripting (XSS) è il terzo elemento da considerare nella sicurezza di un sito web, e casi molti recenti di attacchi del genere hanno riguardato alcune versioni di WordPress, ad esempio, ma anche siti ancora più grossi come Linkedin. Si tratta di un attacco che mira a sfruttare i mancati controlli all’interno del codice dei siti (e più in genere delle app che sfruttano internet), in modo da poter eseguire operazioni per cui non si avrebbero di norma i privilegi, e cancellare o manomettere i dati.

Originariamente, con la sigla XSS si definivano tutti gli attacchi compiuti mediante applicazioni che sfruttavano il linguaggio javascript. Tale definizione è stata poi estesa anche ad altri modi di iniezione di codice malevolo tra cui ActiveX, Java, VBscript e anche HTML.

Si tratta anche qui di attacchi text-based, ovvero piuttosto banali da replicare e che non richiedono, il più delle volte, neanche un software specifico per poter essere eseguiti.

Attraverso un sito o un’applicazione web del codice malevolo può raggiungere il server che, se non ben configurato, eseguirà i comandi contenuti nello script iniettato. Da qui, il codice maligno prima o poi finisce sui client colpiti. Sarà quindi possibile inserire degli script per accedere a dati sensibili contenuti nei cookie o nei token di sessione. I cookie di sessione non sono altro che dei file di testo utilizzati per autenticarsi ai servizi offerti da un determinato sito. Qualora l’hacker riuscisse a leggerli, sarebbe in grado di impersonificare la vittima dell’attacco, compiendo azioni al suo posto.
Immaginiamo il caso in cui ci colleghiamo al sito della nostra banca o a un qualsiasi altro tipo di servizio pubblico o privato al quale siamo già registrati. Non è difficile immaginare quali potrebbero essere le  catastrofiche conseguenze.

Un esempio di tale vulnerabilità da XSS è il bug di WooCommerce 2.6.2 scoperto nel luglio 2016. Un bug rendeva possibile l’iniezione di codice HTML nelle meta descrizioni delle immagini dall’esterno. Altro esempio è la vulnerabilità del plugin WP Statistics.

Tipi di attacchi informatici: Insecure Direct Object References

Una quarta categoria da considerare sono i cosiddetti Insecure Direct Object References, cioè riferimenti ad oggetti utilizzati dal software che vengano sfruttati per eseguire operazioni illecite. Un uso errato delle sessioni PHP, ad esempio, come richiesto da alcune personalizzazioni di WordPress, potrebbe portare in sè problemi del genere.

Se il sito o l’applicazione web usano dati non verificati in una chiamata SQL che accede alle informazioni degli utenti, l’aggressore cambiando il valore del parametro passato nella url può accedere, oltre che al proprio, a qualsiasi altro account.

Ad esempio, supponiamo che la chiamata in questione avvenga per mezzo di questo indirizzo http://miosito.com/info_utenti/userid=id_vittima, l’attaccante potrà accedere ai dati di altri utenti inserendo il parametro userid della vittima.

Una vulnerabilità di questo tipo è stata trovata nell’agosto 2019 nel plugin wp-support-plus-responsive-ticket-system di WP, l’insecure direct object reference avveniva attraverso il paramentro ticket number.

Tipi di attacchi informatici: Security Misconfiguration

La Security Misconfiguration è un ulteriore problema che si trova ad affrontare qualsiasi esperto o consulente di sicurezza informatica: in essa, un attaccante riesce ad acquisire informazioni riservate mediante account di prova lasciati incustoditi, pagine non utilizzate (e magari indicizzate da Google), file o directory non protette adeguatamente e simili.

Per estensione, qualsiasi attacco di ingegneria sociale – ovvero mirato ad acquisire conoscenze ingannando la vittima ed ispirandole fiducia – sono da far rientrare idealmente in questa categoria. Per saperne di più sull’argomento basta leggere uno dei libri di Kevin Mitnick.

Non diabilitare il Directory Listing è un esempio di configurazione errata. L’attaccante potrebbe ottenere la lista dei file e scaricare ciò che gli serve. L’accesso al codice permette una ricerca delle vunerabilità più comoda e veloce.

Tipi di attacchi informatici: Sensitive Data Exposure

La Sensitive Data Exposure rientra poi in una categoria ulteriore, ovvero tutti i casi in cui avvengano furti di dati personali: quindi non tanto password quanto chiavi private, che permettano ad un attaccante di impadronirsi di account o credenziali non proprie. Ricadono in questa categoria gli attacchi di tipo man-in-the-middle.

Molti siti, applicazioni ed API, non proteggono a dovere i dati sensibili i quai potrebbero essere: cartelle cliniche, cartelle esattoriali, altri dati di tipo finanziario, a seconda dell’ente a cui fa capo il sito. L’aggressore può impadronirsene e commettere facilemente reati come il furto di identità, frodi con le carte di credito e molto altro. I dati sensibili quindi, devono sempre essere protetti attraverso la crittografia.

Tipi di attacchi informatici: Using Components with know Vulnerabilities

Molti siti WordPress sono vittima di attacchi Using Components with Known Vulnerabilities, ovvero: l’attaccante fa una scansione del sito, rileva un plugin bucato, non aggiornato o troppo vecchio e lo sfrutta a proprio vantaggio.

Plausibilmente quasi tutte le falle di WP relative a plugin instabili o mal programmati ricadono in questa categoria, tra cui Slider Revolution Plugin e MailPoet. Anche l’uso attuale di versioni di WP non aggiornate può farci ricadere in rischi assimilabili a questa categoria.

Tenete quindi sempre aggiornato il vostro sito wordpress, plugin compresi. A questo link troverete un lungo elenco di vulnerabilità di WP.

Tipi di attacchi informatici: XML External Entities (XXE)

Un attacco XML External Entity è una tiplogia di attacco che avviene ai danni di un’applicazione che analizza un input XML. Si verifica quando l’input XML, contenente un riferimento a un’entità esterna viene elaborato da un parser XML non adeguatamente configurato. Può comportare la visualizzazione di dati riservati, effettuare attacchi DOS e DDOS, effettuare spoofing di richieste lato server Server-Side Request Forgery (SSRF) ed altro.

Lo standard XML definisce la struttura di un documento XML e, inoltre, un concetto chiamato entità, ovvero un tipo di unità di memorizzazione.
Nello standard XML è definito un tipo di entità, chiamata entità esterna, che può riferirsi a dati locali o remoti e che permette di sostituire nel documento XML il loro relativo valore. Qualora le entità esterne facessero riferimento a dati interni o confidenziali, il parser XML potrebbe inserirli nel documento XML  consentendo all’aggressore di ottenere informazioni.

Per prevenire l’attacco vanno adottati alcuni accorgimenti:

  • Se possibile, utilizzare formati meno complessi dell’XML, come JSON ed evitare di serializzare dati sensibili.
  • Aggiornare e applicare le patch a tutte le librerie che utilizzano parser XML.
  • Disabilitare l’entità esterne XML e l’elaborazione DTD in tutti i parser XML nell’applicazione.
  • Controllare e validare i dati XML in ingresso quando vengono caricati da file (ad esempio file docx, xlsx, ecc.).
  • Utilizzare meccanismi di tipo whitelisting lato server per filtrare o sanitizzare l’input  presente all’interno di documenti XML.

Tipi di attacchi informatici: Insecure Deserialization

La serializzazione dei dati è il processo di conversione di un oggetto da un formato in un altro, come il JSON, che possa essere archiviato o trasmesso tramite messaggio. La deserializzazione è il processo opposto, ovvero un processo attraverso il quale il dato serializzato viene convertito in un oggetto.

L’Insecure deserialization si verifica  quando dati non affidabili vengono utilizzati per compromettere la logica di un’applicazione, provocando Denial of Service o  permettendo all’attaccante di eseguire del codice da remoto e cancellare o manomettere oggetti in serie. Quando l’input può essere modificato dall’utente, ci si trova di fronte ad una deserialization vulnerability, tipicamente sfruttata preparando un payload che contenga del codice eseguibile da remoto.

La serializzazione di dati utilizzata per la gestione di servizi che utilizzano identificativi di sessione  come cookies e tokens possono essere fonte di attacco. Per difendersi da attacchi è opportuno rimuovere tutto ciò che non serve dal sistema ed utilizzare solo componenti che effettuano un controllo dalla fonte di provenienza dei codici di serializzazione.

Tipi di attacchi informatici: Insufficient Logging and Monitoring

La fase prelimminare di ogni attacco è di tipo esplorativo, vengoono cercate e sondate le vulnerabilità presenti. In mancanza di un serio monitoraggio e di un intervento tempestivo volto a risolvere le falle, l’hacker ha tutto il tempo a disposizione per preparare il terreno per l’attacco ed eventualmente, scoprire anche altre debolezze del sistema.

Un esempio molto semplice, potrebbere essere quello di un attanccante che tenta, in maniera molto rudimentale, di effettuare l’accesso usando una password comune con tutti gli account presenti. Se il sistema non tiene traccia in modo appropriato dei tentativi di autenticazione falliti, la procedura potrà essere ripetuta con altre password e prima o poi, si potrebbe trovare una corrispondenza.

Nessun voto disponibile

Che te ne pare?

Grazie per aver letto Come bucare un sito: le 10 falle informatiche più diffuse secondo OWASP di Carmelo Marasco su Trovalost.it
Come bucare un sito: le 10 falle informatiche più diffuse secondo OWASP (Guide, Assistenza Tecnica, Internet)

Articoli più letti su questi argomenti:
Trovalost.it è gestito, mantenuto, ideato e (in gran parte) scritto da Salvatore Capolupo