Docente: Giuseppe Scollo
Università di Catania, sede di Comiso (RG)
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Studi in Informatica applicata, AA 2008-9
come già accennato nella lezione precedente, gli effetti del buffer overflow dipendono dall'area in cui si trova la locazione di memoria a cui si tenta l'accesso erroneo
in particolare, se un sottoprogramma in esecuzione riesce a sovrascrivere l'indirizzo di ritorno nello stack di sistema, potrà in tal modo trasferire il controllo a del codice che sia stato caricato (tipicamente dallo stesso sottoprogramma) a tale indirizzo
il buffer overflow è dunque anche una tecnica di attacco per l'introduzione ed esecuzione di codice maligno nei sistemi informatici
su questo argomento, tre contributi di studenti di una precedente edizione del corso sono consultabili nella sezione Appunti e dispense del sito dell'insegnamento
malfunzionamenti di programmi possono doversi a valori erronei dell'input di utente
esistono essenzialmente due modi per impedirli:
nel secondo caso, il controllo sul lato client del programma consiste nel permettere all'utente solo la selezione dell'input all'interno del dominio dei valori leciti
in tal modo, l'interfaccia di utente effettua una mediazione dell'input
esempio: si consideri un programma che accetti ordini di acquisto via Web
una condizione necessaria per la sussistenza di vulnerabilità di mediazione incompleta è costituita dal fatto che il controllo di validità dell'input di utente e la sua effettiva trasmissione avvengano in momenti diversi, e che nel lasso di tempo fra questi l'utente abbia la possibilità di modificare l'input
una condizione analoga caratterizza i difetti di serializzazione, generalmente dovuti alla diacronia fra controllo e uso
più precisamente, i difetti di serializzazione generalmente riguardano il controllo di accesso a una risorsa e l'effettivo accesso del soggetto della richiesta di accesso
come si vedrà in una lezione successiva, il controllo di accesso consiste nella verifica che il soggetto richiedente goda dell'autorizzazione necessaria all'accesso a un dato oggetto per una data operazione
come si è visto, i tre tipi di difetti considerati, seppur non intenzionali, possono essere abilmente sfruttati per dar luogo a serie minacce alla sicurezza:
minacce ancor più serie sono da attendersi dall'abilità di un attaccante di sfruttare combinazioni di tali difetti
ad esempio, un aggressore consapevole della presenza di tali difetti in un sistema informatico può orchestrare un attacco in più stadi, in cui potrà:
virus:
cavallo di Troia:
bomba logica:
bomba a tempo:
trapdoor o backdoor (porta nascosta):
worm (verme):
rabbit (coniglio):
una caratteristica del virus è la necessità di un programma ospite per l'esecuzione
la diffusione di un virus dipende dal tipo di programma ospite, e può sfruttare vari mezzi:
un programma affetto da virus può assumere il controllo sovrascrivendo il codice originale o un puntatore ad esso (nella tabella dei processi, nel file system, etc.)
un obiettivo degli autori di virus, essenziale ad assicurarne l'efficacia, è l'occultamento della presenza del virus nel programma ospite
tuttavia, nessun virus è invisibile: oltre all'eventuale diversità di comportamento
la presenza di un virus può talvolta essere rilevata da tratti tipici della sua esecuzione:
la rilevazione più affidabile ed efficace della presenza di virus
è tuttavia quella effettuabile prima
che il virus entri in azione, in quanto basata sul suo schema di
memorizzazione:
tratti caratteristici del codice del virus nel codice dell'ospite, che
ne costituiscono la firma
o (schema di) definizione
si dicono polimorfi i virus in grado di
assumere molteplici schemi di definizione, equivalenti nel comportamento,
al fine di occultare la propria presenza ai programmi di rilevamento
(antivirus
)
non esiste una ricetta di efficacia universale per la prevenzione
delle infezioni virali ...
tuttavia alcune buone abitudini
possono ridurre notevolmente il rischio di
incapparvi: