È possibile pianificare le condizioni di gara?

1

È possibile pianificare le condizioni di gara, in modo da poter eseguire comandi specifici in un momento specifico?

Ad esempio, il codice seguente è vulnerabile a una condizione di competizione. È possibile modificare il file / sostituirlo con un link simbolico esattamente quando si verifica la finestra della gara e senza provare continuamente (come con while True )?

if (access("file", W_OK) != 0) {
   exit(1);
}

fd = open("file", O_WRONLY);
write(fd, buffer, sizeof(buffer));

Posso sfruttare questa vulnerabilità con un tentativo o un tentativo? Se la risposta è vera, come posso scrivere un exploit per farlo?

Il cronometraggio del flusso di esecuzione è possibile con la funzione C sleep(seconds); possibile?

    
posta user104787 24.03.2016 - 21:32
fonte

2 risposte

0

Dovresti essere in grado di tracciare l'esecuzione del programma vulnerabile in qualche modo per rilevare quando il codice in questione viene eseguito. Una possibilità sarebbe un debugger o ptrace. Ma per tracciare il programma in questo modo è necessario disporre delle autorizzazioni appropriate, cioè privilegi uguali o superiori rispetto all'utente che esegue il programma. Ma in questo caso non avresti bisogno di sfruttare la vulnerabilità perché hai già gli stessi privilegi o privilegi più elevati.

Un altro modo sarebbe di guardare eventi specifici che vengono solitamente eseguiti poco prima del codice vulnerabile e che sono visibili con privilegi più bassi. Ciò potrebbe includere la creazione di file in directory pubbliche o simili. I dettagli per questi eventi e se esistono dipendono in larga misura dal programma che stai tentando di sfruttare, cioè non esiste un modo generale indipendente dall'applicazione per rilevare il momento in cui la vulnerabilità potrebbe essere sfruttata.

    
risposta data 24.03.2016 - 21:56
fonte
0

Varia in base a una serie di fattori, tra cui sistema operativo e file system. Ad esempio, se il tuo codice sta usando un mount NFS e l'hack è sul fileserver, allora c'è una ragionevole possibilità che un evento inotify faccia il trucco. DFS può introdurre stati bizzarri in cui manca un file appena scritto per le letture: ho visto questo prendere a caso un lavoro di BI che era rimasto stabile per anni.

Naturalmente, nel tuo esempio, sarebbe meglio provare semplicemente ad aprire il file per la scrittura e testare il successo, piuttosto che un controllo esplicito prima di aprire.

    
risposta data 24.03.2016 - 23:57
fonte