10 |
Buffer Overflow tramite variabili d'ambiente
Questo schema di attacco comporta la causa di un buffer overflow attraverso la manipolazione delle variabili d'ambiente. Una volta che l'avversario scopre che può modificare una variabile d'ambiente, può cercare di far traboccare i buffer associati. Questo attacco sfrutta la fiducia implicita spesso riposta nelle variabili d'ambiente. [Identificare l'applicazione bersaglio] L'avversario identifica un'applicazione o un programma bersaglio su cui eseguire l'overflow del buffer. In questo attacco l'avversario cerca un'applicazione che carichi il contenuto di una variabile d'ambiente in un buffer. [Trovare il vettore di iniezione] L'avversario identifica un vettore di iniezione per fornire il contenuto eccessivo al buffer dell'applicazione bersaglio. [Creare il contenuto dell'overflow] L'avversario crea il contenuto da iniettare. Se l'intento è semplicemente quello di causare il crash del software, il contenuto deve solo consistere in una quantità eccessiva di dati casuali. Se l'intento è quello di sfruttare l'overflow per l'esecuzione di codice arbitrario, l'avversario crea il payload in modo tale che l'indirizzo di ritorno sovrascritto venga sostituito con uno a scelta dell'avversario. [Utilizzando il vettore di iniezione, l'avversario inietta il contenuto di overflow artigianale nel buffer. |
Alto |
100 |
Buffer di overflow
Gli attacchi di Buffer Overflow hanno come obiettivo un controllo improprio o mancante dei limiti sulle operazioni del buffer, tipicamente innescato da un input iniettato da un avversario. Come conseguenza, un avversario è in grado di scrivere oltre i confini delle regioni del buffer allocate in memoria, causando un crash del programma o potenzialmente un reindirizzamento dell'esecuzione secondo la scelta dell'avversario. [L'avversario identifica un'applicazione o un programma su cui eseguire il buffer overflow. Gli avversari spesso cercano applicazioni che accettano input dall'utente e che eseguono una gestione manuale della memoria. [Trovare il vettore di iniezione] L'avversario identifica un vettore di iniezione per fornire il contenuto eccessivo al buffer dell'applicazione bersaglio. [L'avversario crea il contenuto da iniettare. Se l'intento è semplicemente quello di causare il crash del software, il contenuto deve solo consistere in una quantità eccessiva di dati casuali. Se l'intento è quello di sfruttare l'overflow per l'esecuzione di codice arbitrario, l'avversario crea il payload in modo tale che l'indirizzo di ritorno sovrascritto venga sostituito con uno a scelta dell'avversario. [Utilizzando il vettore di iniezione, l'avversario inietta il contenuto di overflow artigianale nel buffer. |
Molto alto |
123 |
Manipolazione del buffer
Un avversario manipola l'interazione di un'applicazione con un buffer nel tentativo di leggere o modificare dati a cui non dovrebbe avere accesso. Gli attacchi buffer si distinguono in quanto è lo spazio del buffer stesso che è l'obiettivo dell'attacco piuttosto che qualsiasi codice responsabile dell'interpretazione del contenuto del buffer. In quasi tutti gli attacchi buffer, il contenuto che viene inserito nel buffer è irrilevante. Al contrario, la maggior parte degli attacchi al buffer implica il recupero o la fornitura di più input di quanto può essere memorizzato nel buffer allocato, con conseguente lettura o sovrascrittura di altra memoria di programma non voluta. |
Molto alto |
14 |
Overflow del buffer indotto da iniezione lato client
Questo tipo di attacco sfrutta una vulnerabilità di buffer overflow nel software client mirato attraverso l'iniezione di contenuti dannosi da un servizio ostile personalizzato. Questo servizio ostile è creato per fornire il contenuto corretto al software client. Per esempio, se l'applicazione lato client è un browser, il servizio ospiterà una pagina web che il browser carica. [L'avversario identifica un'applicazione client-side di destinazione su cui eseguire il buffer overflow. I più comuni sono i browser. Se c'è una nota vulnerabilità del browser, un avversario potrebbe prendere di mira quella. [Trovare il vettore di iniezione] L'avversario identifica un vettore di iniezione per fornire il contenuto eccessivo al buffer dell'applicazione bersaglio. [Creare un servizio ostile] L'avversario crea un servizio ostile che consegnerà il contenuto all'applicazione lato client. Se l'intento è semplicemente quello di causare il crash del software, il contenuto deve solo consistere in una quantità eccessiva di dati casuali. Se l'intento è quello di sfruttare l'overflow per l'esecuzione di codice arbitrario, l'avversario crea il payload in modo tale che l'indirizzo di ritorno sovrascritto venga sostituito con uno a scelta dell'avversario. [Utilizzando il vettore di iniezione, l'avversario consegna il contenuto all'applicazione lato client che utilizza il servizio ostile e fa traboccare il buffer. |
Alto |
24 |
Guasto del filtro per overflow del buffer
In questo attacco, l'idea è di far fallire un filtro attivo causando una transazione sovradimensionata. Un attaccante può cercare di inserire stringhe di input troppo lunghe nel programma nel tentativo di sopraffare il filtro (causando un buffer overflow) e sperando che il filtro non fallisca in modo sicuro (cioè l'input dell'utente viene lasciato nel sistema non filtrato). [Sondaggio] L'attaccante esamina l'applicazione di destinazione, possibilmente come un utente valido e autenticato [Tentativi di iniezioni] Cerca di inserire dati troppo lunghi nel sistema. Questo può essere fatto manualmente o uno strumento dinamico (scatola nera) può essere usato per automatizzare questo. Un attaccante può anche usare uno script personalizzato per questo scopo. [Monitorare le risposte] Osservare qualsiasi indicazione di fallimento che si verifica. Guarda attentamente per vedere cosa è successo quando si è verificato il fallimento del filtro. I dati sono entrati? [Abusare del sistema attraverso il fallimento del filtro] Un attaccante scrive uno script per indurre costantemente il fallimento del filtro. |
Alto |
42 |
Conversione MIME
Un attaccante sfrutta una debolezza nella routine di conversione MIME per causare un buffer overflow e ottenere il controllo della macchina server di posta. Il sistema MIME è progettato per consentire l'interpretazione e l'invio via e-mail di diversi formati di informazioni. I punti di attacco esistono quando i dati vengono convertiti in formato MIME compatibile e viceversa. [Identificare il server di posta obiettivo] L'avversario identifica un server di posta obiettivo che desidera attaccare. [Determinare la fattibilità dell'attacco] Determinare se il server di posta è privo di patch ed è potenzialmente vulnerabile a uno dei noti buffer overflow di conversione MIME (ad esempio Sendmail 8.8.3 e 8.8.4). [Trovare il vettore di iniezione] Identificare i posti nel sistema dove le routine di conversione MIME vulnerabili possono essere usate. [L'avversario crea messaggi e-mail con intestazioni speciali che causeranno un buffer overflow per la routine di conversione MIME vulnerabile. L'intento di questo attacco è quello di sfruttare l'overflow per l'esecuzione di codice arbitrario e ottenere l'accesso alla macchina del server di posta, quindi l'avversario creerà un'e-mail che non solo fa overflow del buffer mirato, ma lo fa in modo tale che l'indirizzo di ritorno sovrascritto sia sostituito con uno a scelta dell'avversario. [Inviare messaggi di posta elettronica al sistema di destinazione con intestazioni appositamente create che innescano l'overflow del buffer ed eseguono il codice della shell. |
Alto |
44 |
Overflow Binary Resource File
Un attacco di questo tipo sfrutta una vulnerabilità di buffer overflow nella gestione delle risorse binarie. Le risorse binarie possono includere file musicali come MP3, file di immagini come file JPEG e qualsiasi altro file binario. Questi attacchi possono passare inosservati alla macchina client attraverso il normale utilizzo dei file, come un browser che carica un file JPEG apparentemente innocente. Questo può permettere all'avversario di accedere allo stack di esecuzione ed eseguire codice arbitrario nel processo di destinazione. [Identificare il software di destinazione] L'avversario identifica il software che utilizza file binari esterni in qualche modo. Questo potrebbe essere un caricamento di file, il download di un file da una posizione condivisa, o altri mezzi. [Trovare il vettore di iniezione] L'avversario crea un file binario dannoso alterando l'intestazione per far sembrare il file più corto di quello che è. Ulteriori byte vengono aggiunti alla fine del file per essere collocati nella posizione di overflow. L'avversario quindi distribuisce il file al software per determinare se un buffer overflow ha avuto successo. [Una volta che l'avversario ha determinato che questo attacco è fattibile, creerà appositamente il file binario in modo da ottenere il comportamento desiderato. Se il codice sorgente è disponibile, l'avversario può creare con cura il file dannoso in modo che l'indirizzo di ritorno sia sovrascritto al valore desiderato. Se il codice sorgente non è disponibile, l'avversario altererà iterativamente il file per sovrascrivere correttamente l'indirizzo di ritorno. [Una volta che l'avversario ha costruito un file che farà effettivamente traboccare il software mirato nel modo previsto. Il file viene distribuito al software, o servendolo direttamente al software o mettendolo in una posizione condivisa per una vittima da caricare nel software. |
Molto alto |
45 |
Overflow del buffer tramite collegamenti simbolici
Questo tipo di attacco sfrutta l'uso di link simbolici per causare buffer overflow. Un avversario può cercare di creare o manipolare un file di collegamento simbolico in modo tale che il suo contenuto risulti in dati fuori dai limiti. Quando il software di destinazione elabora il file di collegamento simbolico, potrebbe potenzialmente far traboccare i buffer interni con un controllo insufficiente dei limiti. [Identificare l'applicazione di destinazione] L'avversario identifica un'applicazione o un programma di destinazione che potrebbe caricare determinati file in memoria. [Trovare il vettore di iniezione] L'avversario identifica un vettore di iniezione per fornire il contenuto eccessivo al buffer dell'applicazione bersaglio. [Creare il contenuto del file di overflow] L'avversario crea il contenuto da iniettare. Se l'intento è semplicemente quello di causare il crash del software, il contenuto deve solo consistere in una quantità eccessiva di dati casuali. Se l'intento è quello di sfruttare l'overflow per l'esecuzione di codice arbitrario, l'avversario crea il payload in modo tale che l'indirizzo di ritorno sovrascritto venga sostituito con uno di sua scelta. [Utilizzando il contenuto del file appositamente creato, l'avversario crea un collegamento simbolico dalla risorsa identificata al file dannoso, causando un attacco mirato di overflow del buffer. |
Alto |
46 |
Variabili e tag di overflow
Questo tipo di attacco sfrutta l'uso di tag o variabili da dati di configurazione formattati per causare un buffer overflow. L'avversario crea una pagina HTML dannosa o un file di configurazione che include stringhe sovradimensionate, causando così un overflow. [L'avversario identifica un'applicazione o un programma di destinazione su cui eseguire l'overflow del buffer. Gli avversari cercano applicazioni o programmi che accettano file formattati, come i file di configurazione, come input. [Trovare il vettore di iniezione] L'avversario identifica un vettore di iniezione per fornire il contenuto eccessivo al buffer dell'applicazione bersaglio. [L'avversario crea il contenuto da iniettare. Se l'intento è semplicemente quello di causare il crash del software, il contenuto deve solo consistere in una quantità eccessiva di dati casuali. Se l'intento è quello di sfruttare l'overflow per l'esecuzione di codice arbitrario, l'avversario crea il payload in modo tale che l'indirizzo di ritorno sovrascritto venga sostituito con uno a scelta dell'avversario. [L'avversario caricherà il file modificato nell'applicazione, causando un overflow del buffer. |
Alto |
47 |
Overflow del buffer tramite espansione dei parametri
In questo attacco, al software di destinazione viene dato un input che l'avversario sa che sarà modificato e ampliato nelle dimensioni durante l'elaborazione. Questo attacco si basa sul fatto che il software di destinazione non riesce ad anticipare che i dati espansi possono superare qualche limite interno, creando così un buffer overflow. [L'avversario identifica un'applicazione o un programma su cui eseguire il buffer overflow. Gli avversari spesso cercano applicazioni che accettano input dall'utente e che eseguono una gestione manuale della memoria. [Trovare il vettore di iniezione] L'avversario identifica un vettore di iniezione per fornire il contenuto eccessivo al buffer dell'applicazione bersaglio. [Creare il contenuto dell'overflow] L'avversario crea l'input da dare al programma. Se l'intento è semplicemente quello di causare il crash del software, l'input deve solo espandersi in una quantità eccessiva di dati casuali. Se l'intento è quello di sfruttare l'overflow per l'esecuzione di codice arbitrario, l'avversario creerà un input che si espande in un modo che non solo fa traboccare il buffer mirato, ma lo fa in modo tale che l'indirizzo di ritorno sovrascritto viene sostituito con uno scelto dall'avversario che punta al codice iniettato dall'avversario. [Usando il vettore di iniezione, l'avversario dà l'input artigianale al programma, facendo traboccare il buffer. |
Alto |
8 |
Buffer Overflow in una chiamata API
Questo attacco prende di mira librerie o moduli di codice condiviso che sono vulnerabili agli attacchi di buffer overflow. Un avversario che ha conoscenza delle librerie o del codice condiviso noto e vulnerabile può facilmente prendere di mira il software che fa uso di queste librerie. Tutti i client che fanno uso della libreria di codice diventano quindi vulnerabili per associazione. Questo ha un effetto molto ampio sulla sicurezza di un sistema, di solito colpendo più di un processo software. [Identificare l'applicazione bersaglio] L'avversario, con la conoscenza delle librerie vulnerabili o dei moduli di codice condiviso, identifica un'applicazione o un programma bersaglio che ne fa uso. [Trovare il vettore di iniezione] L'avversario tenta di utilizzare l'API e, se ci riesce, invia una grande quantità di dati per vedere se l'attacco di buffer overflow funziona davvero. [L'avversario crea il contenuto da iniettare in base alla sua conoscenza della vulnerabilità e al risultato desiderato. Se l'intento è semplicemente quello di causare il crash del software, il contenuto deve solo consistere in una quantità eccessiva di dati casuali. Se l'intento è quello di sfruttare l'overflow per l'esecuzione di codice arbitrario, l'avversario creerà una serie di contenuti che non solo fanno traboccare il buffer mirato, ma lo fanno in modo tale che l'indirizzo di ritorno sovrascritto viene sostituito con uno a scelta dell'avversario che punta al codice iniettato dall'avversario. [Utilizzando l'API come vettore di iniezione, l'avversario inietta il contenuto di overflow artigianale nel buffer. |
Alto |
9 |
Buffer Overflow nelle utilità della riga di comando locali
Questo attacco prende di mira le utilità a riga di comando disponibili in un certo numero di shell. Un avversario può sfruttare una vulnerabilità trovata in un'utilità a riga di comando per aumentare i privilegi a root. [L'avversario prima trova un sistema di destinazione su cui vuole ottenere privilegi elevati. Questo potrebbe essere un sistema a cui ha già un certo livello di accesso o un sistema a cui otterrà un accesso non autorizzato con un privilegio inferiore usando altri mezzi. [L'avversario identifica le utilità della riga di comando esposte dall'host di destinazione che contengono vulnerabilità di buffer overflow. L'avversario probabilmente sa quali utility hanno queste vulnerabilità e quali sono le versioni interessate, quindi otterrà anche i numeri di versione di queste utility. [Una volta che l'avversario ha trovato un'utilità vulnerabile, userà la sua conoscenza della vulnerabilità per creare il comando che sfrutterà il buffer overflow. [Usando il vettore di iniezione, l'avversario esegue il comando creato, ottenendo privilegi elevati sulla macchina. |
Alto |