Sei sulla pagina 1di 158

Sicurezza dei programmi

Introduzione
I programmi costituiscono gran parte di un sistema informativo La protezione dei programmi perci al cuore della sicurezza informatica Due domande fondamentali:
Come possibile prevenire la presenza di difetti in un programma? Come possibile proteggere le risorse informatiche da programmi che contengono difetti?

Sicurezza dei programmi

PROGRAMMI SICURI

Cos un programma?
Un insieme di istruzioni per il calcolatore. Esempi:
Il sistema operativo I driver delle periferiche Linfrastruttura di rete I sistemi di gestione delle basi di dati (DBMS) Gli applicativi (il browser Web, programmi di videoscrittura, programmi di calcolo e simulazione, )

Cos un programma sicuro?


Un programma sicuro se abbiamo un certo grado di fiducia nel fatto che il programma garantisca la riservatezza, lintegrit e la disponibilit che ci si aspetta Valutare la sicurezza del programma un procedimento analogo a valutarne la qualit in generale.

Terminologia: difetto e malfunzionamento


Innanzi tutto importante definire una terminologia condivisa.

Difetto (fault): passaggio, comando, o definizione dei dati non corretto in un programma per computer. Malfunzionamento: deviazione dal comportamento richiesto del sistema. Quindi un difetto rappresenta il punto di vista interno, quello dello sviluppatore: la causa.

Terminologia: difetto e malfunzionamento


Il malfunzionamento rappresenta il punto di vista esterno (utente): leffetto del difetto. Non sempre un difetto si traduce in (uno o pi) malfunzionamenti.
Esempio: il codice difettoso non viene mai eseguito.

La qualit dipende dal punto di vista


Limportanza delle caratteristiche di qualit (sicurezza) dipende da chi sta analizzando il software.

possibile avere divergenze nelle accezioni.


Il programma sicuro perch necessario troppo tempo per la violazione dei controlli di protezione; Il programma sicuro perch stato eseguito per un certo periodo di tempo senza malfunzionamenti; Atteggiamento estremista: qualsiasi potenziale errore nel raggiungimento dei requisiti di sicurezza rende il codice insicuro.

La qualit dipende dal punto di vista


possibile avere divergenze negli obiettivi:
Punto di vista del responsabile del progetto: il sistema sicuro se soddisfa i requisiti di sicurezza, indipendentemente dal fatto che questi siano efficaci.
Esempio: tutte le macchine dotate di lucchetto, ma la chiave la stessa per tutti i lucchetti!

La sicurezza complessa
Non esistono tecniche per eliminare o gestire tutte le falle di sicurezza
La sicurezza per sua natura una questione complessa, che spesso entra in conflitto con usabilit e prestazioni

La sicurezza complessa: motivazioni


1. Complessit del sistema:
I requisiti vengono definiti in termini di cosa fare La sicurezza riguarda la prevenzione: necessario definire cosa non fare quasi impossibile definire tutti i requisiti
Anche se fosse possibile definire tutti i requisiti, in un sistema grande e articolato le interazioni tra i vari moduli accadono in un numero di modi che non gestibile. Lesame e la verifica vengono allora fatti per i casi pi probabili, non esaustivamente.

La sicurezza complessa: motivazioni


In sintesi la dimensione e la complessit del sistema software impediscono una prevenzione e mediazione completa delle falle.

2. Evoluzione tecniche di programmazione: la programmazione e le tecniche di ingegneria del software cambiano e si evolvono molto pi rapidamente delle tecniche di sicurezza informatica.

Non tutto perduto


La sicurezza informatica ha molto da offrire ai programmi.
Comprendendo cosa pu andare storto e come proteggersi da tale evento, possiamo ideare strumenti e tecniche di protezione.

Sicurezza dei programmi

ERRORI DI PROGRAMMA NON MALEVOLI

Errare humanum est


I programmatori e gli analisti commettono degli errori, spesso n intenzionali, n malevoli. Molti di essi provocano malfunzionamenti, ma non portano a vulnerabilit serie. Alcune classi di errori hanno costituito comunque un grosso problema per la sicurezza e continueranno a costituirlo: a) Buffer overflow b) Mediazione incompleta c) Errori dovuto allo scarto fra tempo di controllo e tempo di utilizzo

Errori di programma non malevoli

BUFFER OVERFLOW

Buffer overflow
Un buffer (o array o stringa) uno spazio di memoria in cui possono essere memorizzati dei dati. La memoria finita, quindi la capacit del buffer finita. In molti linguaggi necessario dichiarare la dimensione del buffer in modo che il compilatore possa riservare la memoria necessaria

Buffer overflow: esempio 1


Lindice si trova fuori dai limiti. Il compilatore pu rilevare il difetto in fase di compilazione
gcc non lo rileva Java lo rileva
int main() { char sample[10]; sample[10]='B'; return 0; }

Ci nonostante

Buffer overflow: esempio 2


Lindice si trova fuori dai limiti. Questo difetto pu essere rilevato solo in fase di esecuzione (runtime). Lambiente di esecuzione potrebbe rilevare lerrore ed impedire lesecuzione della riga errata:
gcc non lo rileva Java lo rileva

int main() { char sample[10]; int i; for(i=0; i<11; i++) sample[i]='B'; }

Il modulo di rilevazione dellerrore utilizza risorse (memoria e tempo) per proteggersi da un problema che capita abbastanza di rado. In alcuni caso potremmo non permetterci il dispendio aggiuntivo di risorse (ad esempio, programmi in tempo reale). Anche se volessimo spendere risorse per questo controllo

Buffer overflow: esempio 3 (1)


Il codice di rilevazione limite di un array non pu rilevare il seguente difetto.
int main() { char sample[] = "Hello world!"; char* p; int i; p = sample; for(i=0; i<40*1000; i++) { if(*p > 0) putchar(*p); p++; } }

Buffer overflow: esempio 3 (2)


Posso potenzialmente leggere e scrivere da qualsiasi locazione di memoria! In realt il sistema operativo non mi permette un accesso indiscriminato (Segmentation fault) Sistemi operativi snelli non effettuano il controllo In ogni caso ho ottenuto una serie di informazioni

Buffer overflow: implicazioni per la sicurezza


Supponendo che non venga eseguito un controllo, le implicazioni per la sicurezza potrebbero essere molteplici, a seconda delle informazioni che seguono lo spazio allocato.
Dati dellutente
A A A A A A A A A B

Dati dellutente
A A A A A A A A A

Codice del programma utente


B

Dati dellutente
A A A A A A A A A

Dati di sistema
B

Dati dellutente
A A A A A A A A A

Codice del programma di sistema


B

Buffer overflow nel passaggio di parametri


Se i parametri per la routine vengono passati da input, possibile provocare un buffer overflow. Esempio:
http://www.somesite.com/subpage/userinput.asp? parm1=(808)555-1212&parm2=2009Jan17

Cosa accade se il numero di telefono fornito ha 1000 caratteri? Crash del programma? possibile sfruttare il crash?

Buffer overflow: riassunto


