Come può il superamento & Format String Bug Modificare il flusso del programma del vostro programma?

November 8

sovraccarichi del buffer e bug stringa formato sono due metodi da cui gli utenti possono ottenere il controllo su un programma. In genere si trovano in linguaggi di livello inferiore come C o C ++, entrambi si basano sulla capacità di un hacker di manipolare l'input dell'utente per fare un programma di eseguire in modi diversi si intendeva. sovraccarichi del buffer si basano su una mancanza di misure di sicurezza in tutto l'input dell'utente, mentre gli insetti format string si verificano all'interno della funzionalità di input / output effettivo di un linguaggio di programmazione. Capire come ogni opera richiede una comprensione del perché si verificano nel codice.

sovraccarico del buffer

Un sovraccarico del buffer può verificarsi durante l'esecuzione del programma, quando una struttura di dati del buffer destinato a gestire l'input dell'utente è dato troppi dati da gestire. Ad esempio, un programmatore potrebbe dichiarare una struttura a matrice contenente caratteri di prendere in utente di log-in di dati. Il programmatore può scegliere di limitare le dimensioni della matrice a 25 caratteri. Se il programmatore non mette alcun garanzie in atto, l'utente può inserire una quantità arbitraria di dati come nome di log-in. Quando l'utente fa questo, i personaggi più oltre 25 superamento dello spazio di memoria della matrice e dati corrotti in locazioni di memoria adiacenti. Questo è chiamato un buffer overrun.

BUFFER PIENO e sicurezza

Gli hacker possono usufruire di sovraccarichi del buffer di modificare il percorso di esecuzione del programma. Se un hacker sa come funziona un programma, poi sa anche quali tipi di dati sono vicino l'array di caratteri. Nella programmazione C, le variabili ei riferimenti alle funzioni vengono memorizzati nella memoria. Se un riferimento variabile o una funzione risiede vicino alla matrice, un hacker può invadere la matrice in modo tale da variare il valore di una variabile, in modo che permetterà accedere con false credenziali. L'hacker può anche alterare la funzione di essere eseguito codice dannoso, e consente l'hacker nel sistema.

stringhe di formato

A "stringa di formato" rappresenta un particolare argomento in dotazione alle funzioni di ingresso e di uscita in C. Ad esempio, il "printf ()" funzione prende come primo argomento una stringa di formato che descrive come l'uscita dovrebbe essere per l'utente. In seguito a questo, la funzione printf () prende una lista variabile di argomenti che rappresentano i dati di uscita come formattato dalla stringa di formato. Questo esempio che segue descrive come una stringa di formato funziona in un contesto, con una stringa di formato contiene un carattere di formato ( "% d"), che significa che un argomento intero sostituirà quel personaggio in uscita:

printf ( "Questa è la stringa di formato, seguita da un numero intero di stampare% d", 56);

Format Strings e sicurezza

si verificano problemi di sicurezza stringa di formato quando un utente riesce ad inserire una stringa di formato che contiene caratteri di formattazione non destinate dal programmatore. Quando una funzione printf () viene chiamato, la stringa di formato e gli argomenti seguenti si sono spinti in memoria e la funzione "passeggiate" attraverso la memoria, sostituendo tutti i caratteri di formattazione con i valori in corrispondenti posizioni di memoria. Se un hacker inserisce caratteri di formattazione in una stringa, si può eventualmente leggere i valori dei dati che si trovano ovunque nelle vicinanze sullo stack - e se lei può leggere lo stack, lei sa come e dove modificare i dati e manipolare l'esecuzione del programma.