Perchè i sistemi informatici non sono sicuri in sicurezza informatica

Perchè i sistemi informatici non sono sicuri in sicurezza informatica

Perchè i sistemi non sono sicuri

I sistemi informatici si basano su tre componenti interconnesse: hardware, software e fattore umano. Le ragioni che possono esporre la tecnologia finale ad una ampia ed eterogenea natura di minacce alla sicurezza devono essere ricercate in ciascuno di questi campi. Un altro aspetto da considerare parlando di imperfezione in ambito tecnologico è la sua continua crescita in complessità.

Bisogna inoltre considerare che hardware e software sono creati e sviluppati da gruppi di persone diversi. I prodotti di questi team interagiscono tra loro su determinate interfacce, ma i programmatori non hanno la possibilità di intervenire sulla progettazione di un processore o di altre componenti fisiche.

Oltre a ciò l’elettronica funziona solo quando c’è una certa infrastruttura. Ad esempio, è ovviamente richiesto un appropriato flusso di elettricità (che a sua volta viene prodotta da un’infrastruttura completamente diversa, che deve essere analizzata separatamente), una rete di comunicazione funzionante, e molte altre ancora.

In definitiva la sicurezza del sistema informatico finale è influenzata sia dalle caratteristiche di ciascuno dei suoi singoli componenti sia dal modo in cui questi si combinano tra loro in sistemi complessi.

Perchè i sistemi informatici non sono sicuri in sicurezza informatica

Ragioni delle imperfezioni hardware

L’hardware è il fondamento di qualsiasi sistema informatico. che vengono eseguiti programmi e applicazioni di sistema.