possibile rilevarlo/prevenirlo attraverso il compilatore o lambiente di esecuzione (Java). I moduli di rilevazione e prevenzione hanno un costo (memoria, tempo). Se non rilevato/prevenuto pu permettere la scrittura di dati a piacimento! I buffer overflow esistono da quando sono stati creati i linguaggi di programmazione di alto livello con gli array.

Buffer overflow: riassunto


Per lungo tempo hanno rappresentato solo un picollo fastidio per utenti e programmatori, una causa di errori e di crash di sistema.
Abbastanza di recente, per, gli aggressori li hanno utilizzati come veicoli per provocare prima un crash del sistema e poi un malfunzionamento controllato con serie implicazioni per la sicurezza.

Errori di programma non malevoli

MEDIAZIONE INCOMPLETA

Mediazione incompleta
Riprendiamo lesempio del sito Web
http://www.somesite.com/subpage/userinput.asp? parm1=(808)555-1212&parm2=2009Jan17

Cosa accadrebbe se fosse specificato 1800Jan01? O 1800Feb30? O 2048 Min32?

Mediazione incompleta
Potrei anticipare il problema del buffer overflow, inserendo dei controlli lato client (il browser) La data potrebbe essere specificata solo selezionando controlli predefiniti Ci non impedisce di realizzare una richiesta HTTP manuale, digitando lindirizzo direttamente nel browser. In questo caso si dice che i valori dei dati non sono completamente mediati: i dati critici si trovano in una condizione esposta, non controllata.

Implicazioni per la sicurezza


Per meglio comprendere le implicazioni per la sicurezza dovute alla mediazione incompleta, consideriamo il seguente esempio. Supponiamo che la richiesta HTTP per la conferma e pagamento di un ordine sia la seguente: http://www.things.com/order.asp?part=555& price=10&quantity=5&total=50 Normalmente lutente utilizza il sito di e-commerce dellazienda e non genera una richiesta manuale.

Implicazioni per la sicurezza


Ci per non impedisce di confezionare una richiesta malevola come: http://www.things.com/order.asp?part=5 55&price=10&quantity=5&total=20 Lesempio realmente accaduto! Come si risolve? Non necessario avere il prezzo unitario, n il totale: sufficiente avere il codice del prodotto e la quantit!

Errori di programma non malevoli

SCARTO FRA TEMPO DI CONTROLLO E TEMPO DI UTILIZZO

Falla TOCTTOU
Per migliorare lefficienza, i processori e i sistemi operativi moderni possono cambiare lordine di esecuzione di istruzioni e procedure.
Ad esempio, lesecuzione di istruzioni consecutive di una procedura possono essere inframezzate da istruzioni di altre procedure (multi-tasking).

La falla Time-Of-Check To Time-Of-Use (TOCTTOU, tock too) dovuta allo scarto di tempo tra la verifica dellautorizzazione a compiere unazione e lesecuzione dellazione stessa.

Falla TOCTTOU
Se i dati di autorizzazione non vengono utilizzati direttamente e, nellattesa di essere utilizzati, sono disponibili per la modifica, allora si verifica la falla.
Esempio: una persona compra una statua che costa 100
1. 2. 3. 4. Lacquirente estrae 5 banconote da 20, le conta davanti al venditore e le lascia sul tavolo. Il venditore si gira e prende la statua. Lacquirente riprende una banconota mentre il venditore girato. Il venditore si gira, prende il denaro e porge la statua allacquirente, che esce dal negozio.

TOCTTOU: esempi
Esempio: accesso ad un file
1. Lutente X vuole leggere il file file_di_X 2. Viene confezionata una richiesta di accesso [X, file_di_X, lettura, ?] e sottoposta a controllo 3. Laccesso viene permesso [X, file_di_X, lettura, OK] 4. Prima di essere utilizzata, la richiesta di accesso viene modificata [X, file_nascosto, modifica, OK] 5. La richiesta di accesso viene utilizzata nella versione modificata, permettendo operazioni negate.

Come evitarla?
Per evitare la falla sarebbe necessario utilizzare i dati di permesso immediatamente o evitare di esporli durante lattesa dellutilizzo.
Se ci non fosse possibile (multi-tasking), si potrebbe aggiungere un checksum ai dati di permesso, che lentit emittente possa verificare in modo da poterne rilevare la modifica.

Combinazione di falle
Ognuna delle tre falle precedenti abbastanza grave singolarmente. Tuttavia laggressore intelligente utilizza le falle come mattoni per la costruzione di un attacco complesso. Per questo motivo occorre conoscere e proteggersi anche dalle falle pi semplici. Le falle di programma allapparenza innocue possono essere sfruttate da aggressori malevoli per introdurre codice dannoso! (virus)

Sicurezza dei programmi

VIRUS E ALTRO CODICE MALEVOLO

Attivit silente
La maggior parte del lavoro svolta da un programma invisibile agli utenti. Ad esempio:
Conoscete la forma in cui viene memorizzato un documento? Quali file vengo creati e modificati da un elaboratore di testi quando create un documento?

Per questa ragione, poich lutente non vede direttamente i dati utilizzati dal computer, gli eventuali aggressori informatici possono utilizzare programmi come veicoli per la modifica di dati o di altri programmi.

Come avviene linfezione?


Quando si installa un pacchetto software
elaboratore di testi, plug-in da Internet, giochi,

si esegue un comando generalmente chiamato INSTALL o SETUP. Da qui in poi il programma di installazione prende il controllo
crea, modifica, elimina e rinomina i file che gli sono necessari.

A parte la (generica) documentazione di installazione fornita, lutente non ha idea di quali regalini abbia ricevuto in seguito allinstallazione.

Come avviene linfezione?


Si spera che siano tutti buoni, ma tra di essi possibile nascondere del codice malevolo che viene installato senza che lutente ne abbia percezione.
importante conoscere la fonte del software che installiamo!

Cosa pu fare il codice malevolo?


Il codice malevolo di fatto un programma e pu quindi fare qualsiasi cosa in grado di fare un programma
Scrivere un messaggio sullo schermo Terminare lesecuzione di un programma Modificare/cancellare un file archiviato

Pu anche insediarsi e rimanere inattivo fino a che non si verifica una condizione di innesco:
Un orario o data predefinita Un evento (per esempio, lesecuzione di un programma) Un conteggio Una combinazione di eventi

Cosa pu fare il codice malevolo?


Il codice malevolo inoltre viene eseguito sotto lautorit dellutente corrente:
Pu entrare in contatto con tutto ci con cui a contatto lutente e nello stesso modo. Pu quindi aggiungere, modificare o eliminare qualsiasi dato dellutente, senza che sia necessario il suo esplicito consenso (una volta avviato).

Da quanto tempo esiste il codice malevolo?


I riferimenti ai comportamenti dei virus risalgono almeno al 1970
Lo studio di Ware nel 1970 (pubblicato nel 1979) e quello di Anderson per laeronautica militare statunitense descrivono in maniera ancora accurata minacce, vulnerabilit e falle di protezione dei programmi.

