Informatica e sicurezza

Il tema della sicurezza informatica sta diventando sempre più attuale e pervasivo, anche se per gli “addetti ai lavori” si tratta di un argomento che fa parte della normale quotidianità, o almeno dovrebbe esserlo. Ovviamente all’aumentare della quantità di utenti che fruiscono dei servizi erogati in forma digitale, all’aumentare dei dispositivi interconnessi e con l’esplosione e diffusione delle migliaia di applicazioni disponibili per chiunque e per qualunque scopo, la questione della sicurezza informatica ha inevitabilmente iniziato a riguardare praticamente ogni singolo individuo (o quasi) presente su questo pianeta. Tuttavia il concetto di sicurezza informatica, dal punto di vista del profano, assume una connotazione un po’ troppo vaga e astratta, per non dire oscura. Questo post prova a fare un po’ di chiarezza e a spiegare, senza scendere troppo nel dettaglio, i vari aspetti e le implicazioni di questa materia.

Iniziamo con l’osservare che l’espressione “sicurezza informatica” rappresenta un concetto particolarmente generico, che coinvolge aspetti della materia molto diversi tra loro. Proviamo allora a mettere un po’ di ordine spiegando innanzitutto che ci sono diversi livelli di sicurezza informatica, che possiamo elencare in questo modo:

  • sicurezza fisica
  • sicurezza delle applicazioni
  • sicurezza del dispositivo, nella forma del suo sistema operativo
  • sicurezza della rete
  • sicurezza dei dati (che in realtà dipende dalla sicurezza del sistema e della rete)
  • consapevolezza da parte dell’utente

A questi livelli secondo me va aggiunto anche l’aspetto dell’analisi, cioè di quell’insieme di attività che alcuni professionisti devono svolgere in conseguenza di una violazione al fine di ricostruirne le modalità, stimarne la portata e, possibilmente, individuarne i responsabili.

Sicurezza fisica

Uno degli aspetti meno noti ma tutt’altro che trascurabili relativi alla sicurezza informatica riguarda la sicurezza fisica, vale a dire quell’insieme di infrastrutture e regole che salvaguardano l’integrità dell’hardware che costituisce un’infrastruttura informatica. Per capirci, potete avere a disposizione qualsiasi strumento di cybersecurity super potente, ma se una persona qualunque può accedere fisicamente al vostro hardware e staccare la spina, avete ben poco da fare. Ovviamente i sistemi di protezione fisica variano in funzione dell’importanza e della criticità dell’infrastruttura: il datacenter di un’azienda che ospita migliaia di server usati per erogare servizi critici sarà protetto in maniera diversa rispetto all’armadietto rack in cui sono alloggiati il NAS e il server della contabilità di uno studio di commercialisti. Probabilmente nel primo caso ci saranno porte con un sistema di accesso basato su badge o combinazioni numeriche, con logging (cioè registrazione) di ogni singolo accesso, un sistema di videosorveglianza adeguato, dei sistemi antincendio appropriati, dei sistemi di continuità dell’energia elettrica opportunamente dimensionati, e così via. Nel secondo esempio, invece, sarà sufficiente un lucchetto con la chiave custodita dal titolare o dal responsabile informatico, che si preoccuperà di aprire e chiudere solo in caso di necessità.

La sicurezza fisica, dunque, rappresenta la prima difesa dei propri asset, sia per proteggerli da danni accidentali (blackout, incendi, ecc.) che da veri e propri atti di sabotaggio (persone che, avendone possibilità, entrano e spengono apparati critici, strappano cavi di rete, ecc.).

Sicurezza delle applicazioni

Quando parlo di sicurezza delle applicazioni mi riferisco alla capacità di un software applicativo di proteggere sé stesso da un utilizzo inappropriato, involontario o doloso che sia. In linea di massima questo è un aspetto che riguarda principalmente chi realizza l’applicazione e coinvolge le diverse fasi dello sviluppo del software. Un’applicazione che non viene adeguatamente testata e collaudata sarà molto probabilmente soggetta a malfunzionamenti ed abusi. L’aspetto principale che riguarda la sicurezza di un’applicazione ha a che fare con la sua interazione con l’utente nella fase di ricezione di un input: un’applicazione che processa i dati ricevuti dall’esterno senza preventivamente controllarne la correttezza formale rischia di produrre risultati inattesi e, a volte, di esporre dati riservati. L’esempio più classico che si fa per spiegare questo aspetto è il mancato controllo di un dato che deve poi essere inserito in un database: un utente malintenzionato può inserire delle sequenze di caratteri che, caricate nel database senza la dovuta “sanificazione”, producono la cosiddetta SQL injection. Una SQL injection può comportare l’estrazione dal database di dati che dovrebbero essere confidenziali e disponibili solo per l’uso interno dell’applicazione (dati personali, email, password e così via).

Non voglio dilungarmi troppo sugli accorgimenti che si devono adottare per far sì che un’applicazione sia adeguatamente protetta, ma non posso non ribadire il fatto che la sicurezza non è una condizione definitiva quanto piuttosto uno stato verso il quale tendere con il passare del tempo. Questo implica che, nel ciclo di vita di un’applicazione, debbano esserci fasi periodiche di verifica e correzione al fine di tappare le falle che inevitabilmente vengono fuori durante l’utilizzo. Troppo spesso assistiamo, purtroppo, a software che vengono messi sul mercato in fretta e furia e che poi vengono abbandonati dagli sviluppatori pur rimanendo di uso comune, fino a diventare bersaglio preferito da chi ne ha individuato le vulnerabilità. A tal proposito non posso fare a meno di osservare che le applicazioni open source sono mediamentepiù longeve e più sicure di quelle proprietarie proprio perché chiunque può decidere di “adottarle” e continuare a svilupparle per migliorarle.

Sicurezza del sistema operativo

Quando parliamo di sistema operativo ci riferiamo al software di base che permette il funzionamento di un determinato dispositivo e che fornisce l’ambiente di esecuzione per le applicazioni utente. Sistemi operativi diversi affrontano la sicurezza in maniera diversa, e possiamo senz’altro dire che ci sono sistemi operativi più sicuri di altri. I sistemi operativi più evoluti, praticamente tutti quelli attualmente più diffusi e non di nicchia, forniscono diversi meccanismi di sicurezza e diversi livelli di accesso in modo tale da regolare le modalità con cui le diverse applicazioni accedono alle risorse (sia hardware che software) del dispositivo. Tuttavia anche un sistema operativo è un software, e come tale è soggetto a bug e vulnerabilità. Proteggere un sistema operativo vuol dire adottare ulteriori accorgimenti che lo rendono più robusto; tra questi possiamo citare i diversi framework di sicurezza (SELinux, AppArmor, ecc.), opportune “patch” per irrobustire il kernel (ad esempio GRSec), oppure sistemi di prevenzione e/o rilevazione delle intrusioni (i cosiddetti HIDS). Ci sono poi i più comuni software antivirus, principalmente destinati a quei sistemi operativi notoriamente più soggetti a questo tipo di attacco (cioè Windows) e software che cercano di capire se una data applicazione sta tentando di fare qualcosa che non dovrebbe (i vari sistemi di endpoint security).

Sicurezza della rete

Al giorno d’oggi un dispositivo non connesso in rete è praticamente inutile. Sono passati ormai diversi decenni da quando le persone avevano il loro personal computer appoggiato sulla scrivania, senza scheda di rete, senza connessione internet, e con la pila di floppy disk o cdrom per l’installazione dei software di uso comune. A quei tempi i principali veicoli di infezione erano proprio i dispositivi di memorizzazione che le persone si scambiavano per veicolare software e informazioni; gli antivirus venivano distribuiti anch’essi tramite floppy o cd e la velocità con cui si diffondevano le infezioni era infinitamente minore rispetto a quella attuale. Ora invece qualsiasi oggetto è connesso ad Internet, dal personal computer allo smartphone, dalla tv al sistema di videosorveglianza, per non parlare dei dispositivi IoT e per la domotica, e la possibilità di accesso abusivo a questi apparati è estremamente elevata.

