Rennbedingungen: Bug Bounties
Race Condition Schwachstellen sind meiner Meinung nach eine der interessantesten Web-Schwachstellen. Sie entstehen aus den einfachsten Fehlern, die Entwickler machen, und diese Fehler haben sich als kostspielig erwiesen.
In der Vergangenheit haben Hacker Race Conditions genutzt, um Geld von Online-Banken, Websites für Kryptowährungsbörsen, E-Commerce-Websites und mehr zu stehlen.
Was sind Rennbedingungen?
- Race-Conditions treten auf, wenn zwei Codeabschnitte, die für die Ausführung in einer Sequenz vorgesehen sind, außerhalb der Reihenfolge ausgeführt werden.
- Um diese Schwachstellen besser zu verstehen, müssen Sie zunächst das Konzept der Parallelität verstehen.
- In der Computerprogrammierung ist Nebenläufigkeit die Fähigkeit, verschiedene Teile des Codes gleichzeitig auszuführen, ohne das Ergebnis des Programms zu beeinflussen.
- Es gibt zwei Arten von Parallelität: Multiprocessing und Multithreading.
- Multiprocessing bezieht sich auf die Verwendung mehrerer CPUs zur gleichzeitigen Ausführung von Aufgaben.
- Multithreading bedeutet jedoch, dass eine einzelne CPU die gleichzeitigen Aufgaben unter Verwendung von „Threads“ ausführt. Diese Threads werden jedoch nicht gleichzeitig ausgeführt. Sie nutzen abwechselnd die Leistung der CPU. Wenn ein Thread im Leerlauf ist, können andere Threads weiterhin die ungenutzten Rechenressourcen nutzen. Das Anordnen der Ausführungsreihenfolge mehrerer Threads wird Scheduling genannt.
- Diese Planung verursacht Rennbedingungen.
- Eine Racebedingung wird zu einer Schwachstelle, wenn sie einen Sicherheitskontrollmechanismus betrifft.
- Stellen Sie sich vor, zwei Threads führen den Geldtransfer zwischen Bankkonten durch. Die Anwendung müsste drei Aufgaben erfüllen, um das Geld korrekt zu überweisen. Zuerst prüft es, ob das Ursprungskonto genug Geld hat, dann fügt es das Geld dem Zielkonto hinzu und subtrahiert schließlich den Betrag vom Ursprungskonto.
FADEN 1
- Überprüfen Sie den Kontostand von A (> 100 $); 2. Fügen Sie 100 $ zu Konto B hinzu; 3. Ziehen Sie 100 $ von Konto A ab
- Überprüfen Sie den Kontostand von A (<100 $) => Überweisung schlägt fehl, ungenügendes Guthaben.
- [Thread 1] Überprüfen Sie den Kontostand A (100 $);
- [Thread 2] Überprüfen Sie den Kontostand A (100 $);
- [Thread 1] Fügen Sie 500 $ zu Konto B hinzu; [100 $ in A, 100 $ in B]
- [Thread 2] Fügen Sie 500 $ zu Konto B hinzu; [100 $ in A, 200 $ in B]
- [Thread 1] 500 $ von Konto A abziehen; [0$ in A; 200 $ in B]
- [Thread 2] 500 $ von Konto A abziehen; [0$ in A; 200 $ in B]
Obwohl Schwachstellen in Race-Conditions meistens mit Finanz-Websites in Verbindung gebracht werden, können Hacker sie auch in anderen Situationen verwenden, wie zum Beispiel bei der Manipulation von Online-Wahlkampagnen.
Wie man etwas vorbeugt
Das Konzept der Synchronisation ist wichtig, wenn es um Parallelität in der Programmierung geht. Dabei muss sichergestellt werden, dass Threads oder Prozesse nicht gleichzeitig auf gemeinsam genutzte Ressourcen zugreifen, da dies zu Race Conditions und Dateninkonsistenzen führen kann. Eine Möglichkeit zur Synchronisierung ist die Verwendung von Ressourcensperren, die andere Threads daran hindern, auf eine Ressource zuzugreifen, bis der Thread, der die Sperre hält, damit fertig ist.
Neben der Synchronisierung ist es auch wichtig, sichere Codierungspraktiken zu befolgen, um zu verhindern, dass Race-Conditions zu schwerwiegenderen Sicherheitsproblemen werden. Das Prinzip der geringsten Rechte ist eine solche Praxis, bei der Anwendungen und Prozessen nur die Rechte gewährt werden, die sie zur Erfüllung ihrer Aufgaben benötigen. Wenn eine Anwendung beispielsweise eine Datei nur lesen muss, sollten ihr keine Schreib- oder Ausführungsberechtigungen erteilt werden. Dadurch wird das Risiko einer Systemkompromittierung während eines Angriffs verringert.
Wie jagen?
1. Finden Sie Merkmale, die für Rennbedingungen anfällig sind:
- Wettlaufbedingungen treten häufig bei Funktionen auf, die die Aktualisierung numerischer Werte beinhalten, wie z. B. Online-Abstimmungen, Spielergebnisse, Banküberweisungen, E-Commerce-Zahlungen und Guthaben von Geschenkkarten. Um diese Funktionen in einer Anwendung zu identifizieren, können Sie nach Anforderungen suchen, die an der Aktualisierung dieser Nummern beteiligt sind. Wenn Sie beispielsweise die Anfrage testen möchten, die zum Überweisen von Geld von einer Banking-Website verwendet wird, können Sie die Anfrage mit Burp Suite kopieren, indem Sie mit der rechten Maustaste darauf klicken und „Als Curl-Befehl kopieren“ auswählen.
- Um Race Conditions in einem Ziel zu testen und potenziell auszunutzen, können Sie mehrere Anfragen gleichzeitig an den Server senden. Wenn Sie beispielsweise prüfen möchten, ob es möglich ist, mehr Geld zu überweisen, als Sie auf Ihrem Bankkonto haben, können Sie mit dem Curl-Befehl mehrere Überweisungsanfragen gleichzeitig senden. Eine Möglichkeit, dies zu tun, besteht darin, den Befehl von Burp zu kopieren, ihn in das Terminal einzufügen und dann zwischen jedem Befehl ein „&“-Symbol einzufügen. Dadurch können Sie auf einem Linux-System mehrere Befehle gleichzeitig im Hintergrund ausführen.
curl (transfer $3000) & curl (transfer $3000) & curl (transfer $3000)
& curl (transfer $3000) & curl (transfer $3000) & curl (transfer $3000)
- Dies ist ein Kinderspiel, überprüfen Sie, ob Ihr Angriff erfolgreich war
Es ist wichtig, die potenziellen Auswirkungen einer Racebedingung auf die betroffene Funktionalität zu berücksichtigen, wenn der Schweregrad der Sicherheitsanfälligkeit bewertet wird. Eine Race Condition, die es einem Angreifer ermöglicht, sich unbegrenzten Zugang zu finanziellen Ressourcen zu verschaffen, beispielsweise durch Bargeldabhebungen oder Geldtransfers, könnte sowohl für die betroffenen Personen als auch für die Organisation sehr schädlich sein.
Zusätzlich zum finanziellen Gewinn kann ein Angreifer eine Rassenbedingung nutzen, um sozialen Einfluss oder Zugriff auf vertrauliche Informationen zu erlangen. Beispielsweise könnte eine Race Condition, die es einem Angreifer ermöglicht, unbefugten Zugriff auf ein Social-Media-Konto zu erlangen, möglicherweise dazu verwendet werden, Fehlinformationen zu verbreiten oder die öffentliche Meinung zu manipulieren.
Bei der Berichterstattung über die Auswirkungen einer Race Condition ist es wichtig, die potenziellen Folgen für die betroffenen Personen und die Organisation klar zu artikulieren. Dies kann den potenziellen finanziellen Verlust, den Verlust vertraulicher Informationen oder die Schädigung des Rufs der Organisation umfassen. Die Bereitstellung klarer und detaillierter Informationen über die potenziellen Auswirkungen der Schwachstelle kann dazu beitragen, die Lösung zu priorisieren und die potenziellen Folgen abzumildern.
Ich hoffe, dieser Blogbeitrag hat geholfen! Viel Spaß beim Jagen und frohe Weihnachten!

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