La novit oggigiorno il numero di istanze distinte e di copie di virus che sono comparse e scomparse, nonch la velocit con cui nasce il codice per il loro sfruttamento.

Zero day
Il rilascio di una patch di una vulnerabilit avviene secondo le seguenti fasi:
1. Una nuova vulnerabilit viene scoperta. 2. Il produttore viene a conoscenza della vulnerabilit. 3. Viene sviluppata la prova di concetto per dimostrare la vulnerabilit in una situazione controllata. 4. Il produttore sviluppa e distribuisce un rimedio (patch). 5. Gli utenti implementano la difesa.

Zero day
Qualcuno pu sferrare un attacco effettivo estendendo la prova di concetto o la definizione della vulnerabilit. Fintanto che gli utenti implementano la difesa prima dellattacco effettivo, non si registra alcun danno.
Viene definito giorno zero la data in cui il produttore viene a conoscenza della vulnerabilit.

Zero day
Un attacco che avvenga prima che il produttore conosca la vulnerabilit detto sfruttamento del giorno zero: zero day attack.
In senso pi generale, un zero day attack avviene prima della disponibilit della patch relativa.

Virus e altro codice malevolo

TIPI DI CODICE MALEVOLO

Tipi di codice malevolo


Virus: si unisce ad un programma e propaga copia di se stesso in altri programmi.
transitorio: eseguito solamente in associazione al programma ospite. residente: rimane sempre attivo e pu essere attivato come programma autonomo, dopo il termine del programma ospite.

Cavallo di Troia: codice che oltre al suo effetto primario presenta un secondo effetto malevolo non evidente.
esempio: script di login che, oltre alle operazioni standard, conserva una copia di nome utente e password per un utilizzo successivo.

Tipi di codice malevolo


Bomba logica: codice malevolo che scatta al verifica di una particolare condizione. Trapdoor o backdoor: caratteristica di un programma per accesso diverso dalla chiamata diretta.
esempio: programma bancario che, digitando il numero 990099 sul tastierino, mostra la registrazione delle operazioni effettuate sulla macchina.

Worm: come il virus, ma si diffonde solo attraverso la rete, mentre il virus pu utilizzare qualsiasi supporto. Il worm si diffonde come programma autonomo.

Tipi di codice malevolo


Coniglio (rabbit): virus o worm che si replica automaticamente senza limiti per esaurire le risorse.
Nel seguito utilizzeremo virus come termine generico per intendere qualsiasi codice malevolo.

Come si diffondono i virus?


Un virus eseguibile semplicemente residente su un disco non produce effetti. Affinch un virus inizi il suo lavoro malevolo e si diffonda deve essere attivato attraverso la sua esecuzione.
Il virus viene quindi associato ad un programma normale (il programma ospite) in modo tale da essere eseguito quando il programma ospite lanciato.
Esempio: virus nel CD di installazione di un programma: Lutente avvia il programma SETUP.EXE residente sul CD;

Come si diffondono i virus?


Da questo momento linfezione prosegue autonomamente.

Per avviare il processo di infezione necessario lintervento umano:


Un essere umano inserisce il virus nel supporto di distribuzione; Un essere umano avvia lesecuzione del programma a cui associato il virus.

Come si diffondono i virus?


Un mezzo comune per la diffusione del virus lallegato di posta elettronica.
In questo attacco laggressore deve convincere il destinatario del messaggio ad aprire lallegato. Una volta aperto, lallegato infetta il computer. Alcuni gestori di posta elettronica, nel tentativo di aiutare lutente, aprivano direttamente gli allegati alla sola lettura del messaggio, creando invece una falla di sicurezza.

Dove si posizionano nel programma ospite? Virus accodati


Il virus inserisce copia di s stesso prima della prima istruzione del programma ospite Allavvio del programma originale tutte le istruzioni del virus vengono eseguite per prime. Poi lesecuzione prosegue normalmente col programma originale. Semplice ed efficace:
lautore non deve sapere nulla del programma ospite Il programma ospite spesso serve solo da vettore per linfezione Lutente non percepisce la presenza del virus (il programma originale funziona normalmente)

Codice virale

Programma originale

Virus che circondano il programma


Il virus viene eseguito prima e dopo il programma originale. Questo permette al virus di intervenire sulloutput del programma originale. Ad esempio, un virus che infetta il programma che costruisce lelenco dei file su disco potrebbe intercettare loutput in modo da eliminare i riferimenti a se stesso e quindi non comparire allutente.
Codice virale Parte (a)

Programma originale

Codice virale Parte (b)

Virus integrati e sostituzioni


Il virus si integra nel codice originale del programma ospite. In questo modo diventa pi difficile da rilevare, ma lautore del virus deve conoscere lesatta struttura del programma ospite.

Programma originale

Codice virale

Programma modificato

Virus di documento
Si trova allinterno di un documento formattato (cio con una struttura) come:
Documento scritto (Word, Open Office Writer, ) Un database Una presentazione

Questi documenti sono infatti altamente strutturati e contengono:


dati (parole o numeri) e comandi (formule, controlli di formattazione, collegamenti, )

Virus di documento
I comandi sono parte di un ricco linguaggio di programmazione che comprende macro, variabili e procedure, accesso ai file e persino chiamate al sistema.
Sebbene quindi il virus di documento non sia codice direttamente eseguibile, sfrutta lambiente fornito dal programma di lettura del file per eseguire operazioni malevole.

Modifica dei puntatori


Negli esempi precedenti il virus si unisce ad un programma legittimo (modificandone il file)
Un virus pu anche modificare i puntatori nella tabella dei file per essere invocato al posto del programma legittimo

Virus e altro codice malevolo

LUOGHI IN CUI PU RISIEDERE UN VIRUS

Introduzione
Dal punto di vista del suo creatore, un virus dovrebbe
Essere difficile da rilevare; Non essere distrutto o disattivato facilmente; Diffondersi in modo ampio; Reinfettare il programma in cui si trova o altri programmi; Semplice da creare; Indipendente dalla macchina o dal sistema operativo.

Pochi virus soddisfano tutti questi criteri.

Introduzione
Inizialmente la sfida per lautore del virus era scrivere un codice che sarebbe stato eseguito ripetutamente per garantirne la diffusione.
Ora sufficiente un esecuzione singola per garantire la diffusione (i computer sono sempre connessi).
il virus spesso giunge come allegato di posta elettronica che lutente deve eseguire

Esaminiamo i luoghi in cui possibile che un virus risieda (dopo linstallazione) per procedere con linfezione.

Virus del settore di avvio


Il sistema operativo un software memorizzato su disco. Allavvio:
1. il firmware copia (da una posizione fissa del disco, detta settore di avvio) il bootstrap loader in memoria; Il firmware passa il controllo al bootstrap loader; Il bootstrap loader continua il caricamento del sistema operativo.
Bootstrap loader
Inizializzazione del sistema

Prima dellinfezione

2. 3.

Il settore di avvio dispone di 512 byte. Per permettere bootstrap loader pi grandi possibile il concatenamento. Se il virus riesce ad inserirsi nella catena, la sua esecuzione garantita ad ogni avvio.