A tale scopo, le reti casalinghe come quelle aziendali sono tipicamente dotate, con le dovute differenze e proporzioni, di sistemi che limitano in qualche modo l’accesso ai dispositivi considerati “privati” o interni. In linea di massima ognuno di noi ha in casa un router che “nasconde” la rete interna al resto di internet, mentre le aziende sono dotate di più sofisticati apparati di sicurezza. Lo scopo è quello di impedire l’ingresso non autorizzato alla rete e di controllare invece quelli che sono gli accessi permessi. I firewall hanno proprio la funzione di distinguere quali connessioni permettere e quali no, e quelli più moderni sono anche in grado di “osservare” il traffico di rete al fine di individuare il passaggio di dati anomali o tentativi di esfiltrazione di dati riservati. Oltre ai firewall, è d’obbligo citare dispositivi di rilevamento o prevenzione delle intrusioni (i cosiddetti NIDS, Network Intrusion Detection Systems, o NIPS, Network Intrusion Prevention System). A questi strumenti di sicurezza che possiamo definire attiva, si aggiungono anche quelle applicazioni e apparati che invece collezionano e analizzano i dati relativi agli eventi che si verificano nella rete, al fine di rilevare eventuali comportamenti anomali. Tra questi strumenti ci sono sia i software di monitoraggio, che tengono traccia delle performance e della disponibilità degli apparati, sia i sistemi di logging, sia i cosiddetti SIEM (Security Information and Event Manager) che collezionano e conservano in maniera centralizzata messaggi di log, informazioni sulle performance e anche “copie” del traffico che ha attraversato la rete.

Sicurezza dei dati

I dati rappresentano la parte fondamentale dei sistemi informatici; in fin dei conti l’informatica e le reti sono nate proprio per poter memorizzare, scambiare ed elaborare una sempre maggiore quantità di dati nel minor tempo possibile. I dati trattati da un ente o un’azienda andrebbero classificati in base alla loro importanza e criticità, e in funzione di ciò andrebbero stabiliti diversi criteri di accesso. La sicurezza dei dati sta proprio nell’assicurare il rispetto di questi criteri, garantendo che nessuna persona non autorizzata possa accedere agli stessi, sia in forma statica che durante la loro trasmissione ed elaborazione. A tale scopo gioca un ruolo fondamentale la cifratura, che deve essere sufficientemente robusta da resistere agli attacchi cosiddetti a forza bruta. Il resto dei meccanismi di protezione è demandato al software che si occupa di gestire i dati, e riguarda sia i sistemi operativi che le applicazioni e gli apparati di rete.

Consapevolezza dell’utente

Qualunque sistema informatico, qualunque sia il suo livello di sicurezza, non può nulla contro l’impreparazione, la pigrizia o l’ignoranza dell’utente finale. Davanti ad un utente, ad esempio un impiegato, che utilizza sempre la stessa password per accedere sia ad applicazioni critiche che a giochi on-line di dubbia sicurezza, anche il più sicuro dei sistemi può fare ben poco. Lo stesso vale per quegli utenti che non vengono educati a ragionare prima di cliccare su un link ricevuto tramite un messaggio di posta elettronica da un mittente sconosciuto. Si è infatti osservato che gli attacchi che sfruttano l’ingegneria sociale, oltre ad essere molto più rapidi ed economici per i malintenzionati, sono anche quelli che hanno la maggiore percentuale di successo. A meno di non voler violare proprio uno specifico sistema, la tecnica di “sparare nel mucchio” per rastrellare account di accesso a sistemi bancari o direttamente i dati delle carte di credito risulta essere ancora estremamente redditizia.

Per i motivi appena illustrati, l’educazione ed il continuo aggiornamento degli utenti finali non può essere omessa da una strategia di sicurezza efficace, altrimenti è praticamente inutile spendere centinaia di migliaia o milioni di euro per accaparrarsi gli ultimi rimedi per la cyber security.

Conclusioni

Avevo promesso di trattare l’argomento in maniera generica e spero di esserci riuscito, sperando di non aver generato ulteriore confusione su un argomento tutt’altro che semplice. Il fatto di poter suddividere il settore della sicurezza informatica in livelli ed ambiti piuttosto diversi tra loro comporta che, soprattutto nelle grandi aziende, ciascun aspetto sia gestito da un team dedicato. Infatti si potranno distinguere quelli che si occupano dei sistemi operativi e del loro hardening, quelli che si occupano delle applicazioni (dallo sviluppo, alla manutenzione, al monitoraggio), quelli che si occupano della sicurezza della rete e, infine, quelli che si occupano di osservare e analizzare i dati raccolti durante il normale esercizio per scovare le anomalie, individuare le violazioni e, se possibile, risalire ai responsabili.

Nelle prossime settimane spero di trovare il tempo per dedicare qualche articolo agli aspetti che, per lavoro, mi riguardano più da vicino, vale a dire la messa in sicurezza della rete e dei sistemi server.

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi