La classifica delle 10 vulnerabilità relative alle web app

Una delle problematiche legate alle applicazioni web è la continua esposizione ad Internet che le rende vulnerabili a potenziali attacchi. I settori maggiormente soggetti a queste vulnerabilità sono quello industriale, con il 65% di siti esposti a problemi di sicurezza, e quello finanziario con il 43%. Questi dati sono purtroppo sinonimo di un’insufficiente attenzione al tema della sicurezza informatica nel sempre più sviluppato mercato delle applicazioni web.

Questi dati indicano la necessità di misure stringenti per un corretto approccio alla cybersecurity, soprattutto sul versante dell’assessment e della mitigazione.

OWASP Top 10 è una classifica – e strumento di pianificazione delle strategie di cyber security – con le 10 principali minacce che riguardano le web application che viene aggiornata sulla base dell’elaborazione di grosse quantità di dati che vengono inviate al team di OWASP (Open Web Application Security Project), un’organizzazione internazionale no-profit che si dedica alla sicurezza delle applicazioni web. L’attività viene svolta, in larga parte, producendo e diffondendo materiale divulgativo e operativo che aiuta utenti, professionisti e aziende a mettere in sicurezza le applicazioni web per una corretta gestione della cyber security aziendale.

L’edizione più recente è quella 2021 e consiste in:

  1. Broken Access Control
  2. Errori crittografici
  3. Injection
  4. Insecure Design
  5. Configurazioni errate di sicurezza
  6. Componenti vulnerabili e obsoleti
  7. Errori di identificazione e autenticazione
  8. Errori di integrità del software e dei dati
  9. Errori di registrazione e monitoraggio della sicurezza
  10. Falsificazione della richiesta lato server (SSRF: Server-Side Request Forgery)


Ogni rischio indicato nella classifica riconduce a una specifica scheda descrittiva che riporta una sinossi (Overview), una descrizione tecnica (Description), metodologie di prevenzione (How to Prevent), esempi specifici di attacco (Example Attack Scenario), riferimenti ad altra documentazione e un elenco a CWE annessi al rischio (List of Mapped CWEs).

Broken Access Control

Passato dalla quinta alla prima posizione nel giro di pochi anni, il controllo degli accessi è un sistema di protezione che impedisce l’accesso a determinate risorse come pannello di controllo/amministrazione dell’hosting; server e applicazioni su server; pannello di amministrazione di un sito web; database.

Questa vulnerabilità porta alla divulgazione non autorizzata di informazioni, alla modifica e all’eliminazione di tutti i dati o all’esecuzione di funzioni che vanno oltre i privilegi assegnati all’utente.

I difetti di autorizzazione possono essere sfruttati dagli aggressori per: accedere a funzionalità e/o dati non autorizzati, visualizzare file e dati sensibili, modificare i diritti di accesso e modificare file e record, modificare l’URL, lo stato dell’applicazione interna o la pagine HTML per bypassare i controlli di accesso, agire come utente o come amministratore senza aver effettuato l’accesso, forzare la navigazione nella pagine autenticate.

Errori crittografici

Consiste in una mancata protezione dei dati sensibili che non dovrebbero essere accessibili al pubblico, dovuta a errori di cifratura e protezione che comportano appunto l’esposizione di dati personali e privati.

I dati sensibili per cui la protezione è necessaria sono: credenziali, numeri di carta di credito e previdenza sociale, informazioni mediche e di identificazione personale e tutte le informazioni personali.

È importante ribadire che per ogni organizzazione è fondamentale proteggere informazioni e privacy degli utenti e rispettare le normative sulla privacy. Esistono due tipi di dati, dati archiviati (inattivi) e dati trasmessi (trasmessi internamente tra server o browser web), entrambi devono essere protetti. Un modo per proteggere i dati in transito sui un sito web è l’attivazione di un certificato SSL.

Injection

Si verifica quando un utente malintenzionato invia dati non validi all’applicazione web con l’intenzione di far eseguire qualcosa per cui l’applicazione non è progettata o programmata, con lo scopo di accedere a informazioni riservate o eseguire comandi.

Un’applicazione è vulnerabile quando: i dati forniti dall’utente non sono validati, filtrati o sanificati; le query dinamiche o le chiamate non parametrizzate senza escaping contestuale vengono passate direttamente all’interprete; un input malevolo viene usato all’interno di parametri di ricerca di un ORM (object-relational mapping) per estrarre ulteriori record sensibili; un input malevolo viene usato in modo diretto o concatenato. Le query SQL o i comandi includono i dati ostili nelle query dinamiche, nei comandi o nelle stored procedure.

Insecure Design

Questa vulnerabilità si concentra sullo sviluppo delle applicazioni web dall’inizio del loro ciclo di vita. Si tratta essenzialmente di evitare protocolli e metodi di sicurezza codificati durante lo sviluppo iniziale di un’applicazione web, nonché di non tenere conto dei rischi e dei vettori di attacco durante la pianificazione, lo sviluppo e l’implementazione di un’applicazione Web. Non deve essere confuso con l’implementazione non sicura di applicazioni o politiche web. Si può avere un design sicuro e un’implementazione non sicura, ma non il contrario.