Codice virale

Inizializzazione del sistema

Bootstrap loader

Dopo linfezione

Virus del settore di avvio: (s)vantaggi


Il virus acquisisce il controllo molto presto, prima che vengano attivati gli strumenti di rilevazione. I file nellarea di avvio sono parti fondamentali del sistema operativo:
Il sistema operativo li nasconde e ne impedisce leliminazione: il virus risulta difficile da rilevare e da eliminare. Tipicamente richiesto un avvio della macchina tramite disco pulito.

Virus residenti in memoria


Per ridurre il tempo di esecuzione di un programma, alcune parti del sistema operativo o programmi utente rimangono in memoria, cos da non richiedere lettura da disco e caricamento in memoria. Questo tipo di codice definito codice residente. Esempi di codice residente:
Routine per linterpretazione dei tasti della tastiera; Codice di gestione delle eccezioni dei programmi; Timer.

Virus residenti in memoria


Allegando un virus ad un codice residente, questo sar eseguito pi volte.
Esempio: un virus associato ad un codice residente pu essere eseguito pi volte e controllare i dischi nelle unit rimovibili, provvedendo allinfezione.

In maniera analoga un virus pu modificare la tabella dei programmi del sistema operativo, ad esempio la lista dei programmi da eseguire allavvio.

Altri luoghi
Abbiamo parlato della possibilit di eseguire operazioni attraverso macro. Alcuni programmi hanno delle Macro di avvio che permettono, ad esempio, lesecuzione di operazioni ricorrenti interessanti per lutente. Un luogo in cui un virus pu risiedere e quindi la macro di avvio. Le librerie di codice (ad esempio le Dynamic Linked Library, DLL) sono utilizzate da numerosi programmi e vengono eseguite da ognuno di essi. Un virus che infetta una libreria si garantisce numerose esecuzioni.

Virus e altro codice malevolo

DEFINIZIONE DEI VIRUS

Introduzione
Un virus non pu essere completamente invisibile:
Il codice deve essere memorizzato da qualche parte e deve trovarsi in memoria per poter essere eseguito; Il virus viene eseguito in modo particolare, con particolari metodi per la sua diffusione.

Ognuna di queste caratteristiche porta ad uno schema eloquente: la definizione o firma. La definizione del virus viene utilizzata dagli analizzatori (virus scanner) per rintracciarlo. Il virus viene rilevato solo con la relativa definizione: ecco limportanza dellaggiornamento delle definizioni.

Schemi di memorizzazione
La maggior parte dei virus si associa a programmi archiviati su disco.
Il virus allegato invariabile, perci linizio del codice una definizione rilevabile. Un altro parametro da valutare pu essere la dimensione del file a cui il virus si associa. Se il programma ospite non viene modificato internamente, la dimensione complessiva aumenta.
Programma originale IF (--) JUMP

Codice del virus allegato

Programma originale

Modulo del virus separato

Schemi di memorizzazione
Per non aumentare la dimensione possibile sostituire delle parti del programma, ma in questo caso il comportamento dellospite sarebbe modificato dal virus.
Ancora, lanalizzatore di virus pu utilizzare un codice o una checksum per rilevare le modifiche a un file. Pu anche cercare schemi sospetti
Esempio: rilevare unistruzione JUMP come prima istruzione di un programma di sistema.
IF (--) JUMP

Codice del virus allegato

Programma originale Programma originale

Modulo del virus separato

Virus polimorfico
Per rendere difficoltoso il rilevamento, lautore del virus pu far s che lo schema di memorizzazione cambi. In questo caso si parla di virus polimorfico.

Seguono alcune tecniche che permettono di rendere un virus polimorfico:


Inserire istruzioni che non producono alcuna operazione (no-ops), come:
Aggiunta di uno 0 ad un numero; Confronto di un numero con se stesso; Salto allistruzione successiva.

Virus polimorfico
Cambiare la posizione delle parti di codice rispetto a quelle dei dati.
Supponendo che un codice malevolo sia composto da 100 byte di programma e 50 byte di dati, varianti del virus polimorfico potrebbero essere: 10 byte di programma, seguiti da 50 byte di dati, seguiti da i restanti 90 byte di programma;

Crittografare parte del codice (virus crittografici). La chiave e la routine di decrittazione devono essere in chiaro, per poter riottenere il codice in chiaro.
Non appena il virus viene eseguito, questi effettua la decifratura ottenendo la parte restante del suo codice eseguibile

Virus e altro codice malevolo

PREVENIRE LINFEZIONE VIRALE

Codice eseguibile da fonte infetta


Un modo per prevenire linfezione consiste nellevitare di ricevere del codice eseguibile da una fonte infetta. possibile riconoscere cosa sia codice eseguibile? possibile rilevare quale sia una fonte infetta?

Riconoscere codice eseguibile (1)


Individuare chiaramente quale sia codice eseguibile non semplice. Oggi i file sono pi complessi e anche quelli non direttamente eseguibili (.exe) possono contenere del codice eseguibile (macro).
Documenti di testo; Fogli elettronici; Presentazioni;

Le applicazioni che utilizzano questi file possono cercare di aiutare lutente invocando automaticamente il codice eseguibile, senza esplicito consenso.

Riconoscere codice eseguibile (1)


Ad esempio, i gestori della posta elettronica (Thunderbird, Outlook, Outlook Express, ) potevano essere impostati per aprire automaticamente gli allegati o il codice incorporato, in modo che i messaggi di posta elettronica visualizzino, per esempio, degli orsetti animati che ballano.

Questi falle sono eliminate nelle ultime versioni.

Riconoscere fonti infette


Poich non possibile sapere quali fonti siano infette, si dovrebbe presumere che qualsiasi fonte esterna sia infetta. Non per possibile tagliare tutti i contatti con il mondo esterno. Kephart et al. osservano che gli sforzi dei singoli per mantenere i loro computer privi di virus porta alla creazione di comunit non infette.

Riconoscere fonti infette


La trasmissione contenuta non a causa del limitato contatto del singolo col mondo esterno, ma grazie al limitato contatto con persone esterne alla comunit. I governi, per i segreti militari o diplomatici, spesso sfruttano comunit di rete disconnesse. In sintesi, il segreto nella scelta prudente della comunit. Tuttavia con la diffusione di Internet questa possibilit sempre pi difficile.

Per costruire una comunit sicura si dovrebbe


Usare software commerciale acquistato da rivenditori solidi ed affidabili. Provare tutto il nuovo software su un computer isolato. Aprire gli allegati solo quando si certi che siano sicuri. Creare unimmagine di ripristino del sistema e archiviarla in un luogo sicuro. Creare copia di backup dei file di sistema eseguibili. Utilizzare regolarmente i rilevatori di virus e tenerli regolarmente aggiornati.

Verit e malintesi sui virus (1)


I virus possono infettare solo i sistemi operativi Microsoft. Falso.
I sistemi Microsoft sono molto popolari, esistono pertanto pi persone che scrivono software per questi sistemi. Di conseguenza questi sistemi sono spesso lobiettivo prescelto dagli autori di virus. In realt qualsiasi dispositivo contenente codice informatico (computer, palmari, cellulari, automobili, ) e che sia connesso con altri dispositivi, pu essere infettato da virus.

Verit e malintesi sui virus (2)


I virus possono modificare i file nascosti e di sola lettura. Vero.
Loccultamento o limpostazione di un file in sola lettura sono operazioni eseguite via software, attraverso un sistema a strati: intervenendo a livello degli strati inferiori possibile aggirare questi ostacoli.

Verit e malintesi sui virus (3)


I virus possono apparire solo nei file di dati, oppure solo in documenti di Word, oppure solo nei programmi. Falso.
Che cosa sono i dati? Che cos un file eseguibile? La distinzioni non sempre chiara. In ogni caso sempre necessario che ci sia unesecuzione. La stringa di bit, che sia essa stessa direttamente un comando, o che agisca attraverso lambiente di esecuzione di unapplicazione, deve scatenare lesecuzione di operazioni.

Verit e malintesi sui virus (4)


I virus si diffondono solo sui dischi o solo tramite email. Falso. Qualsiasi mezzo che metta in contatto due dispositivi un vettore di virus:
Un pagina Web che permette lo scaricamento di file; Un archivio su server FTP; Reti di condivisione di file;

Verit e malintesi sui virus (5)


I virus non possono rimanere in memoria dopo un completo spegnimento e riavvio del sistema. Vero
La memoria volatile: non mantiene informazione senza alimentazione. Tuttavia il virus pu essere riavviato automaticamente ad ogni avvio (ad esempio, virus del settore di avvio). Nota: libernazione e la sospensione non sono riavvii del sistema. Il contenuto della memoria viene salvato su disco.

Verit e malintesi sui virus (6)


I virus non possono infettare lhardware. Vero.
Il virus presuppone la possibilit di modifica (non volontaria dellutente) di codice eseguibile. Se lhardware non ha codice modificabile oppure non possibile modificarlo, linfezione non pu aver luogo. Un virus (software) potrebbe per danneggiare il dispositivo hardware se il driver permette operazioni (potenzialmente) dannose.

Sicurezza dei programmi

ESEMPI DI CODICE MALEVOLO

Esempi di codice malevolo

IL VIRUS BRAIN

Introduzione
uno dei primi virus ad essere comparsi. Deve il suo nome al fatto che modifica letichetta dei dischi attaccati in BRAIN.
Sembra non avere effetti diversi dalla trasmissione
era verosimilmente una prova di concetto ,

tuttavia alcune varianti cancellano il contenuto del disco o distruggono la tabella di allocazione dei file.

Virus Brain Cosa fa


Cerca di diffondersi il pi possibile. 1. Si posiziona nella memoria superiore. 2. Esegue una chiamata di sistema per reimpostare il limite della memoria superiore al di sotto di s e quindi non essere disturbato. 3. Si appropria dellindirizzo dellinterrupt 19 (lettura del disco), reimpostando lindirizzo a se stesso. 4. Utilizza linterrupt 6 (inutilizzato) per memorizzare lindirizzo originale del 19.

Virus Brain Cosa fa


In questo modo il virus analizza tutte le chiamate di lettura dal disco, gestendo tutte quelle relative al settore di avvio. Per nascondersi restituisce il contenuto originale del settore di avvio del disco che ha provveduto a memorizzare in settori del disco contrassegnati come danneggiati. Altre chiamate al disco vanno al normale gestore della lettura, servito tramite linterrupt 6.

Virus Brain Come si diffonde


Si posiziona nel settore di avvio e in altri sei settori del disco.
1. 2. 3. 4. 5. 6. Contiene il codice di avvio originale; Codice virale; Codice virale; Duplicato del settore 1; Duplicato del settore 2; Duplicato del settore 3.

I settori vengono contrassegnati come danneggiati, in modo che il sistema operativo non li utilizzi
con le chiamate di basso livello possibile obbligare lunit a leggere dai settori che il sistema operativo ha contrassegnato come danneggiati

Virus Brain Come si diffonde


Una volta stabilitosi in memoria, il virus intercetta le richieste di lettura del disco. A ogni lettura il virus legge il settore di avvio e cerca del quinto e nel sesto byte il valore esadecimale 1234.
Se presente, deduce che il disco infetto. Altrimenti provvede allinfezione.

Esempi di codice malevolo

IL WORM INTERNET

Introduzione
Il 2 novembre 1988 venne rilasciato su Internet un worm che provoc seri danni alla rete.
Non solo molti computer furono infettati, ma quando la notizia si diffuse, molti altri sistemi non infetti disattivarono le proprie connessioni dalla rete per prevenire linfezione.

Worm Internet Obiettivi


A giudicare dal codice, il worm era programmato per raggiungere tre obiettivi principali:
1. Determinare dove poteva diffondersi; 2. Diffondere la sua infezione; 3. Rimanere sconosciuto e introvabile.

Worm Internet Effetti


Leffetto principale stato lesaurimento delle risorse.
Il worm avrebbe avuto il compito di determinare se un bersaglio fosse gi stato infettato; in caso affermativo, il worm avrebbe negoziato in modo da terminare o linfezione esistente o quella nuova. A causa di un difetto nel codice, molte nuove copie non terminarono. Come risultato una macchina infetta veniva presto gravata di molte copie del worm, tutte che tentavano incessantemente di diffondere linfezione. Le prestazioni venivano fortemente degradate.

Worm Internet Effetti


Un secondo effetto stata la disconnessione di molte macchine da Internet:
Quelle gi infette, per non permettere la diffusione; Quelle non infette, per evitare che fossero infettate.

Terzo effetto: isolamento e incapacit di eseguire il lavoro necessario.


La disconnessione non ha permesso lesecuzione delle normali attivit ha reso problematica la comunicazione per risolvere il problema.

Ha provocato larresto o la disconnessione da Internet di circa 600 computer.


Diverse migliaia di sistemi disconnessi per diversi giorni.

Worm Internet Come ha funzionato


Sfruttava diversi difetti ed errori di configurazione della versione Berkley 4 del sistema operativo Unix. In questo modo raggiungeva i tre obiettivi visti in precedenza:
Determinare dove potersi diffondere; Diffondere linfezione; Rimanere sconosciuto e introvabile.

Esaminiamo i difetti in dettaglio.

Determinare dove potersi diffondere


Sfruttava tre falle di protezione ben note alla comunit Unix. La prima era dovuta ad un errore congiunto dellutente e del sistema.
Il file delle password Unix archiviato in forma cifrata, ma il testo cifrato leggibile da chiunque (errore del sistema). Il worm crittava varie password comuni (come guest, password, help, caff, coca, aaa, ) e confrontava il testo cifrato con quello del file delle password (la scelta di una password riconoscibile lerrore dellutente). Se trovava la password, il worm poteva accedere.

Determinare dove potersi diffondere


La seconda falla riguardava fingerd
il servizio per rispondere alla richieste di informazioni da altri computer in merito alle informazioni sugli utenti di sistema.

La falla consisteva in una vulnerabilit di tipo buffer overflow


