Diventa Autore per CoreTech | Scopri di più
18/11/21 CoreTech Blog
Per le certificazioni come CISSP, CISA, Security+, CASP+ o CySA+, le classi di vulnerabilità web costituiscono solo una piccola parte delle conoscenze richieste per superare l'esame. Ad esempio, l'esame CISSP valuta l'esperienza dello studente in otto domini e anche la conoscenza avanzata di argomenti come XSS, CSRF e SQL injection.
Perché allora molti studenti scelgono di investire molto più tempo e sforzi per acquisire una buona comprensione delle classi di vulnerabilità del web rispetto a ciò che può essere giustificato dal loro peso all'interno del solo programma? Una spiegazione plausibile è l'odierna prevalenza delle tecnologie web, combinata con il nostro desiderio intrinseco di comprendere ciò che usiamo quotidianamente. Dal punto di vista di chi sostiene l'esame, la ragione potrebbe essere ancora più semplice: nessuno vuole entrare in un esame con quello che sa essere un punto cieco, e per giunta verificabile, non importa quanto piccolo e irrilevante possa sembrare. Questo è diventato un fattore particolarmente importante con l'emergere degli esami CAT.
Allo stesso tempo, lo studio autonomo anche di classi di vulnerabilità web comuni come XSS, directory traversal e SSRF può essere piuttosto scoraggiante per gli studenti che non hanno esperienza tecnica pratica, per non parlare di quelli che non hanno la propensione a ottenere tale esperienza. Ciò è particolarmente vero per gli studenti che cercano di ottenere una certificazione con particolare attenzione alla gestione (del rischio), all'auditing, all'IAM o alla conformità e che desiderano comprendere le basi della sicurezza Web senza dover scorrere articoli e letteratura scritti con un più in mente il pubblico esperto di tecnologia.
Non sorprende quindi che gruppi di studio e forum vengano spesso utilizzati per porre domande sui diversi tipi di scripting tra siti, falsificazione di richieste tra siti e SQL injection. È sfortunato quanto prevedibile che i materiali di studio più diffusi, le guide per la certificazione e i corsi preparatori tendano a essere piuttosto leggeri sul lato tecnico delle cose e non sempre riescano a trasmettere spiegazioni corrette, per non parlare di comprensibili.
Questo articolo mira a spiegare le tipiche classi di vulnerabilità del Web e le difese ad alto livello, in termini semplici e succinti. Ci concentreremo meno sulle minuzie tecniche e più sull'assicurarci di acquisire le solide conoscenze di base che non solo ti consentiranno di affrontare l'esame di certificazione con sicurezza, ma di comprendere l'argomento a un livello che si rivelerà utile durante l'intera carriera.
Descrizione:
Un utente malintenzionato invia un input accuratamente predisposto a un server, che quindi utilizza questo input per generare una pagina Web che viene consegnata al browser Web della vittima.
Impatto:
Il codice dello script dell'aggressore diventa parte della pagina Web e viene eseguito all'interno del browser Web della vittima nel contesto della pagina Web vulnerabile.
Prevenzione:
Durante la generazione di una pagina Web contenente l'input dell'utente, i server Web dovrebbero codificare l'input dell'utente per garantire che venga semplicemente visualizzato, ma mai interpretato dal browser Web. Come controllo compensativo, i server Web possono fornire ai browser Web una politica di sicurezza dei contenuti per limitare l'impatto della mancata codifica dell'input dell'utente.
Ulteriori letture:
Descrizione:
Un utente malintenzionato inganna il browser Web della vittima facendogli inviare una richiesta involontaria a un server, inviando alla vittima un collegamento che punta al server Web vulnerabile o creando una pagina Web che avvia la richiesta.
Impatto:
Il server tratta la richiesta avviata dall'aggressore come se fosse una richiesta avviata dalla vittima ed esegue azioni nel contesto dell'autenticazione della vittima.
Prevenzione:
I server Web dovrebbero indicare al browser Web di contrassegnare le richieste autentiche con un token che l'attaccante non può indovinare. Se l'autenticazione viene gestita tramite l'uso di cookie, i cookie dovrebbero utilizzare l'attributo SameSite per impedire che vengano utilizzati nelle richieste avviate da un aggressore.
Ulteriori letture:
Descrizione:
Un server passa l'input dell'utente a un database e un utente malintenzionato riesce a creare tale input in modo che venga trattato non come dati, ma come comando del database.
Impatto:
L'autore dell'attacco può indicare al database di eseguire azioni e può essere in grado di utilizzare questa capacità per leggere, scrivere, modificare ed eliminare i dati archiviati nel database.
Prevenzione:
Quando le applicazioni Web passano l'input dell'utente a un database, devono mantenere una chiara distinzione tra i dati utente scritti o utilizzati per interrogare il database e i comandi progettati per manipolare il database. Ciò può essere ottenuto tramite l'utilizzo di istruzioni preparate, query con parametri e stored procedure.
Ulteriori letture:
Descrizione:
Un'applicazione Web accede a una risorsa su un filesystem e la posizione della risorsa a cui si accede è derivata dall'input dell'utente. Un utente malintenzionato invia un input che fa sì che l'applicazione Web acceda a una risorsa a cui non è previsto l'accesso.
Impatto:
L'attaccante può essere in grado di leggere, scrivere o manipolare in altro modo risorse arbitrarie, abusando di fatto delle autorizzazioni dell'applicazione web.
Prevenzione:
Le applicazioni Web dovrebbero evitare l'uso diretto dell'input dell'utente per costruire percorsi di risorse o riferimenti. Se ciò non è possibile, devono essere previsti controlli di accesso, come autorizzazioni restrittive per file e directory, per limitare l'accesso alle risorse predefinite.
Ulteriori letture:
Descrizione:
Un server Web è in grado di inviare richieste in uscita e un utente malintenzionato fa sì che il server invii richieste arbitrarie o invii qualsiasi tipo di richiesta a destinazioni indesiderate.
Impatto:
L'aggressore può abusare della relazione di fiducia tra il server vulnerabile e il destinatario delle richieste contraffatte o esfiltrare informazioni sensibili costringendo il server vulnerabile a inviare richieste a un server controllato dall'aggressore.
Prevenzione:
I server non devono consentire agli utenti di avviare richieste a destinazioni arbitrarie o garantire che il controllo degli utenti sui contenuti delle richieste e sulle destinazioni delle richieste non superi i requisiti stabiliti dai requisiti della logica di business dell'applicazione.
Ulteriori letture: