Web Programmierung

Race Condition-Schwachstellen in Webanwendungen

Race Condition-Schwachstellen in Webanwendungen
Wenn eine Webanwendung, die für die Verwaltung von Funktionen in einer festen Reihenfolge konfiguriert ist, zwei oder mehr Operationen gleichzeitig ausführen muss, kommt es zu einem Race Condition-Angriff attack. Diese Technik nutzt eine Zeitverzögerung zwischen der Einführung eines Dienstes und dem Auftreten einer Sicherheitskontrolle. Dieser Angriff kann basierend auf Multithread-Anwendungen auf zwei Arten durchgeführt werden: Eindringen durch nicht vertrauenswürdige Prozesse und Eindringen durch einen vertrauenswürdigen Prozess, der die gleichen und gleichen Rechte haben könnte.

Unterschiedliche Prozesse können ohne adäquate Maßnahmen miteinander interagieren. Diese Angriffe werden auch als Time-of-Check-Angriff, Time-of-Use-Angriff oder TOC/TOU-Angriffe bezeichnet. Race-Condition-Schwachstellen sind in erster Linie aufgrund grundlegender Programmierfehler vorhanden, die Entwickler normalerweise erstellen, und diese Ausfälle haben sich als kostspielig erwiesen. Böswillige Entitäten haben Race Conditions für viele böswillige Zwecke ausgenutzt, d.h.e., davon, kostenlose Gutscheine zu erhalten, um Geld von Online-Konten und Wertpapierfirmen zu stehlen.

Nehmen wir an, dass zwei parallele Ausführungsthreads versuchen, den Wert einer globalen Variablen um 5 . zu erhöhen. Letztendlich hätte die globale Variable dann einen Wert von 10. Wenn jedoch alle Threads gleichzeitig ausgeführt werden, kann die Ausführung ohne Ressourcensperren oder Synchronisation fehlschlagen. Wenn der erste Thread einige Manipulationen an dieser globalen Variablen vornimmt, liest der zweite Thread sie und beginnt mit einigen anderen Manipulationen. In diesem Fall wäre der Endwert nicht wie erwartet.

Dies tritt auf, da der Effekt einer Thread-Beendigung vom Ergebnis des anderen abhängt. Wenn die beiden Threads gleichzeitig ausgeführt werden, gibt es unbeabsichtigte Konsequenzen.

Umfang der Race Condition-Angriffe:

Stellen Sie sich vor, dass etwas Kritischeres von den beiden Threads des obigen Beispiels ausgeführt wird, wie zum Beispiel Geldwechsel zwischen Bankkonten. Um das Geld korrekt zu senden, muss das Programm diese Aufgaben in dieser Reihenfolge ausführen; Überprüfen Sie, ob auf dem Konto des Absenders genügend Guthaben vorhanden ist, fügen Sie Geld auf das Konto des Empfängers hinzu und ziehen Sie es dann vom Konto des Absenders ab. Wenn Sie jedoch gleichzeitig zwei Anforderungen senden, können Sie möglicherweise eine Bedingung auslösen, in der sich die Reihenfolge der Thread-Ausführung ändert. In einer Situation wie dieser erhalten Sie einen anderen Betrag als erwartet.

Egor Homakov hat auf der Starbucks-Website eine Race Condition-Schwachstelle gefunden. Er entdeckte eine Möglichkeit, mit verschiedenen Browsern mit unterschiedlichen Cookies kostenlos unendlich viel Guthaben für Starbucks-Geschenkgutscheine zu erstellen.

Der prominente Meltdown-Angriff ist ein Beispiel für eine Race Condition-Schwachstelle. Beim Meltdown-Angriff wird die Schwachstelle durch die parallele Verarbeitung des Datenabrufs aus dem Speicher und der Authentifizierung, ob ein Benutzer auf den Speicher zugreifen darf oder nicht, ausgelöst. Dieser Fehler ermöglicht es einem Tool, Standardberechtigungsprüfungen zu vermeiden, die den Angriffsmechanismus vom Zugriff auf Betriebssystemdaten trennen. Diese Lücke führt dazu, dass nicht autorisierte Prozesse Daten und Informationen von jeder anderen Adresse anzeigen können, die mit dem aktuellen Status des Fortschritts im Speicher verbunden ist. Bei fehlerhafter Ausführung werden Informationen von einer nicht genehmigten Adresse häufig schnell in den Cache der CPU gestapelt, aus dem die Informationen wiederhergestellt werden können.