era possibile confezionare un input malevolo tale da sovrascrivere lindirizzo di ritorno di un record di attivazione nello stack

Al termine della chiamata finger, finger poteva quindi essere costretto a eseguire le istruzioni spinte al suo interno
provocando la connessione del worm ad una shell remota.

Determinare dove potersi diffondere


La terza falla riguardava una trapdoor nel programma sendmail.
Normalmente sendmail rimane in attesa di chiamata da altri programmi per linvio di posta elettronica. Il destinatario specificato viene verificato per poi procedere con la ricezione del messaggio. Tuttavia durante lesecuzione in modalit di debug il worm obbligava sendmail a ricevere ed eseguire una stringa di comandi al posto dellindirizzo di destinazione.

Diffusione dellinfezione
Dopo aver trovato una macchina di destinazione adatta, il worm utilizzava uno dei precedenti tre metodi per inviare un bootstrap loader alla macchina bersaglio. Il loader consisteva in 99 righe di codice C da compilare ed eseguire sulla macchina di destinazione. Il bootstrap loader avrebbe poi analizzato il resto del worm dalla macchina host di invio.

Rimanere sconosciuti e introvabili


Se si verificava un errore di trasmissione mentre il resto del worm veniva prelevato, il loader azzerava e poi eliminava tutto il codice gi trasferito, quindi terminava la procedura. Non appena il worm riceveva il suo codice completo, trasferiva il codice in memoria, lo crittava ed eliminava le copie originali dal disco. Il worm cambiava periodicamente nome e identificativo del processo, in modo da non tenere in esecuzione nessun singolo nome per troppo tempo.

Cosa si appreso
Il worm Internet diede una scossa alla comunit Internet, che allepoca era costituita principalmente da universitari e ricercatori.
I siti colpiti provvidero a risolvere le falle; Alcuni utente cambiarono le password; Vennero realizzati strumenti per la rilevazione automatica delle falle. Nonostante ci gli analisti ritengono che molte delle stesse falle esistano tuttora.

Il worm era benigno (non distruggeva dati, non salvava le password), ma avrebbe potuto compiere molti danni.

Cosa si appreso
Molte persone furono spinte allazione.
Gli Stati Uniti svilupparono uninfrastruttura per la comunicazione e la correzione dei difetti del codice, malevoli e non. Venne istituito il Computer Emergency Response Team (CERT) alla Carnegie Mellon University.

Gli amministratori oggi si scambiano informazioni su problemi e soluzioni: la sicurezza deriva da azioni e protezione supportate dallinformazione, non dallignoranza e dallinattivit.

Esempi di codice malevolo

CODE RED

Introduzione
Apparve a met del 2001 con effetti devastanti.
Colpiti 750.000 server in tutto, compresi 400.000 computer nel solo periodo dal 1 al 10 agosto.

Danno stimato in oltre due miliardi di dollari.

Code Red Che cosa ha fatto


Si propaga sui server Web che girano su Internet Information Server (IIS) di Microsoft. Funziona in due passaggi:
Infezione, tramite buffer overflow nella libreria a collegamento dinamico idq.dll. Propagazione, controllando indirizzi IP sulla porta 80 per vedere se il server vulnerabile.

Quali sono stati gli effetti


La prima versione era facile da individuare, perch deturpava i siti Web con il seguente testo
HELLO! Welcome to http://www.worm.com ! Hacked by Chinese

Il resto delle attivit era determinato dalla data.


Dal 1 al 19 del mese, il worm produceva altri 99 thread che ricercavano altri computer vulnerabili. Dal 20 al 27, il worm lanciava un attacco distributed denialof-service al sito www.whitehouse.gov. Dal 28 alla fine del mese rimaneva inattivo.

Quali sono stati gli effetti


Altre varianti compivano differenti operazioni, fino a iniettare una cavallo di Troia nel server colpito per permettere lesecuzione di comandi arbitrati sul server.

Che cosa si appreso


Microsoft ha rilasciato la patch per risolvere il problema, ma molti amministratori trascurarono lapplicazione della patch.
La gestione degli aggiornamenti del software una vera e propria attivit che richiede delle risorse dedicate. Ora esistono gli aggiornamenti automatici!

Esempi di codice malevolo

WEB BUG

Web Bug Che cosa fanno


Un Web bug (a volta chiamato tag pixel, clear gif, gif a singolo pixel, gif invisibile o beacon gif) unimmagine nascosta in un qualsiasi documento che pu visualizzare tag HTML:
Una pagina web; Un messaggio di posta elettronica (in formato HMTL); Un foglio elettronico.

Il creatore vuole che il bug sia invisibile allutente, ma che possa tenere traccia delle attivit sul web.

Web Bug Che cosa fanno


Ad esempio, visitando la home page di Blue Nile allindirizzo www.bluenile.com, viene automaticamente scaricato il seguente bug da Avenue A, unagenzia di marketing:
<img height=1 width=1 src=http://switch.avenuaa.com/action/bluenile_homepage/v 2/a/AD7029944>

Web Bug Quali effetti hanno


Un Web bug inserisce un file chiamato cookie nel disco rigido del sistema.
Il cookie tipicamente contiene un identificativo univoco assegnato allutente. Consideriamo la societ di marketing di cui allesempio precedente. Le informazioni contenute nel cookie vengono reinviate al server ogni volta che viene fatta una richiesta al medesimo server. Se i Web bug di Avenue A sono utilizzati da molti siti, possibile tracciare un profilo dellutente, sebbene sia anonimo.

Come funzionano
A prima vista i Web bug non sembrano essere malevoli, raccolgono dati numerici ma non tengono traccia di informazioni personali come il nome e lindirizzo del navigatore.
Tuttavia se lutente effettua un acquisto o una registrazione al sito, questi dati verranno forniti e potranno completare il profilo. Inoltre, ogni richiesta al server Web contiene comunque informazioni come:
Indirizzo IP del computer; Il tipo di browser usato;

Come funzionano
La risoluzione del monitor; Altre impostazioni del browser, per esempio se abilitata la tecnologia Java; Il tempo di connessione; Valori precedenti dei cookie;

Queste informazioni possono essere utilizzate per tenere traccia dellutente. In modo pi malevolo, il bug pu essere utilizzato in maniera astuta per determinare degli indirizzi IP con determinate caratteristiche che potrebbero permettere un attacco di successo.

Cosa si appreso
I Web bug sollevano interrogativi sulla privacy e alcune nazioni stanno prendendo in considerazione leggi per la protezione specifica dai bug web.
I browser attuali permettono unalta granularit di configurazione per le regole di gestione dei cookie.

Sicurezza dei sistemi operativi

CODICE MALEVOLO SPECIALIZZATO

Introduzione
Finora abbiamo analizzato del codice (malevolo) anonimo, scritto per influire su utenti e macchine in modo indiscriminato.
In questa sezione analizzeremo del codice malevolo scritto per un sistema particolare, per unapplicazione specifica o per uno scopo determinato.

Codice malevolo specializzato

TRAPDOOR