Durante lo sviluppo di un software è necessario scrivere applicazioni sicure che non mettano a rischio i propri utenti. Le applicazioni senza un design sicuro possono causare danni incalcolabili in termini di dati trapelati, reputazione e ore lavorative per la pulizia e la prevenzione futura.

Configurazioni errate di sicurezza

Questo tipo di vulnerabilità informatica si verifica quando un componente dell’applicazione è esposto agli attacchi, a causa di un’opzione di configurazione non sicura o di una configurazione errata. Le più comuni sono: difetti senza patch per correggerli; configurazioni predefinite; pagine non utilizzate; file e directory non protetti; servizi non necessari e utilizzo di file XML vulnerabili.

Gli errori di configurazione della sicurezza possono verificarsi a qualsiasi livello di uno stack di applicazioni, inclusi: servizi di rete; piattaforma; server web; server di applicazioni; database; framework; codici personalizzati; macchine virtuali preinstallate; containers e storage.

Componenti vulnerabili e obsoleti

Questa categoria riguarda tutte le falle legate all’utilizzo di librerie e componenti vulnerabili o obsoleti all’interno di applicazioni e siti web. Si presentano se: il software è vulnerabile, non supportato o non aggiornato; se non si procede regolarmente con la scansione delle vulnerabilità; se non vengono corrette o aggiornate la piattaforma sottostante, i frame work in modo tempestivo e basato sul rischio; se gli sviluppatori non testano la compatibilità delle librerie aggiornate, nuove o corrette con patch, e se i componenti non vengono aggiornati in modo sicuro.

Errori di identificazione e autenticazione

Chiamata in precedenza “Broken Authentication”, ora non indica solo tutte le falle riguardo la conferma dell’identità, dell’autenticazione e della gestione della sessione dell’utente, ma anche problematiche legate ai meccanismi di autorizzazione implementati da un applicativo. Un’applicazione Web contiene una vulnerabilità di autenticazione interrotta se:

  • Consente attacchi automatici come il credential stuffing
  • Consente attacchi di brute force o altri attacchi automatici
  • Consente password predefinite, deboli o note
  • Utilizza processi di recupero credenziali deboli o inefficaci e password dimenticata
  • Utilizza archivi dati di password in testo normale, crittografate o con hash debole
  • Presenta un’autenticazione a più fattori mancante o inefficace (2FA)
  • Espone gli ID di sessione nell’URL (ad es. riscrittura dell’URL)
  • Non ruota gli ID di sessione dopo l’accesso
  • Non invalida correttamente gli ID di sessione. Le sessioni utente o i token di autenticazione (in particolare i token SSO) non vengono invalidati correttamente durante la disconnessione o un periodo di inattività

 

Errori di integrità del software e dei dati

Gli errori che rientrano in questa categoria sono le modifiche involontarie ai dati come risultato di un’operazione di archiviazione, di recupero o di elaborazione; nello specifico: utilizzo di codice che non verifica l’integrità della fonte; utilizzo di plug-in di terze parti in cui non si controlla la fonte; plug-in ed estensioni da fonti non attendibili; l’introduzione, la potenziale compromissione o l’accesso non autorizzato; gli aggiornamenti automatici presuppongono l’attendibilità della fonte.

Errori di registrazione e monitoraggio della sicurezza

L’esigenza di proteggere un sito web non può essere sottovalutata. Sebbene la sicurezza al 100% non sia un obiettivo realistico, ci sono modi per monitorare regolarmente ogni sito web che hanno l’obiettivo di agire in caso di problematiche. Non disporre di un efficiente processo di registrazione e monitoraggio può aumentare il danno di un sito web compromesso.

Senza registrazione e monitoraggio, le violazioni non possono essere rilevate. Il logging, il rilevamento, il monitoraggio e la risposta attiva insufficienti si verificano ogni volta che:

  • Gli eventi verificabili, come i login, i login falliti e le transazioni ad alto valore, non vengono registrati
  • Warning ed errori non generano messaggi di log, oppure sono inadeguati o poco chiari
  • I log di applicazioni e API non sono monitorati per attività sospette
  • I file di log vengono memorizzati solo localmente
  • Non sono presenti o sono inefficaci le soglie di allarme e processi di escalation della risposta
  • I penetration test e le scansioni da parte di strumenti DAST (Dynamic Application Security Testing) non attivano nessun allarme
  • L’applicazione non è in grado di rilevare, svolgere escalation o avvisare per gli attacchi attivi in real-time o quasi in real-time
 

Falsificazione della richiesta lato server (SSRF: Server-Side Request Forgery)

Si verifica ogni volta che un’applicazione web recupera una risorsa remota senza convalidare l’URL fornito dall’utente. Questo permette all’utente malintenzionato di forzare l’applicazione a inviare una richiesta predisposta ad una destinazione imprevista, anche se protetta da un firewall, VPN o un altro tipo di elenco di controllo di accesso alla rete (ACL).

Dato che le moderne applicazioni web forniscono agli utenti finali parecchie funzionalità, scaricare dati da un URL è uno scenario comune. Di conseguenza, l’incidenza di SSRF è in crescita. Con l’aumento dell’utilizzo e della popolarità dei servizi cloud, nonché della loro complessità, aumentano anche la prevalenza e il rischio di attacchi SSRF.

Credits: SUCURI