Virii e linux
Luca Giuzzi
l.giuzzi a dmf.bs.unicatt.it
Dom 7 Mar 1999 00:33:09 UTC
Il prodotto cui il mail precedente fa riferimento \'e un virus-scanner per
files eseguibili/attachment orientati agli ambienti micro$oft. Talvolta pu\'o
essere comodo avere scanners di questo genere in funzione su di un server
che non corre il rischio di essere infettato... (ad esempio il virusscan
della McAfee \'e disponibile da almeno un annetto per linux...).
Tecnicamente un virus \'e scrivibile per qualsiasi sistema operativo -linux
incluso- e alcune funzionalit\'a di unix lo rendono pi\'u esposto a
determinati tipi d'attacco rispetto sistemi concorrenti (mai provato a
fare un telnet su di un server Windows NT? Anche conoscendo la password di
amministratore di sistema risulta -in configurazioni standard- alquanto
difficoltoso fare un login!!).
La cosa essenziale in uno unix \'e la differeziazione dei contesti di esecuzione
e dei livelli di privilegio. Il tipico caso di attacco (anche automatico,
non necessariamente perpetrato in modo interattivo) prevede due fasi:
1. ottenere un login su di una macchina remota;
2. ottenere i privilegi di super-user e infettare altre macchine.
Queste cose vengono realizzate solitamente con tecniche del tipo `stack smashing',
cio\'e fornendo ad alcuni programmi scritti in modo non troppo attento
stringhe di parametri di lunghezza superiore al previsto che contengono codice
eseguibile... la cosa pu\'o sembrare strana e/o difficile, ma in realt\'a
viene fatta quasi quotidianamente... una lettura di bugtraq (si veda
http://www.netspace.org) pu\'o essere illuminante per chi si interessa di
problemi di sicurezza!
Tornando alla faccenda virii... in uno unix un virus risulta solitamente
limitato all'utente che ha ``contratto l'infezione'' e solitamente non \'e
in grado di compromettere la sicurezza globale del sistema. Ovviamente se
l'utente \'e root la cosa cambia un poco... come pure cambia se il virus in
oggetto \'e espressamente disegnato per sfruttare vulnerabilit\'a poco note
del sistema operativo (ma solitamente queste vulnerabilit\'a vengono
individuate abbastanza rapidamente e, avendo il codice sorgente, vengono pure
risolte...) La cosa positiva \'e, se si vuole metterla cos\'i, che mentre
sotto dos/window$ l'unica cosa un programma pu\'o fare \'e cancellare files,
sotto unix la gente cerca tutt'al pi\'u di impadronirsi del controllo di un
sistema piuttosto che semplicemente danneggiarlo, e questo richiede tecniche
pi\'u sofisticate.
Se uno vuole proprio essere sicuro, nel dubbio \'e sempre bene ricompilare,
magari usando un compilatore stile StackGuard
(vedi http://www.cse.ogi.edu/DISC/projects/immunix/ )
[Nota a margine: a dire il vero neanche una ricompilazione dal sorgente basta
per i pi\'u paranoidi fra noi... alla fine degli anni 70 Brian Kernigan
(di fama per il C ed UNIX !) ha dimostrato che era possibile creare un
compilatore C leggermente modificato tale da:
1. riconoscere quando l'utente stava compilando il programma login ed inserire
automaticamente una backdoor che garantiva l'accesso all'utente BK senza
chiedere la password;
2. riconoscere quando l'utente stava ricompilando il compilatore C e inserire
una backdoor nel compilatore onde ottenere quanto al punto 1.
Una analisi dei sorgenti C dei due codici ovviamente non avrebbe mostrato
nulla di strano... teoricamente uno dovrebbe analizzare il binario con dei
tools `sicuri', scritti direttamente in codice macchina -non in assembler!-
su una piattaforma completamente diversa da quella su cui
il codice deve essere installato... volontari? ]
Riassumendo:
dal punto di vista virii secondo me sotto linux (o ogni altro unix) si possono
dormire sonni relativamente tranquilli; dal punto di vista trojan horses
oppure sistemi di attacco verso vulnerabilit\'a dei servizi offerti da un
computer la storia \'e diversa ed \'e bene, se si ha qualche server connesso
permanentemente ad Internet, seguire tutti gli sviluppi e prendere precauzioni
in tempo reale (ma in questi casi non c'\'e antivirus che tenga: la partita
\'e uno contro uno)...
Ciao
lg
Maggiori informazioni sulla lista
Lug
|