Was ist eine Race Condition?
Eine Race-Bedingung tritt auf, wenn mehrere Prozesse und manipulieren die gleichen Daten gleichzeitig, und das Ergebnis der Ausführung hängt von der Reihenfolge, in dem der Zugang erfolgt.
Eine Race-Bedingung ist von Interesse für ein Hacker, wenn die Race-Bedingung verwendet werden kann, um privilegierten Zugang System.
Betrachten Sie die folgende Code-Snippet die zeigt eine Race-Bedingung:
if (access ( "/ tmp / datafile", R_OK) == 0) (
fd = open ( "/ tmp / datafile
Prozess (fd);
close (fd);
Dieser Code erstellt die temporäre Datei / tmp / datafile und dann klappt es.
Das Potenzial Race Condition zwischen der Forderung, den Zugang () und der Aufruf von open ().
Wenn ein Angreifer ersetzen können den Inhalt der Datei / tmp / datafile zwischen dem Zugang () und open ()-Funktionen, so können die Maßnahmen des Programms, dass die Datei verwendet. Dies ist das Rennen.
Es kann schwierig sein, um eine Race-Bedingung, da müssen Sie möglicherweise "das Rennen" viele Male, bevor Sie "win". Sie müssen möglicherweise das angreifbare Programm und der Anfälligkeit Testwerkzeug Tausende Male, bevor Sie die expolit Code der nach der die Sicherheitslücke öffnet und vor der Schwachstelle schließt. Manchmal ist es möglich, den Angriff einen zusätzlichen Vorteil durch die Benutzung von "Nizza", um die Priorität der legitimen suid Programm.
Missbräuchliche Verwendung der Funktionsaufrufe Zugang (), chown (), chgrp (), chmod (), mktemp (), tempnam (), tmpfile () und tmpnam () sind die üblichen Ursachen für eine Race Condition.
|






