Skip to content

Sviluppo di un sistema per la ricerca automatica di Buffer Overflow su piattaforma GNU/Linux

La cattiva qualità del software costituisce la maggior fonte di vulnerabilità nei sistemi informatici, gran parte dei technical cyber alert pubblicati dallo US Cert riportano vulnerabilità attribuibili ai buffer overflow: famosi worm come Codered, Blaster, Slammer e Conflicker sfruttano tali overflow per propagarsi e danneggiare i sistemi.

Il buffer overflow si ottiene eccedendo la capacità prefissata di uno spazio di memoria, l'overflow può causare terminazioni non previste nei programmi e sovrascritture non desiderate di zone di memoria riservate al contesto d’esecuzione e all’allocazione delle variabili; tali alterazioni possono compromettere il flusso d’esecuzione prestabilito offrendo ad un attaccante la possibilità di eseguire arbitrariamente codice.

I livelli aggiuntivi di privilegi ottenibili nei sistemi unix-like - settando l’attributo suid - elevano la qualità d’attacco ottenibile, dando modo di eseguire codice con diritti di amministrazione.

Sovraccaricando gli input di un programma è possibile:

- Terminarlo in modo non previsto (Denial of Service)
- Modificarne lo stato cambiando il contenuto delle variabili (Unauthorized Modification of Information)
- Modificare il flusso d’esecuzione prestabilito per eseguire codice in modo da ottenere diritti di amministrazione (Malicious Code promuovibile ad Account Compromise)

Si noti in particolare che (per il secondo punto) la potenza dell’attacco dipende dalla semantica d’utilizzo delle variabili, una variabile potrebbe contenere:

- l’importo di uno stipendio
- la data di un appuntamento
- il nome di un file utilizzato per contenere un elenco di codici d’accesso (es. /etc/passwd, /etc/shadow in unix)
- un saldo di un conto corrente
- dati anagrafici
- una password
- l’indirizzo di un pacchetto di dati
- la posizione di un satellite nello spazio
- ecc..

La ricerca automatica di buffer overflow esaminando il codice sorgente è un problema indecidibile in generale. La disponibilità del solo codice oggetto diminuisce il numero di informazioni acquisibili: non si ha né la completa conoscenza di tutte le sorgenti di input, né il completo conoscimento del tipo di dati in ingresso. D’altronde l’esame del codice oggetto è necessario nell’analisi dei programmi per i quali il codice sorgente non è disponibile, come ad esempio i software commerciali.

Le vulnerabilità inoltre sono in generale difficilmente individuabili, perché è difficile che i bachi di sicurezza allontanino il software dall’aderenza alle specifiche funzionali; disporre di uno strumento di ricerca che permetta di rilevare e classificare eventuali vulnerabilità prima che siano sfruttate da un attaccante è un aiuto per diminuire il livello d’insicurezza dei sistemi informatici.

Si presenta un sistema automatico per l’individuazione di buffer overflow nel codice oggetto, la piattaforma di riferimento è GNU/Linux su architettura Intel (IA32). Il rilevamento di buffer overflow e i tentativi d’esecuzione di codice (esecuzione di una shellcode allo scopo di ottenere una shell di root) sono effettuati sul solo codice oggetto.
Le caratteristiche del sistema sviluppato lo rendono utilizzabile nelle attività di:

- analisi del rischio
- di debug
- di verifica della corretta installazione e configurazione del software.

Il contributo di questa tesi è il seguente:

• Sono stati analizzati differenti tipi di attacco che sfruttano le vulnerabilità buffer overflow.
• È stato sviluppato un sistema di ricerca automatica di buffer overflow con le seguenti caratteristiche:

- Analisi degli input mediante il passaggio di parametri da riga di comando, l’utilizzo di variabili d’ambiente e l’uso di una modalità di ricerca innovativa basata sull’intercettazione delle chiamate di sistema sys_read().

- Utilizzo della crittazione polimorfica e della generazione di istruzioni equivalenti per limitare le possibilità di rilevamento di un Intrusion Detection System.

- Utilizzo di uno spiazzamento variabile per attaccare programmi che abbiano strutture di stack frame variabili.

• È stato utilizzato il sistema sviluppato per effettuare attacchi Stack Smashing iniettando codice eseguibile allo scopo di ottenere una shell di super utente.
• Sono stati analizzati differenti sistemi di difesa mostrandone le caratteristiche e le limitazioni.

CONSULTA INTEGRALMENTE QUESTA TESI

La consultazione è esclusivamente in formato digitale .PDF

Acquista
Mostra/Nascondi contenuto.
1 1 Introduzione Il linguaggio C è caratterizzato da scelte progettuali che ne premiano l’efficienza e la flessibilità; la realizzazione di codice efficiente a tempo d’esecuzione e piccolo in dimensioni erano gli obiettivi posti da Ritchie per poter sostituire il linguaggio assembly nella realizzazione di Unix, mentre la sicurezza dei tipi (type safety) e l’interface checking non erano considerati scopi primari. [Ritchie93] La filosofia che sta alla base del linguaggio è che il programmatore sa cosa sta facendo, il suo essere privo di restrizioni e la sua generalità lo rendono spesso più conveniente ed efficiente di altri linguaggi supposti più potenti. [Kernighan89] L’efficienza e la flessibilità sono ottenute mediante la: • Aritmetica dei puntatori. • Conversione automatica di tipo. • Minimizzazione dei controlli di tipo. • Mancanza di controllo a tempo d’esecuzione degli indici degli array e dei buffer. Il controllo dell’integrità dei dati è volutamente lasciato al programmatore, che può decidere di ottimizzare un programma evitando controlli ritenuti non necessari. La mancanza di controlli a livello di definizione del linguaggio favorisce la programmazione non sicura: ad esempio, non implementando il controllo degli indici dei buffer è possibile scrivere in zone di memoria che non appartengono allo spazio effettivamente allocato.

