Sovraccarichi del buffer e bug delle stringhe di formato sono due metodi da cui gli utenti possono ottenere il controllo su di un programma . Tipicamente presenti nei linguaggi di basso livello come C o C + + , entrambi si basano sulla capacità di un hacker di manipolare l'input dell'utente per fare un programma di esibirsi in modi diversi si intendeva . Sovraccarichi del buffer si basano sulla mancanza di misure di sicurezza in tutto l'input dell'utente , mentre il format string bug 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. Buffer Overrun
Un sovraccarico del buffer può verificarsi durante l' esecuzione di un programma in cui una struttura 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 che contiene i caratteri di prendere in user dati di login . Il programmatore può scegliere di limitare la dimensione della matrice a 25 caratteri . Se il programmatore non mette alcuna garanzia in essere , l'utente può inserire una quantità arbitraria di dati , come un nome di accesso . Quando l'utente fa questo , i caratteri aggiuntivi oltre 25 invase lo spazio di memoria dei dati di matrice e corrotti in locazioni di memoria adiacenti. Questo è chiamato un sovraccarico del buffer .
Sovraccarichi del buffer e Sicurezza
hacker possono usufruire di sovraccarichi del buffer di modificare il percorso di esecuzione del programma. Se un hacker sa come funziona un programma , quindi sa anche che tipo di dati sono vicino alla matrice di caratteri . In programmazione C , le variabili e riferimenti funzionali vengono memorizzati nella memoria . Se una variabile o una funzione di riferimento risiede vicino alla matrice , un hacker può eccedere la matrice in modo tale da modificare il valore di una variabile , in modo che permetterà la login di false credenziali. L'hacker può anche alterare la funzione in modo che venga eseguito codice dannoso , e permette l'hacker nel sistema .
Format Strings
A " stringa di formato " rappresenta un particolare argomento in dotazione per le funzioni di ingresso e uscita in C. per esempio, la funzione "printf ()" prende come primo argomento una stringa di formato che descrive come l' output dovrebbe essere per l'utente. A seguito di questo , la funzione printf ( ) prende una lista variabile di argomenti che rappresentano i dati per l'output formattato con la stringa di formato . In questo esempio i seguenti dati come una stringa di formato funziona nel contesto, con una stringa di formato che contiene un carattere di formato ( " % d" ), che significa che un argomento intero sostituirà quel carattere nell'output :
printf ( " Questo è la stringa di formato , seguita da un numero intero di stampare % d " , 56) ;
stringhe di formato e
problemi di sicurezza stringa di protezione
format si verificano quando un utente riesce ad ingresso un formato stringa contenente caratteri di formattazione non previsto dal programmatore . Quando a) la funzione printf ( viene chiamata , la stringa di formato e gli argomenti lo seguono vengono spinti nella memoria , e la funzione di "passeggiate " attraverso la memoria , sostituendo tutti i caratteri di formattazione con i valori nei corrispondenti indirizzi di memoria . Se un inserto di hacker formattazione di caratteri in una stringa , che può forse leggere i valori dei dati che si trovano da nessuna parte vicino alla pila - e se lei può leggere la pila , lei sa come e dove cambiare i dati e manipolare l'esecuzione del programma
.