In considerazione dei continui cambiamenti nell’ambito della cyber security, restare informati sui principali bug all’interno dei software è essenziale.
Recentemente, MITRE ha rilasciato una classifica completa con le principali 25 debolezze più pericolose dei software, che offre informazioni di valore all’interno delle vulnerabilità che sia gli sviluppatori software sia i professionisti della sicurezza, dovrebbero valutare attentamente.
Se anche riconosciamo la competenza dell’autorità e concordiamo con le informazioni condivise, è cruciale considerare fattori aggiuntivi per comprendere veramente da dove vengano i rischi e, di conseguenza, dare priorità alle soluzioni.
Indice degli argomenti
Comprendere la classifica MITRE
MITRE ha classificato le fragilità più pericolose dei software basandosi su un’analisi completa, mappando la causa principale delle CVE (Common Vulnerabilities and Exposures) alle CWE (Common Weakness Enumeration). Insieme a questo, ha preso in considerazione il numero di CVE associate a ciascuna CWE e il loro punteggio medio del CVSS (Common Vulnerability Scoring System).
Sulla base dei dati dei due anni precedenti, MITRE ha classificato quelle di seguito come le top tre CWE, che hanno costantemente dimostrato un alto rischio dovuto ai fattori indicati:
- Out-of-bounds Write (CWE-787): si trova all’apice della lista, questa debolezza può portare al buffer overflow e all’esecuzione arbitraria di codici. La sua prevalenza all’interno dei sistemi software la rende un target interessante per gli aggressori.
- Improper Neutralization of Input During Web Page Generation (Cross-site Scripting) (CWE-79): conosciuta comunemente come XSS, questa debolezza permette agli aggressori di inserire script malevoli all’interno di applicazioni web. Un utilizzo riuscito con successo può portare alla deviazione della sessione, defacement o furto di informazioni sensibili.
- Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’) (CWE-89): una SQL Injection permette agli aggressori di manipolare i database delle query, potenzialmente evitando l’autenticazione e accedendo a dati non autorizzati.
È importante notare che, nonostante questa classifica possa aiutare a identificare quali punti relativi alla sicurezza richiedano attenzione, MITRE non include due metriche cruciali che possono veramente portare alla luce le informazioni necessarie per agire: statistiche CVE nel mondo reale e trend degli exploit in circolazione.
Le insidie nascoste nella scrittura del codice
La classifica conferma l’importanza di un particolare CWE, vale a dire CWE-787, che non stupisce essere di sicuro la più comune.
Da segnalare anche le prime cinque CWE che, secondo i dati raccolti dai ricercatori degli Armis Research Labs, sono state più prese di mira in tentativi di exploit durante il periodo da marzo a giugno. Questi dati forniscono informazioni di valore che possono incrementare la lista MITRE e garantire ulteriormente la sua accuratezza:
- CWE-20 – Improper Input Validation
- CWE-22 – Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)
- CWE-918 – Server-Side Request Forgery (SSRF)
- CWE-94 – Improper Control of Generation of Code (‘Code Injection’)
- CWE-306 – Missing Authentication for Critical Function
La prevalenza di alcune CWE può essere attribuita a diversi fattori chiave. Approfondiamo le spiegazioni alla base dello sfruttamento comune delle 5 principali CWE.
- Informazione generica: Improper input validation e path traversal vulnerabilities (CWE-20 e CWE-22) sono diffuse per la loro presenza all’interno di vari tipi di applicazioni e sistemi. Molti sviluppatori mancano nell’implementare adeguati controlli e validazioni lasciando aperture sfruttabili dagli aggressori.
- Prevalenza nella catena degli attacchi: queste vulnerabilità spesso emergono nelle prime fasi della catena di attacco, rendendole target d’interesse per gli aggressori che sfruttano le debolezze nella validazione degli input, percorsi traversali, falsificazione delle richieste dal lato server, inserimento codice e mancanza di autenticazione per avere un accesso iniziale, aumento dei privilegi ed esecuzione di azioni non autorizzate.
- Specific Input Handling: CWE-20 (Improper Input Validation) e CWE-22 (Path Traversal) includono vulnerabilità relative alla gestione degli input. La loro specifica natura li rende più inclini allo sfruttamento perché hanno un impatto su come le applicazioni elaborano e interpretano l’input dell’utente.
- Exploitability Across Multiple Layers: CWE-918 (SSRF) e CWE-94 (Code Injection) possono essere sfruttate attraverso diversi livelli di uno stack di applicazioni. La SSRF permette agli aggressori di manipolare le richieste del server, al contempo l’inserimento di codice permette loro di eseguire comandi arbitrari. Questa flessibilità nei vettori di attacco accresce la possibilità di successo dello sfruttamento.
- Inadequate Authentication Mechanisms: CWE-306 (Missing Authentication for Critical Function) includono quelle vulnerabilità nelle quali le funzioni mancano di adeguati controlli di autenticazione. Gli aggressori prendono di mira specificatamente queste vulnerabilità per aggirare l’autenticazione e ottenere un accesso privilegiato per compiere azioni malevoli o esfiltrare dati sensibili.
Questi fattori contribuiscono all’importante impatto sull’integrità dei dati e confidenzialità associati con CWE-20, CWE-22, CWE-918 e CWE-94. Lo sfruttamento di queste vulnerabilità può direttamente compromettere informazioni sensibili, portando a una divulgazione non autorizzata, modifica o distruzione.
Poi, le CWE nella lista spesso provengono da errori comuni di scrittura di codice o sviste. Una validazione insufficiente degli input, controlli inadeguati degli accessi e gestione impropria di dati generati dagli utenti sono alcune delle insidie comuni che gli sviluppatori devono affrontare per mitigare i rischi associati a queste CWE.
Affrontando queste insidie nella scrittura di codice, le aziende possono rafforzare le loro difese contro potenziali sfruttamenti.
Le informazioni sono la chiave per ridurre la superfice d’attacco
La classifica delle Top 25 debolezze più pericolose dei software ha una particolare importanza per sviluppatori e ingegneri ma anche per i manager dedicati alla sicurezza e gli executive. Aiuta gli sviluppatori a focalizzarsi su vulnerabilità specifiche durante il processo di sviluppo, ad adottare pratiche di scrittura di codice sicure e migliorare la sicurezza software, riducendo la probabilità di sfruttamento e proteggendo i dati degli utenti.
Per i manager dedicati alla sicurezza e gli executive, capire i rischi principali permette di prendere decisioni consapevoli relative ad allocazione delle risorse, budget e pianificazione strategica per i progetti relativi alla sicurezza dell’azienda. Allineando i loro sforzi alle vulnerabilità identificate nella lista, possono prioritizzare gli investimenti, implementare controlli di sicurezza efficaci e mitigare il potenziale impatto delle minacce cyber.
Inserire un ulteriore livello di informazioni registrando la natura dinamica delle vulnerabilità nella realtà e i trend degli attacchi in evoluzione, fondamentalmente aiuterà a colmare il divario tra vulnerabilità tecniche e decisioni strategiche, permettendo alle aziende di gestire meglio la loro postura di sicurezza generale e proteggere le loro risorse di valore.