CONSULTA INTEGRALMENTE QUESTA TESI

La consultazione è esclusivamente in formato digitale .PDF

Acquista
Il miglior software antiplagio

L'unico servizio antiplagio competitivo nel prezzo che garantisce l'aiuto della nostra redazione nel controllo dei risultati.
Analisi sicura e anonima al 100%!
Ottieni un Certificato Antiplagio dopo la valutazione.

Informazioni tesi

  Autore: Giuseppe Rapicano
  Tipo: Tesi di Laurea
  Anno: 2003-04
  Università: Università degli Studi di Milano
  Facoltà: Scienze Matematiche, Fisiche e Naturali
  Corso: Informatica
  Relatore: Ing. Mattia Monga, Prof. Danilo Bruschi
  Lingua: Italiano
  Num. pagine: 71

FAQ

Per consultare la tesi è necessario essere registrati e acquistare la consultazione integrale del file, al costo di 29,89€.
Il pagamento può essere effettuato tramite carta di credito/carta prepagata, PayPal, bonifico bancario.
Confermato il pagamento si potrà consultare i file esclusivamente in formato .PDF accedendo alla propria Home Personale. Si potrà quindi procedere a salvare o stampare il file.
Maggiori informazioni
Ingiustamente snobbata durante le ricerche bibliografiche, una tesi di laurea si rivela decisamente utile:
  • perché affronta un singolo argomento in modo sintetico e specifico come altri testi non fanno;
  • perché è un lavoro originale che si basa su una ricerca bibliografica accurata;
  • perché, a differenza di altri materiali che puoi reperire online, una tesi di laurea è stata verificata da un docente universitario e dalla commissione in sede d'esame. La nostra redazione inoltre controlla prima della pubblicazione la completezza dei materiali e, dal 2009, anche l'originalità della tesi attraverso il software antiplagio Compilatio.net.
  • L'utilizzo della consultazione integrale della tesi da parte dell'Utente che ne acquista il diritto è da considerarsi esclusivamente privato.
  • Nel caso in cui l’utente che consulta la tesi volesse citarne alcune parti, dovrà inserire correttamente la fonte, come si cita un qualsiasi altro testo di riferimento bibliografico.
  • L'Utente è l'unico ed esclusivo responsabile del materiale di cui acquista il diritto alla consultazione. Si impegna a non divulgare a mezzo stampa, editoria in genere, televisione, radio, Internet e/o qualsiasi altro mezzo divulgativo esistente o che venisse inventato, il contenuto della tesi che consulta o stralci della medesima. Verrà perseguito legalmente nel caso di riproduzione totale e/o parziale su qualsiasi mezzo e/o su qualsiasi supporto, nel caso di divulgazione nonché nel caso di ricavo economico derivante dallo sfruttamento del diritto acquisito.
L'obiettivo di Tesionline è quello di rendere accessibile a una platea il più possibile vasta il patrimonio di cultura e conoscenza contenuto nelle tesi.
Per raggiungerlo, è fondamentale superare la barriera rappresentata dalla lingua. Ecco perché cerchiamo persone disponibili ad effettuare la traduzione delle tesi pubblicate nel nostro sito.

Scopri come funziona »

DUBBI? Contattaci

Contatta la redazione a
[email protected]

Ci trovi su Skype (redazione_tesi)
dalle 9:00 alle 13:00

Oppure vieni a trovarci su

Parole chiave

account compromise
attack attacker
automatic automatico automatically automated
buffer overflow overrun
crack cracker hacker hacking cracking
crittazione decrittazione criptare crypt decrypt
decriptare decrittare
detection searching search
malicious code anomaly vulnerabilità
polymorphic shellcode
sicurezza security ids intrusion misuse
stack smashing attack
unix linux c ansi
vulnerabilita vulnerability vulnerabilities

Non hai trovato quello che cercavi?


Abbiamo più di 45.000 Tesi di Laurea: cerca nel nostro database

Oppure consulta la sezione dedicata ad appunti universitari selezionati e pubblicati dalla nostra redazione

Ottimizza la tua ricerca:

  • individua con precisione le parole chiave specifiche della tua ricerca
  • elimina i termini non significativi (aggettivi, articoli, avverbi...)
  • se non hai risultati amplia la ricerca con termini via via più generici (ad esempio da "anziano oncologico" a "paziente oncologico")
  • utilizza la ricerca avanzata
  • utilizza gli operatori booleani (and, or, "")

Idee per la tesi?

Scopri le migliori tesi scelte da noi sugli argomenti recenti


Come si scrive una tesi di laurea?


A quale cattedra chiedere la tesi? Quale sarà il docente più disponibile? Quale l'argomento più interessante per me? ...e quale quello più interessante per il mondo del lavoro?

Scarica gratuitamente la nostra guida "Come si scrive una tesi di laurea" e iscriviti alla newsletter per ricevere consigli e materiale utile.


La tesi l'ho già scritta,
ora cosa ne faccio?


La tua tesi ti ha aiutato ad ottenere quel sudato titolo di studio, ma può darti molto di più: ti differenzia dai tuoi colleghi universitari, mostra i tuoi interessi ed è un lavoro di ricerca unico, che può essere utile anche ad altri.

Il nostro consiglio è di non sprecare tutto questo lavoro:

È ora di pubblicare la tesi