Angriffsszenarien aus der Praxis:

Indem Sie kontinuierlich zahlreiche Anfragen an den Webserver senden, können Sie Race-Conditions in Webanwendungen suchen und manipulieren. Wenn Sie sehen möchten, ob Sie mehr Geld abheben können, als Sie auf Ihrem Bankkonto haben, können Sie mit der Curl-Funktion mehrere Auszahlungsanfragen gleichzeitig an den Server senden send.

curl (50000 zurückziehen) & (500000 zurückziehen) & (500000 zurückziehen) & (500000 zurückziehen) & (500000 zurückziehen) & (500000 zurückziehen

Je mehr Forderungen Sie in kurzer Zeit stellen, desto höher sind die Chancen, dass Ihr Angriff funktioniert.

Wenn Sie asynchrone Folgeanfragen senden, folgen Sie einem Benutzer außerdem mehrmals, anstatt eine Fehlerantwort zu senden. ich.e., Wenn Sie einen gefälschten Header mit %s hinzufügen, während Sie Anfragen mit Turbo Intruder fallen lassen, und fügen Sie den folgenden Python-Code ein:

def followReqs(Ziel, Wortlisten):
Engine = RequestEngine(endpoint=target.Endpunkt,
concurrentConnections=40,
RequestsPerConnection=100,
Pipeline=Falsch
)
für i im bereich(40):
Motor.Warteschlange (Ziel).req, str(i), gate='check')
Motor.openGate('check')
Motor.abgeschlossen (Zeitüberschreitung=60)
def responseHandle(req, interessant):
Tabelle.hinzufügen(erforderlich)

Sie sehen eine Angriffsschaltfläche. Danach sendet der Turbo Intruder 40 Anfragen und scannt die Statuscodes. Wenn Sie mehrere Antworten mit dem Status 201 Generiert sehen, bedeutet dies, dass Sie der Person mehrmals gefolgt sind.

Es gibt eine Race Condition-Schwachstelle, durch die Sie auf mehrere Konsolen zugreifen können, die kostenlosen Konten angeboten werden. Die meisten Websites, die kostenlose Konsolen anbieten, haben kostenlose Konten, Standard- und Premium-Pakete. Kostenlose Konten bieten nur 2 oder 3 Konsolen pro Benutzer. Um dieses Limit zu überschreiten und eine unbegrenzte Anzahl von Konsolen zu verwenden, greifen Sie die GET-Anforderung mehrmals mit NULL-Payloads ein, z. B. 100 oder 200. Und löschen Sie dann eine der Konsolen manuell von der Benutzeroberfläche, während Threads ausgeführt werden.

Fazit:

Um die Zugangskontrollen zu untergraben, sind Race-Conditions enthalten. Jedes Programm, das auf Zugriffskontrollmechanismen angewiesen ist, kann angreifbar sein. Meistens nutzen Hacker auf den Websites von Finanzinstituten die Rassenbedingungen aus. Da es für den Hacker zu unbegrenzten finanziellen Vorteilen führen könnte, wenn eine Race Condition bei einem wichtigen Merkmal wie Bargeldabhebung, Geldüberweisung oder Kreditkartenzahlung entdeckt werden könnte. E-Commerce-Plattformen, Videospiele und Online-Abstimmungsdienste sind weitere risikoreiche Technologien. Die Implementierung einer sicheren Parallelität ist das Geheimnis, um Rennbedingungen zu vermeiden. Und Sie können auch Ressourcensperren verwenden. Es wird auch eine integrierte Sperrfunktion für Programmiersprachen mit Parallelitätsfähigkeiten geben, die dazu beitragen, solche Bedingungen zu verhindern. Darüber hinaus befolgen Sie sichere Codierungsstandards, i.e., Das Konzept der geringsten Rechte und der Auditing-Code verringern die Wahrscheinlichkeit einer Verletzung des Programms.

Battle for Wesnoth-Tutorial
The Battle for Wesnoth ist eines der beliebtesten Open-Source-Strategiespiele, die Sie derzeit spielen können. Dieses Spiel befindet sich nicht nur se...
0 A.D. Lernprogramm
Von den vielen Strategiespielen da draußen, 0 A.D. schafft es, sich trotz Open Source als umfassender Titel und sehr tiefgehendes, taktisches Spiel ab...
Unity3D-Tutorial
Einführung in Unity 3D Unity 3D ist eine leistungsstarke Engine für die Spieleentwicklung. Es ist plattformübergreifend, das heißt, Sie können Spiele ...