Una vulnerabilità, nella tecnologia dell'informazione (IT), è un difetto nel codice o nella progettazione che crea un potenziale punto di compromissione della sicurezza per un endpoint o una rete. Le vulnerabilità creano possibili vettori di attacco, attraverso i quali un intruso potrebbe eseguire codice o accedere alla memoria di un sistema di destinazione. I mezzi con cui vengono sfruttate le vulnerabilità sono molteplici e includono l'inserimento di codice e il sovraccarico del buffer; possono essere condotti tramite script di hacking, applicazioni e codifica a mano libera. Un exploit zero-day, ad esempio, si verifica non appena una vulnerabilità diventa generalmente nota.
La questione di quando rendere pubblica una divulgazione di vulnerabilità rimane una questione controversa. Alcuni esperti di sicurezza sostengono la divulgazione completa e immediata, comprese le informazioni specifiche che potrebbero essere utilizzate per sfruttare la vulnerabilità. I sostenitori della divulgazione immediata sostengono che porti a più patching delle vulnerabilità e software più sicuro. Quelli contrari alla divulgazione delle vulnerabilità sostengono che le informazioni sulle vulnerabilità non dovrebbero essere pubblicate affatto, perché le informazioni possono essere utilizzate da un intruso. Per mitigare il rischio, molti esperti ritengono che informazioni limitate dovrebbero essere rese disponibili a un gruppo selezionato dopo che è trascorso un determinato periodo di tempo dal rilevamento.
Sia i cappelli neri che quelli bianchi cercano regolarmente le vulnerabilità e testano gli exploit. Alcune aziende offrono bug bounties per incoraggiare gli hacker white hat a cercare le vulnerabilità. In genere, gli importi dei pagamenti sono commisurati alle dimensioni dell'organizzazione, alla difficoltà di hackerare il sistema e all'impatto che un bug potrebbe avere sugli utenti.
Scansione e valutazioni delle vulnerabilità
La pianificazione della gestione delle vulnerabilità è un approccio completo allo sviluppo di un sistema di pratiche e processi progettati per identificare, analizzare e affrontare i difetti nell'hardware o nel software che potrebbero fungere da vettori di attacco. I processi di gestione delle vulnerabilità includono:
Verifica delle vulnerabilità: questo processo dovrebbe includere la scansione regolare della rete, la registrazione del firewall, i test di penetrazione o l'uso di uno strumento automatico come uno scanner di vulnerabilità. Uno scanner di vulnerabilità è un programma che esegue la fase diagnostica di un'analisi di vulnerabilità, nota anche come valutazione delle vulnerabilità. Questo spesso include un componente di pen test per identificare le vulnerabilità nel personale, nelle procedure o nei processi di un'organizzazione che potrebbero non essere rilevabili con le scansioni di rete o di sistema.
Identificazione delle vulnerabilità - Ciò comporta l'analisi delle scansioni di rete e dei risultati dei test di penna, dei registri del firewall o dei risultati della scansione delle vulnerabilità per trovare anomalie che suggeriscono che un attacco di malware o un altro evento dannoso ha sfruttato una vulnerabilità di sicurezza o potrebbe farlo.
Verifica delle vulnerabilità: questo processo include l'accertamento se le vulnerabilità identificate potrebbero essere effettivamente sfruttate su server, applicazioni, reti o altri sistemi. Ciò include anche la classificazione della gravità di una vulnerabilità e del livello di rischio che presenta per l'organizzazione.
Mitigazione delle vulnerabilità: questo è il processo per capire come impedire che le vulnerabilità vengano sfruttate prima che una patch sia disponibile o nel caso in cui non sia presente una patch. Può comportare la disattivazione della parte interessata del sistema (se non è critica) o varie altre soluzioni.
Applicazione di patch alle vulnerabilità: questo è il processo per ottenere le patch, di solito dai fornitori del software o dell'hardware interessato, e applicarle a tutte le aree interessate in modo tempestivo. A volte si tratta di un processo automatizzato, eseguito con strumenti di gestione delle patch. Questo passaggio include anche il test delle patch.
Framework di gestione delle vulnerabilità
Il Common Vulnerability Scoring System (CVSS) è un framework per valutare la gravità delle vulnerabilità di sicurezza nel software. Gestito dal Forum of Incident Response and Security Teams (FIRST), il CVSS utilizza un algoritmo per determinare tre punteggi di valutazione della gravità: base, temporale e ambientale. I punteggi sono numerici; vanno da 0.0 a 10.0 con 10.0 che è il più grave.
Il National Vulnerability Database (NVD) è un archivio governativo di informazioni sulla vulnerabilità basate su standard. NVD è un prodotto della divisione Computer Security del National Institute of Standards and Technology (NIST) ed è utilizzato dal governo degli Stati Uniti per la gestione della sicurezza e la conformità, nonché per la gestione automatica delle vulnerabilità. L'NVD è sponsorizzato dal Department of Homeland Security (DHS), NCCIC e US-CERT.