Che cosa è una race condition?
Una corsa condizione si verifica quando più processi di accedere e manipolare gli stessi dati contemporaneamente, e il risultato della esecuzione dipende dal modo particolare in cui l'accesso avviene.
Una corsa condizione è di interesse per un hacker, quando la corsa condizione può essere utilizzata per ottenere privilegi di accesso al sistema.
Si consideri il seguente frammento di codice che illustra una race condition:
if (accesso ( "/ tmp / datafile", R_OK) == 0) (
fd = open ( "/ tmp / datafile
processo (fd);
close (fd);
Questo codice crea il file temporaneo / tmp / datafile e poi apre.
Il potenziale condizione si verifica tra la richiesta di accesso () e la chiamata alla open ().
Se un utente malintenzionato può sostituire il contenuto di / tmp / datafile tra l'accesso () e open () funzioni, egli può manipolare le azioni del programma che usi che datafile. Questa è la gara.
Può essere difficile per sfruttare una race condition, perché potrebbe essere necessario "correre la gara" molte volte prima di "vincere". Potrebbe essere necessario eseguire il programma vulnerabile e la vulnerabilità di test strumento migliaia di volte prima di ottenere il codice da eseguire expolit dopo la vulnerabilità prima che si apre e si chiude la vulnerabilità. A volte è possibile dare un ulteriore attacco al bordo utilizzando `bella` di ridurre la priorità del programma suid legittimo.
Un uso improprio delle chiamate di funzione di accesso (), chown (), chgrp (), chmod (), mktemp (), tempnam (), tmpfile (), e tmpnam () sono le normali cause di una race condition.
|






