Che cos'è un formato stringa a causa di una vulnerabilità?
Per capire ciò che una stringa di formato è vulnerabilità, è necessario prima di sapere che cosa è un formato stringa. Una stringa di formato è un modo di raccontare il compilatore C come dovrebbe formato numeri quando li stampe.
Formato Strings in C
Nel linguaggio di programmazione C ci sono una serie di funzioni che accetta una stringa di formato come un argomento. Queste funzioni includono fprintf, printf, sprintf, snprintf, vfprintf, vprintf, vsprintf, vsnprintf, setproctitle, syslog, e altri.
Il più comune di questi è printf. L'uso di printf è:
printf formato [argomenti ...]
printf uscite il valore di [argomenti ...] nel formato specificato dal formato.
Un esempio di chiamata a printf è:
printf ( "Il codice è:% d \ n", 303);
Specificatori di formato supportato variano da un compilatore C per il prossimo. Il formato supportato sotto FreeBSD specificatori sono:
% d Convertire intero a stringa decimale firmato. % u Convertire intero a stringa unsigned decimale. % i Convertire intero a stringa decimale firmato; il numero intero può essere in decimali, in ottale (con uno 0) o in formato esadecimale (con un leader 0x). % O Convertire intero a stringa unsigned ottale. x% o% X Convertire intero a unsigned stringa esadecimale, utilizzando cifre 0123456789abcdef `` x''per''e `` 0123456789ABCDEF per X). % c Convertire intero a caratteri Unicode che rappresenta. % s N. conversione; basta inserire stringa. % f Convertire in virgola mobile al numero decimale firmato stringa della forma xx.yyy, dove il numero di Y's è determinata dalla precisione (default: 6). Se la precisione è 0, allora nessun punto decimale viene emesso. o% e% E Convertire in virgola mobile il numero di notazione scientifica in forma x.yyye +-zz, dove il numero di Y's è determinata dalla precisione (default: 6). Se la precisione è 0, allora nessun punto decimale viene emesso. E se la forma è usato E poi è stampato invece di e. % g% o G Se l'esponente è inferiore a -4 o maggiore o uguale alla precisione, poi convertito in virgola mobile per numero di% e% o E. Altrimenti, come per convertire% f. Trailing zeri e un punto decimale in ritardo sono state omesse. %% N. conversione: basta inserire%.
Per maggiori informazioni su specificatori di formato, consultate la pagina man per il "formato" sul vostro sistema Unix più vicino.
Format String Vulnerability Attacchi
Vulnerabilità format string attacchi si dividono in tre categorie: la negazione del servizio, la lettura e la scrittura.
- Stringa di formato vulnerabilità di tipo Denial of Service sono caratterizzati da attacchi utilizzando istanze multiple di formato% s specifier a leggere i dati della pila fino a quando il programma tenta di leggere i dati da un indirizzo illegale, che a causare il crash del programma.
- Vulnerabilità format string lettura attacchi tipicamente% x utilizzare il formato di stampa specifier sezioni di memoria che normalmente non hanno accesso.
- Vulnerabilità format string attacchi utilizzare la scrittura% d,% u% o x formato specificatori di sovrascrivere l'Istruzione e la forza Puntatore esecuzione di utente fornito il codice di shell.
Ulteriori fonti di informazione su Format String Vulnerabilità
Per ulteriori informazioni sul formato stringa di sfruttare le vulnerabilità, fare riferimento alla Sfruttare Formato Stringa Vulnerabilità da SCUT, e Format String Attacchi da Tim Newsham.
Ulteriori informazioni su come prevenire le vulnerabilità nel formato stringa di codice sorgente con questi ottimi libri sulla programmazione sicura da Amazon.com
|