Introduzione
Una trapdoor un punto di ingresso non documentato ad un modulo. Vengono utilizzate di norma per lo sviluppo del codice:
Per provare il modulo; Per fornire agganci con cui connettersi a futuri perfezionamenti o modifiche; Per consentire laccesso al modulo in caso di malfunzionamenti.

Oltre allutilizzo durante lo sviluppo, le trapdoor possono per consentire laccesso al programma una volta che questo viene messo in produzione.

Stub
I sistemi informatici sono strutture complesse. Per questa ragione i programmatori spesso sviluppano e provano i sistemi in modo metodico, organizzato e modulare, sfruttando il fatto che il sistema composto da moduli e componenti. I moduli vengono prima verificati singolarmente, nella fase di verifica dellunit. Successivamente vengono verificati nel funzionamento integrato, nella verifica dellintegrazione.

Stub
Per la verifica dei singoli moduli e dei loro aggregati, potrebbero non essere ancora disponibili i moduli che generano linput e gestiscono loutput.
Per questo motivo i programmatori realizzano delle routine aggiuntive che ricreano lambiente di esecuzione del modulo in esame (creazione dellinput e gestione delloutput, chiamati stub (troncone, mozzicone) o driver per prove.

Gli stub verranno poi sostituiti, pi avanti nella realizzazione del software, dai moduli di cui emulano le funzionalit.

Codice di debug
A volte, quando lorigine di un problema di un modulo non evidente, il programmatore aggiunge del codice di debug.
Il codice serve per evidenziare che cosa accade durante lesecuzione, stampando valori di interesse o eseguendo speciali comandi.

Disattivare le funzionalit di debug in produzione


Per controllare gli stub ed il codice di debug, il programmatore include sequenze di controllo speciali nella struttura del componente.
Ad esempio, particolari valori dellinput potrebbero essere utilizzati come comandi per gestire il debug.

Linserimento dei comandi una pratica di verifica riconosciuta, ma, se vengono lasciati in posizione dopo i test, i comandi aggiuntivi possono divenire un problema.
Il worm Internet ha diffuso la sua infezione utilizzando proprio questo tipo di trapdoor di debug in un programma di posta elettronica.

Controllo degli errori


Unaltra fonte di trapdoor uno scarso controllo degli errori.
Un buon sviluppatore progetta il sistema in modo che qualsiasi valore dei dati sia controllato prima del suo utilizzo. Il controllo comporta la verifica della correttezza del dato e della sua appartenenza allintervallo previsto.

In sistemi progettati in modo scadente il controllo potrebbe non essere realizzato e un dato fuori specifica potrebbe causare errori imprevisti.
La falla di fingerd sfruttata dal worm Morris era di questo tipo. La routind di I/O di una libreria di C non controlla se rimangono caratteri nel buffer di input prima di restituire il puntatore a un carattere successivo.

Necessario documentare le trapdoor


Come i virus, le trapdoor non sono sempre cattive: possono rivelarsi utili anche per rilevare falle di sicurezza.
Affinch siano utili indispensabile:
Che siano documentate; Che laccesso sia fortemente controllato; Che siano progettate ed utilizzate con la piena consapevolezza delle potenziali conseguenze.

Cause delle trapdoor


Le trapdoor possono rimanere nei programmi di produzione perch gli sviluppatori:
1. Dimenticano di rimuoverle; 2. Le lasciano intenzionalmente nel programma a scopo di test; 3. Le lasciano intenzionalmente nel programma per la manutenzione dello stesso; 4. Le lasciano intenzionalmente nel programma come mezzi nascosti di accesso dopo che questo diventato parte accettata di un sistema di produzione.

Cause delle trapdoor


Il primo un errore grossolano, il secondo e il terzo costituiscono un serio problema per la sicurezza, il quarto il primo passo di un attacco. In generale le trapdoor rappresentano una vulnerabilit quando espongono il sistema a modifiche durante lesecuzione. Un sistema non sicuro quando qualcuno ritiene che nessun altro sapr individuarne il varco.

Codice malevolo specializzato

SALAMI ATTACK

Introduzione
Deve il suo nome al modo in cui pezzettini di carne e grasso vengono mischiati in una salsiccia o in un salame.
Con la stessa tecnica un salami attack unisce bit di dati apparentemente non sequenziali per ottenere risultati non significativi.

Esempio di salami attack (2)


Il classico esempio di salami attack riguarda il calcolo degli interessi. Supponiamo che:
Una banca paghi il 6.5% di interesse annuo; Linteresse viene calcolato su base mensile -> 6.5%/365*31 = 0.5520% Considerando un saldo di 100, linteresse mensile risulta allora di 0.5520 Le banche effettuano i calcoli al centesimo di euro: cosa accade alle frazioni di centesimo? Una popolare leggenda sulla sicurezza informatica narra di un programmatore che raccoglieva le frazioni di centesimo e le accreditava sul suo conto

Esempi di salami attack (2)


In realt, poich alcuni arrotondamenti avvengono per difetto, mentre altri per eccesso, il saldo complessivo non dovrebbe discostarsi molto dallo zero. Situazione differente (e redditizia) potrebbe essere ottenuta scalando qualche centesimo da ogni conto.
Il correntista che vedrebbe accreditarsi 0.53 invece di 0.55 probabilmente lo imputerebbe ad un errore proprio sul calcolo, o comunque ad una questione di poco conto. Oppure il programma potrebbe registrare un canone di 20 per un servizio che costa in realt 15, ed accreditare la differenza su un conto speciale.

Perch esistono ancora?


I calcoli informatici sono notoriamente soggetti a piccoli errori relativi ad arrotondamento e troncamento. Anzich documentare i (numerosi) errori esatti, pi semplice per programmatore ed utenti accettare una piccola percentuale di errore come naturale ed inevitabile. Per far quadrare i conti, il programma include una correzione degli errori nei calcoli.
Una verifica inadeguata di queste correzioni il motivo per cui un salami attack pu passare inosservato.

Perch esistono ancora?


Di solito il codice sorgente di un sistema troppo grande o complesso per poter scovare attacchi di questo tipo, a meno che non vi sia un motivo per sospettarne la presenza.
La dimensione ed il tempo sono punti a favore del programmatore malevolo.

Codice malevolo specializzato

I ROOTKIT E LA TECNOLOGIA SONY XCP

Introduzione
Il nome rootkit si riferisce al tentativo da parte del codice di operare come utente root
ossia come utente che gode dei massimi privilegi nei sistemi operativi Unix.

Un rootkit tipico si insinua nella normale interazione tra utente e sistema operativo nel modo seguente:
Ogni volta che lutente esegue un comando che mostrerebbe la presenza del rootkit, per esempio mediante lelencazione dei file o dei processi in memoria, il rootkit intercetta la chiamata e filtra il risultato che viene restituito, in modo che non risulti.

Introduzione
Per esempio:
una directory contiene sei file, uno dei quali il rootkit; Il rootkit passa il comando di directory al sistema operativo; Il rootkit intercetta il risultato, cancella la voce che lo riguarda dallelenco e aggiusta loccupazione di spazio; Allutente sono mostrati solo cinque file.

possibile scrivere un rivelatore di rootkit che agisca a basso livello nel filesystem e che confronti il risultato delle chiamata al sistema operativo (modificate dal rootkit), con il risultato delle interrogazioni a basso livello.

Sony XCP (1)


La Sony ha creato XCP (eXtended Copy Protection) per impedire che un utente copi un CD musicale, permettendone invece la riproduzione.
A questo scopo
Include nel CD il suo specifico riproduttore che possiede lautorizzazione per leggere il CD; Interferisce con ogni altro accesso non autorizzato al CD, alterando il risultato della lettura dal CD.

Sony XCP (2)


Il rootkit deve autoinstallarsi quando il CD viene inserito
utilizza la funzionalit utile di autorun di Windows.

XCP deve nascondersi allutente, in modo da non poter essere rimosso


blocca la visualizzazione di ogni programma il cui nome inizia con $sys$ (il nome del rootkit stesso). Questo filtro si applica a qualsiasi nome. Un autore di virus potrebbe nascondere un virus chiamandolo semplicemente $sys$-1!

Sony XCP (2)


La Sony ha commesso due errori:
1. Ha distribuito del codice che, senza avvisare, apre il sistema a possibili infezioni; 2. Ha installato il suo codice senza metterne a conoscenza lutente, rendendo inoltre difficoltosa la sua rimozione.

Tappare la falla
Di fronte alla pubblicit negativa che ha ricevuto da questo rootkit, la Sony ha deciso di rilasciare un disinstallatore. Sfortunatamente la pressione e la fretta hanno portato ulteriori problemi.

Infatti il disinstallatore si presentava come una pagina Web che scaricava ed eseguiva il programma di disinstallazione. I programmatori per non avevano previsto il controllo di quale codice venisse eseguito
la pagina Web poteva eseguire codice di qualsiasi fonte, non solo della Sony.

Il codice permaneva anche dopo la disinstallazione, lasciando quindi la vulnerabilit nel sistema.

Numeri
Quanti computer sono stati infettati dal rootkit? Nessuno lo sa con certezza.
Sono stati trovati 500.000 riferimenti nelle tabelle DNS al sito contattato, ma alcune voci avrebbero potuto supportare laccesso di centinaia o migliaia di computer.

Quanti utenti infetti ne erano a conoscenza? Non possibile rispondere, come non possibile sapere quanti computer siano ancora infetti.

Digital Rights Management


Alcune analisi mostrano come i sistemi di gestione dei diritti dautore (DRM, Digital Rights Management) configurano requisiti simili a quelli dello sviluppo di codice malevolo.
Per lo sviluppo la Sony aveva lavorato in collaborazione con i principali produttori di antivirus per trovare il modo di nascondere il proprio rootkit per la Sony la cosa migliore era che i consumatori ne rimanessero alloscuro.

Codice malevolo specializzato

SCALATA DEI PRIVILEGI

Contesto di esecuzione
I programmi girano in un contesto che ne regola i diritti di accesso e i privilegi. La maggior parte dei programmi viene eseguita nel contesto dellutente che li invoca:
Se i diritti di accesso sono impostati correttamente, possibile creare, modificare o cancellare gli elementi posseduti dallutente, ma gli oggetti critici per il sistema sono protetti, essendo fuori dal contesto.

Un attacco basato sulla scalate dei privilegi (privilege escalation) consente al codice malevolo di essere lanciato da un utente con privilegi bassi, ma di andare in esecuzione con privilegi superiori:
Pu quindi agire sugli oggetti di sistema.

Esempio: Live Update (1)


La Symantec produce software per la sicurezza. Per consentire che i prodotti siano sempre aggiornati, lazienda ha previsto lopzione Live Update (LU) Si tratta di una funzionalit ricerca ad intervalli regolari aggiornamenti per il software e li installa. Poich deve installare gli aggiornamenti direttamente nella directory di sistema, necessario che la funzionalit venga eseguita con privilegi elevati.

Esempio: Live Update (1)


Il processo coinvolgeva lesecuzione dei seguenti programmi:
LU1, componente di Live Update; LU2, componente di Live Update; Sys3, componente standard di sistema; Sys4, componente standard di sistema.

Esempio: Live Update (2)


Per avviare lesecuzione di un programma i sistemi operativi utilizzano il percorso di ricerca path:
il path contiene un elenco di directory in cui ricerca il programma che stato chiamato. quando un programma A chiama un programma B, il sistema operativo cerca nella prima directory specificata nel path.

Se il programma viene trovato, allora si passa allesecuzione, altrimenti la ricerca procede nelle successive directory del path o termina con un errore se non viene trovata alcuna corrispondenza.
In caso di corrispondenze multiple, il programma eseguito quello che per primo viene trovato nel path.

Esempio: Live Update (2)


comunque sempre possibile avviare un programma tramite percorso esplicito:
C:\Programmi\Symantec\LU1.exe

In alcune versioni di Macintosh, La Symantec consentiva lavvio di programmi attraverso path:


se lutente aggiungeva le directory del proprio spazio nelle prime posizioni del path e aveva un programma Sys3, ecco che questo veniva eseguito con privilegi elevati, superiori a quelli dellutente, al posto del programma originale.

Codice malevolo specializzato

FALSIFICAZIONE DELLINTERFACCIA

Descrizione
Lattacco Interface Illusion (phishing) di tipo spoofing in cui una pagina web o parte di essa falsificata. Obiettivo dellaggressore convincere lutente a compiere qualcosa di inappropriato, ad esempio:
Inserire i propri dati bancari in un sito che non quello della banca; Premere un pulsante Non accetto che invece significa Accetto; Scorrere lo schermo per attivare un evento che causa linstallazione di software malevolo sul computer.

Codice malevolo specializzato

REGISTRAZIONE DEI TASTI PREMUTI

Descrizione
Non esiste una canale diretto tra un tasto premuto sulla tastiera e il programma (ad esempio un elaboratore di testi) che lo utilizza. Quando si preme il tasto A: 1. Viene attivato un interruttore che genera un segnale; 2. Il segnale viene ricevuto da un driver di periferica; 3. Il driver analizza il segnale e genera il codice A; 4. Il codice passa attraverso altri livelli fino al programma che lo utilizza; 5. Altre elaborazioni e conversioni portano alla comparsa di A sullo schermo.

Descrizione
In questo processo intervengono numerosi programmi, organizzati con un paradigma a livelli (come, ad esempio, lo stack TCP/IP).
Uno dei programmi che intervengono pu essere modificato per tenere traccia dei tasti premuti, da cui poi poter rilevare informazioni importanti, come codici di accesso, password.

Bibliografia
[PFL08] C. P. Pfleeger, S. L. Pfleeger. Sicurezza in Informatica. Pearson, Prentice Hall. [STA07] W. Stallings. Sicurezza delle reti. Pearson, Prentice Hall. [Wiki-it] http://it.wikipedia.org/wiki/ [Wiki-en] http://en.wikipedia.org/wiki/ [ISECOM] Institute for Security and Open Methodologies