E` sulle risorse hardware che vengono eseguiti programmi e applicazioni di sistema.

Il rapido sviluppo dell’hardware dei sistemi informatici è iniziato con gli anni ’50. Negli anni ’50 e ’60, i computer e le reti di trasmissione dati, come base della tecnologia dell’informazione, erano una priorità per la ricerca e la produzione principalmente a causa della necessità della loro applicazione nel complesso militare-industriale delle potenze mondiali. Poichè la perfezione e il potere distruttivo delle armi erano alla base della capacità di difesa e del fattore di impatto di un grande stato, era richiesto un rapido sviluppo delle tecnologie. Scienziati e ingegneri furono ingaggiati dall’esercito: era necessario produrre il più rapidamente possibile grandi quantità di calcoli, immagazzinare ed elaborare i sempre crescenti volumi di dati.

A partire dagli anni ’70 gli investimenti nello sviluppo dell’hardware ha cominciato a spostarsi sul lato commerciale, poichè le tecnologie dell’informazione venivano sempre più utilizzate per scopi industriali e pacifici. Negli anni ’80, i computer appaiono non solo nelle grandi aziende, ma sono utilizzati anche nelle case, e nel decennio successivo iniziò a diffondersi l’elettronica portatile. Questa competizione sempre crescente nel mercato dell’elettronica costringe gli sviluppatori e i produttori a restringere i termini del lancio di nuovi dispositivi, poichè ogni generazione di dispositivi hardware diventa obsoleta molto rapidamente. Sorge una situazione in cui l’obsolescenza commerciale dell’hardware si verifica molto prima di quella fisica, e in un tale scenario di competitività, i produttori di dispositivi sono continuamente costretti a scegliere un equilibrio tra l’affidabilità del prodotto e il suo costo per l’utente finale. Quindi, dato il rapido declino dei dispositivi a causa della loro precoce obsolescenza, i produttori sono tentati di rendere i dispositivi meno durevoli risparmiando su materiali, tecnologie, test, ecc,

I primi campioni di nuove generazioni di dispositivi sono sottoposti a un test dettagliato. Tuttavia, dato un limite di tempo per lo sviluppo di prodotti commerciali, è impossibile trovare tutti i difetti dei dispositivi, che risultano sempre più sofisticati e con una sempre più varia e eterogenea area di applicazione. Va anche notato che non è umanamente possibile produrre esattamente gli stessi componenti hardware, in maniera indistinguibile, infatti anche dispositivi fabbricati su un medesimo nastro, uno dopo l’altro, saranno tra loro diversi. Per questo motivo sarebbe necessario sottoporre i prodotti ai test (selettivi o esaurienti) durante la produzione.

Ragioni delle imperfezioni software

Il software è diviso in due tipi principali: sistema e applicazione. La parte di sistema è costituita da sistema operativo e driver, quella applicativa da tutti gli altri programmi. Il problema della complessità e dei limiti nel tempo di sviluppo, visti precedentemente, si riscontrano anche nel software. I programmatori moderni infatti non hanno una comprensione dettagliata del funzionamento di tutte le sfumature del loro programma, per una serie di motivi.

Prima di tutto perchè la versatilità e la dimensione dei recenti software comporta la creazione modulare da parte di diversi team di sviluppatori, ognuno dei quali ha informazioni unicamente del proprio modulo che comunica con le altre componenti software utilizzando interfacce specifiche.

Inoltre bisogna considerare che i programmatori moderni utilizzano sempre più linguaggi di programmazione di alto livello, i cui compilatori e interpreti vengono scritti, a loro volta, utilizzando linguaggi di programmazione sviluppati in precedenza. I programmatori che creano i loro prodotti in un linguaggio di alto livello, non possono conoscere ogni minima sfaccettatura dell’algoritmo del programma creato, poichè questo viene tradotto in codice macchina ed eseguito dal sistema operativo solo dopo numerose traduzioni.

Inoltre, va notato che i linguaggi di programmazione delle generazioni precedenti (e i relativi interpreti) avevano caratteristiche diverse, che possono influenzare tutto ciò che è stato creato dagli interpreti figli. Ad esempio, sappiamo di una funzionalità del linguaggio “C”, che permette di intervenire sullo stack del programma nel caso in cui le dimensioni dell’array trasmesse allo stack e quelle selezionate automaticamente per esso nella memoria non corrispondano. Il risultato è che i programmi che utilizzano queste funzionalità sono potenzialmente soggetti a attacchi di buffer overflow: vulnerabilità che permette di iniettare un indirizzo arbitrario all’interno dello spazio degli indirizzi del processo.

La verifica completa del software è un’impresa assai ardua, infatti questo deve funzionare su di una eterogenea configurazione di sistemi hardware e software. La composizione, lo scopo e le condizioni operative di ciascuno dei sistemi informatici sono unici, quindi è impossibile prevedere esattamente come si comporterà il software in tutte le possibili declinazioni.

Un argomento separato è il software open source. Alcuni utenti hanno l’illusione circa la sua qualità e sicurezza sulla base del presupposto che sia facile controllare i codici sorgente. Ma alle condizioni attuali non è così; i codici sorgente sono di enormi dimensioni e possono essere costituiti da milioni di linee di codice, in diversi linguaggi. Controllare manualmente questo array di dati e coprire tutte le possibili direzioni dell’algoritmo decisionale del programma non è possibile. Per controllare il software esistono programmi euristici specifici; tuttavia, un risultato negativo di questi strumenti non è sufficente a garantire l’assenza di vulnerabilità, poichè vengono ricercate solo le vulnerabilità e le firme già conosciute.

Ragioni delle imperfezioni del fattore umano

L’attività umana è coinvolta in tutto il ciclo di vita di qualsiasi sistema informatico, partendo dal concepimento del sistema, dalla sua creazione, ai test di funzionamento e alla distribuzione finale. In questo scenario, in cui i sistemi sono concepiti, creati e gestiti da e per le persone, le violazioni dell’affidabilità e della sicurezza nel loro funzionamento sono inevitabili.

I moderni sistemi informatici sono necessariamente il risultato del lavoro di molte persone, il cui lavoro converge in un unico prodotto finale, e ogni persona posside un temperamento, una capacità percettiva e una psicologia differente, che varia anche singolarmente durante il tempo.

Alcuni sistemi informatici per vari motivi consentono possibilità di accesso non autorizzato al sistema, scavalcando i mezzi standard di autenticazione degli utenti. Ciò è spesso dovuto al fatto che durante la creazione delle prime versioni del sistema gli sviluppatori lasciano volutamente una “back door” per facilitare la fase di troubleshooting, porte che vengono poi scoperte e sfruttate dagli eventuali attaccanti. Ogni giorno gli utenti delle moderne tecnologie devono gestire molti sistemi informatici diversi, che neccessitano di interfacciarsi e cooperare. Allo stesso tempo scarseggiano i corsi di formazione per istruire le persone ad utilizzare tutti i possibili sistemi informatici contemporaneamente, o che sensibilizzino sul tema della sicurezza, spesso sottovalutata dai manager.

Inoltre il mercato dell’informatica è pressato nel continuo rilascio di aggiornamenti, sia software che hardware, ciò porta non solo a componenti scarsamente testate e di qualità inferiore, ma anche ad una difficoltà per i gestori dei sistemi ad addattarsi ad ogni cambiamento, tenendo continuamente monitorata la situazione dei bug fixati e di quelli nuovi introdotti dalla release.

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 *