Definzione, caratteristiche e Ciclo di vita delle vulnerabilità in informatica

Definzione, caratteristiche e Ciclo di vita delle vulnerabilità in informatica

Il processo di sviluppo di un software, per quanto possa essere scrupoloso e ben strutturato, ha come esito la realizzazione di un programma auspicabilmente funzionante, ma inevitabilmente vulnerabile.

Ci sono varie definizioni di “vulnerabilità”, accezioni che in realtà non si discostano molto le une dalle altre. Una vulnerabilità in ambito informatico può essere definita come “a flaw in information technology product that could allow violations of security policy” e anche: “a technological flaw that has security or survivability implications”.

Definzione, caratteristiche e Ciclo di vita delle vulnerabilità in informatica

Il vincolo sostanziale da tenere a mente quando si vuole identificare una vulnerabilità informatica, similmente a ciò che accade nella realtà, è la soggettività: ciò che per qualcuno (ad esempio l’utente del software o lo sviluppatore) è un difetto, per altri (ad esempio un attaccante) può facilmente essere un’opportunità. Lo sviluppo o l’aggiornamento di un software, porteranno inevitabilmente a nuove vulnerabilità.

Ogni nuova vulnerabilità crea una finestra di esposizione che è da intendersi come il lasso temporale che intercorre tra la nascita della vulnerabilità e la completa “cura” di ogni terminale che sfrutti software “infetto”.

Ciclo di vita delle vulnerabilità

Analizzando le finestre di vulnerabilità da un punto di vista meramente procedurale, si possono riscontrare diverse fasi evolutive, schematizzate nei grafici che seguono:

  1. nascita, questa è la fase in cui viene creata, spesso involontariamente nell’ambito dello sviluppo di un software, la vulnerabilità;
  2. scoperta, può avvenire in vari modi, anche per caso, e anche ad opera di soggetti malevoli. Chi scopre la vulnerabilità non è vincolato in nessun modo a rendere pubblica la cosa;
  3. pubblicazione, nel momento in cui qualcuno scopre la vulnerabilità (non è detto sia il primo) e decide di comunicarla ad un pubblico più ampio la vulnerabilità passa in uno stato di disclosure. La scoperta può essere pubblicata su apposite liste o comunicata direttamente allo sviluppatore;
  4. correzione, nel momento in cui lo sviluppatore rilascia una versione del software che corregga il problema, la vulnerabilità passa in uno stato di correzione;
  5. diffusione, avviene quando si perde il controllo su chi sia a conoscenza della vulnerabilità;
  6. scripting, questa è la fase in cui si è riusciti ad automatizzare il processo di exploit della vulnerabilità, ad opera di script o comunque tramite istruzioni dettagliate: a questo punto, esperti e non, riescono a compromettere sistemi sfruttando la vulnerabilità;
  7. morte, questa è l’ultima fase del ciclo di vita di una vulnerabilità, ossia quando il numero di sistemi che possono essere compromessi decresce fino a livelli insignificanti, auguratamente nulli.

Il ciclo vitale appena proposto non può essere altro che una semplificazione di quelle che sono le evoluzioni di una vulnerabilità.
Ad esempio, qualora lo sviluppo di una vulnerabilità fosse intenzionale, nascita e scoperta verrebbero a coincidere e, analogamente, qualora lo scopritore rendesse nota la vulnerabilità trovata, scoperta e pubblicazione verrebbero a coincidere.

È interessante notare come l’ultima fase, che sarebbe forse la più rilevante (perlomeno lato utente), spesso non avviene che dopo anni o non avviene affatto: ad esempio se gli sviluppatori non sono interessati a rilasciare patch o se è impossibile risolvere un determinato problema, o ancora se potrebbero essere state rilasciate delle versioni risolutive, ma chi gestisce il sistema non si preoccupa di aggiornare il software e installarle, ecc.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *