Mostra tutti

Le vulnerabilità dei sistemi informatici e della rete – Storia ed analisi

Le vulnerabilità dei sistemi informatici e della rete – Storia ed analisi

La vulnerabilità può essere intesa come una componente (esplicita o implicita) di un sistema, in corrispondenza alla quale le misure di sicurezza sono assenti, ridotte o compromesse, il che rappresenta un punto debole del sistema e consente a un eventuale aggressore di compromettere il livello di sicurezza dell’intero sistema. Particolarmente importanti sono le vulnerabilità dei sistemi informatici nei confronti di hacker o cracker.

La vulnerabilità può essere altresì riferita a persone, individui singoli o gruppi di individui (gruppi o comunità di vulnerabili).

Una vulnerabilità è costituita da tre fattori: una falla nel sistema, l’accesso dell’attaccante a quest’ultima, e la capacità di sfruttarla una volta acceduto

Le vulnerabilità si possono presentare a qualsiasi livello di un sistema informatico, ne esistono principalmente di due tipi:

  1. Vulnerabilità software (bug software): Si presenta ovunque ci sia un difetto di progettazione, codifica, installazione e configurazione del software. Le vulnerabilità software dovute a difetti di progettazione e codifica sono causate principalmente dalla mediazione incompleta dei dati forniti in input direttamente dall’utente e mancanza di controlli di sistema; un esempio classico è il buffer overflow, che permette ad un attaccante di inserire un volume di dati superiore alla dimensione prestabilita e riversare i dati in eccesso nello stack, sovrascrivendo l’instruction pointer che potrebbe puntare ad un programma (tipicamente uno Shellcode) opportunamente creato per compiere effetti indesiderati.
  2. Vulnerabilità dei protocolli: si manifestano quando i protocolli di comunicazione non contemplano il problema legato alla sicurezza; l’esempio classico di vulnerabilità consiste nel permettere una connessione in chiaro (non crittografata) consentendo a possibili malintenzionati di intercettare le informazioni scambiate (eavesdropping) (es. Telnet). Il fatto che la documentazione (RFC) che descrive come questi protocolli debbano essere implementati sia pubblicamente disponibile permette ai possibili attaccanti e alle possibili vittime di conoscerne le debolezze. Tuttavia è altresì semplice scoprire le vulnerabilità di un protocollo, le cui specifiche non sono pubbliche, tramite procedure di reverse engineering del protocollo stesso. In tal caso, però, la vittima non è a conoscenza delle debolezze del protocollo e non ha strumenti per difendersi.

Le vulnerabilità quindi non compromettono un sistema, ma se utilizzate da quella che viene definita una minaccia (azione indesiderata) possono trasformarsi in un evento indesiderato.

Si possono trovare vulnerabilità anche in ambito hardware. La presenza di umidità, polvere, sporco e supporti di memorizzazione non protetti, possono causare perdita di informazioni.

In ambito umano e sociale la vulnerabilità può essere definita come segue (definizione del IFRC):

“la vulnerabilità è un concetto dinamico e relativo, in stretta relazione con la capacità di un individuo o di una comunità di far fronte in un determinato momento a particolari minacce. La vulnerabilità può essere associata a certi elementi specifici della povertà, ma è anche propria di individui isolati, in situazioni di insicurezza ed indifesi da rischi, da shock e stress”.

Con questa accezione, in ambito sociale, possono essere definiti i “gruppi vulnerabili” come: “persone o gruppi di persone esposte a situazioni che minacciano la loro sopravvivenza o la loro attitudine a vivere con un minimo di sicurezza sociale ed economica e di dignità umana“, come ad esempio in caso di anziani, disabili, immigrati, minori, donne in difficoltà, carcerati, tossicodipendenti, pazienti ospedalizzati, etc.

Nel corso degli  anni è stato creato un gran numero di worm di rete in grado di sfruttare vulnerabilità nei sistemi informatici e nella rete internet; tra di essi, uno dei più noti è di sicuro CodeRed.

Codered

CodeRed è stato rilevato, per la prima volta, il 17 luglio del 2001; secondo alcune stime, tale worm ha complessivamente infettato circa 300.000 computer, impedendo, di fatto, ad una moltitudine di imprese, di condurre le normali attività di business; in tal modo, esso ha causato considerevoli danni finanziari ad un elevato numero di società, ubicate in vari paesi. Nonostante Microsoft abbia rilasciato, assieme al Security Bulletin MS01-033, un’apposita patch destinata a chiudere la vulnerabilità utilizzata dal suddetto worm di rete, alcune versioni di CodeRed continuano tuttora a diffondersi attraverso Internet. Gli effetti del virus includevano il Defacing che consiste nel cambiare illecitamente la home page di un sito web (la sua “faccia”) o modificarne, sostituendole, una o più pagine interne.

Un sito che è stato oggetto di questo tipo di deface vede sostituita la propria pagina principale, spesso insieme a tutte le pagine interne, con una schermata che indica l’azione compiuta da uno o più cracker. Le motivazioni di tale atto vandalico possono essere di vario tipo, dalla dimostrazione di abilità a ragioni ideologiche. Le tecniche utilizzate per ottenere i permessi di accesso in scrittura al sito sfruttano solitamente i bug presenti nel software di gestione del sito oppure nei sistemi operativi sottostanti; più raro il caso di utilizzo di tecniche di ingegneria sociale.

In Italia il defacing si traduce in tre tipi di reato grave previsti dal Codice Penale, quelli di accesso abusivo ad un sistema informatico e di diffamazione.

Il worm di rete Spida

Individuato quasi un anno dopo la comparsa di CodeRed, utilizzava, per la propria diffusione, un’exposure in MS SQL. Alcune installazioni standard del server MS SQL, in effetti, non proteggevano tramite apposita password l’account di sistema “SA”, permettendo così a chiunque avesse accesso al sistema attraverso la rete di eseguire comandi arbitrari all’interno dello stesso. Utilizzando tale esposizione, il worm configura l’account “Guest” in maniera tale da ottenere il pieno accesso ai file custoditi nel computer; in seguito, esso provvede all’upload di se stesso sul server da infettare.

Il worm di rete Slammer

Rilevato alla fine del mese di gennaio 2003, si avvaleva di un metodo ancor più semplice per generare l’infezione informatica sui computer provvisti di sistema operativo Windows e relativo server MS SQL; si trattava, nella fattispecie, dello sfruttamento di una vulnerabilità a livello di buffer overflow in una delle subroutine di elaborazione dei pacchetti UDP. Nonostante il worm risultasse di dimensioni relativamente limitate – 376 byte in tutto – ed utilizzasse il protocollo di comunicazione UDP, preposto alla rapida trasmissione di piccoli volumi di dati, Slammer riusciva ugualmente a diffondersi ad una velocità incredibile.Secondo alcune stime, il worm Slammer ha infettato all’incirca 75.000 computer in tutto il mondo nei primi 15 minuti in cui si è sviluppata l’epidemia informatica in questione.

I tre noti worm di rete qui sopra menzionati si basavano sullo sfruttamento di vulnerabilità ed esposizioni individuate in programmi eseguiti in varie versioni di Microsoft Windows, mentre il worm Lovesan, rilevato l’ 11 agosto del 2003, utilizzava, per diffondersi, una vulnerabilità ben più pericolosa, a livello di buffer overflow, in uno dei principali componenti dello stesso Windows. Tale vulnerabilità è stata dettagliatamente descritta nel Microsoft Security Bulletin MS03-026.

Sasser

Comparso per la prima volta nel mese di maggio del 2004, sfruttava un’ulteriore vulnerabilità individuata in un componente del kernel di Windows, ovvero nel servizio denominato Local Security Authority Subsystem Service (LSASS). Le informazioni relative alla suddetta vulnerabilità sono state pubblicate nel Microsoft Security Bulletin MS04-011. Sasser si diffondeva in maniera fulminea; tale worm di rete ha provocato l’infezione di milioni di computer in tutto il mondo, causando enormi perdite finanziarie. Nella circostanza, molte organizzazioni, società ed istituzioni si sono viste costrette a sospendere le loro attività, a causa delle prolungate interruzioni nel funzionamento dei relativi network, causate dal worm.

Tutti i sistemi operativi contengono vulnerabilità ed esposizioni, le quali possono essere prese di mira da hacker e autori di virus, per perseguire i propri scopi.

Le vulnerabilità nel mondo UNIX

Nel mondo UNIX si incontrano numerose altre vulnerabilità, di frequente utilizzo, rilevate in pacchetti software quali SSH, Apache, WU-FTPD, BIND, IMAP/POP3, così come in varie parti del kernel dell’OS.

Il servizio “finger” non solo può rivelare importanti informazioni riguardo al server sul quale esso è ospitato, ma ha anche rappresentato il target di numerosi exploit; uno di essi veniva addirittura utilizzato dal primissimo worm di rete comparso nella storia del malware, creato da Robert Morris e rilasciato il 2 novembre del 1988. Per tale motivo, la maggior parte degli attuali pacchetti di distribuzione dell’OS UNIX viene fornita con il servizio “finger” disabilitato.

Il programma “Sendmail”, originariamente creato da Eric Allman, rappresenta un ulteriore esempio di target particolarmente popolare presso le folte schiere degli hacker. Sendmail è stato appositamente sviluppato per gestire la trasmissione dei messaggi di posta elettronica attraverso Internet. A causa del gran numero di sistemi operativi e relative configurazioni hardware esistenti, Sendmail è progressivamente divenuto un software estremamente complesso, accompagnato da una lunga e ben nota “storia” di vulnerabilità critiche in esso rilevate. Lo stesso worm Morris – citato in precedenza – utilizzava, per diffondersi, un exploit in grado di sfruttare una vulnerabilità individuata nel programma Sendmail, oltre che, come abbiamo visto, una specifica falla di sicurezza presente nel servizio “finger”.

Inevitabilmente, tutti i sistemi operativi contengono vulnerabilità ed esposizioni, le quali possono essere prese di mira da hacker e virus writer, per perseguire i propri scopi. Sebbene le vulnerabilità individuate in Windows acquisiscano maggiore risalto e notorietà, visto l’enorme numero di computer sui quali è installato tale sistema operativo, occorre rilevare come anche l’OS UNIX presenti i propri punti deboli.

Per anni, nel mondo UNIX, una delle esposizioni più popolari è risultata essere il servizio “finger”. Si tratta, più precisamente, di un servizio che consente agli utenti che si trovano all’esterno di una rete di vedere chi è connesso, in quel preciso momento, a tale network, oppure da quale location gli utenti stanno accedendo al computer, nonché quali risorse di rete vengono utilizzate. Il servizio “finger” è indubbiamente utile, ma, al tempo stesso, può rivelare – o per meglio dire “esporre” – una grande quantità di informazioni che possono essere sfruttate dagli hacker.

Qui di seguito, un esempio di come appaiono i risultati forniti da un report remoto, ottenuto tramite il servizio “finger”:

vulnerabilità, sistemi informatici,

La tabella qui sopra inserita evidenzia come, per tutti coloro che sono in grado di utilizzare il server “finger”, risultino disponibili le seguenti informazioni: vi sono tre utenti collegati in rete, ma due di essi sono rimasti inattivi per più di due giorni, mentre il terzo si è allontanato dal proprio computer da circa 22 minuti. I nomi di login mostrati dal servizio “finger” possono essere utilizzati per testare combinazioni di login/password. Di fatto, questo è il metodo più elementare per penetrare all’interno del sistema informatico preso di mira, visto che numerosi utenti scelgono la propria password basandosi esclusivamente sul loro username (aggiungendo, ad esempio, alcune cifre dopo il nome di login).

Il servizio “finger” non solo può rivelare importanti informazioni riguardo al server sul quale esso è ospitato, ma ha anche rappresentato il target di numerosi exploit; uno di essi veniva addirittura utilizzato dal primissimo worm di rete comparso nella storia del malware, creato da Robert Morris e rilasciato il 2 novembre del 1988. Per tale motivo, la maggior parte degli attuali pacchetti di distribuzione dell’OS UNIX viene fornita con il servizio “finger” disabilitato.

Il programma “Sendmail”, originariamente creato da Eric Allman, rappresenta un ulteriore esempio di target particolarmente popolare presso le folte schiere degli hacker. Sendmail è stato appositamente sviluppato per gestire la trasmissione dei messaggi di posta elettronica attraverso Internet. A causa del gran numero di sistemi operativi e relative configurazioni hardware esistenti, Sendmail è progressivamente divenuto un software estremamente complesso, accompagnato da una lunga e ben nota “storia” di vulnerabilità critiche in esso rilevate. Lo stesso worm Morris – citato in precedenza – utilizzava, per diffondersi, un exploit in grado di sfruttare una vulnerabilità individuata nel programma Sendmail, oltre che, come abbiamo visto, una specifica falla di sicurezza presente nel servizio “finger”.

Una vulnerabilità può essere causata da:

  • Complessità: Sistemi informatici molto grandi e complessi, possono essere causa di falle e involontari punti di accesso.
  • Standardizzazione: Utilizzare codice, software, sistemi operativi e hardware comunemente diffusi e popolari, aumenta la possibilità che un hacker possa saperne i punti deboli e sfruttarli.
  • Connettività: Più sono presenti porte, protocolli, privilegi, connessioni fisiche e servizi, e più il tempo in cui queste sono accessibili, più è probabile la presenza di un attacco.
  • Password: L’utente utilizza password deboli, facilmente soggette a password cracking attraverso il metodo “forza bruta”, oppure utilizza troppo spesso la stessa password  o la memorizza nel computer.
  • Sistemi operativi basilari: Certi sistemi operativi permettono agli utenti e ai programmi un ampio accesso alle risorse, permettendo tutto ciò che non è stato esplicitamente negato. Questa politica, sebbene più funzionale, permette a virus e malware di eseguire comandi a livello amministratore.
  • Navigazione in Internet: Certi siti possono contenere Spyware o Adware che vanno ad infettare il dispositivo, rubando informazioni personali.
  • Bug Software: In un programma viene lasciato un bug. Questo potrebbe essere sfruttabile per un possibile attacco all’applicazione.
  • Mancanza di controllo degli Input: Un programma può assumere che tutti gli input dell’utente siano sicuri, permettendo la diretta esecuzione di programmi e istruzioni SQL, causando Buffer overflow, SQL injection o vulnerabilità di formato della stringa.
  • Non imparare dagli errori:  Quando un programmatore ripete gli stessi errori in nuovi programmi, aumenta la possibilità che questi siano conosciuti e quindi attaccabili. Si veda, ad esempio, le vulnerabilità nei protocolli IPv4, scoperte essere ancora presenti nei nuovi IPv6.

Scoprire una vulnerabilità

La scoperta di una vulnerabilità (vulnerability disclosure) è la segnalazione di una falla in un computer a livello software o hardware. Solitamente, gli sviluppatori aspettano una patch che risolva il problema prima di poter rendere la vulnerabilità pubblica.

Possibili tipi di scoperta sono:

  • Self-disclosure: Quando lo sviluppatore stesso scopre la vulnerabilità e la rende pubblica assieme alla patch
  • Third-party disclosure: Una figura terza all’azienda e agli acquirenti (solitamente un ricercatore in sicurezza) denuncia la vulnerabilità scoperta, solitamente ad un’organizzazione come il CERT.
  • Vendor disclosure: Quando la falla viene riportata dai ricercatori solamente agli sviluppatori.
  • Full disclosure: La vulnerabilità viene esposta pubblicamente al momento della scoperta.

Una vulnerabilità potrebbe anche essere scoperta, ma mai segnalata: questa diventa una vulnerabilità definita 0-day. Questa tipologia ha creato un vero e proprio mercato. Le 0-day sono infatti facilmente vendibili in anonimato e senza bisogno di intermediari.

Qui troverai tutte le  informazioni sui nostri servizi di Consulenza sulla Sicurezza Informatica & Cyber Security

libro vita da hacker