IT-Sicherheit Glossar

Was ist eine Race Condition?

Eine Race Condition tritt auf, wenn zwei oder mehr Vorgänge fast gleichzeitig auf einen gemeinsamen Zustand zugreifen und die Anwendung eine Reihenfolge voraussetzt, die nicht garantiert ist. Der Code wirkt bei einer einzelnen Anfrage korrekt, versagt aber bei paralleler Ausführung. Sicherheitsrelevante Beispiele sind das doppelte Einlösen eines Gutscheins, das Überschreiten eines Überweisungslimits oder das Austauschen einer Datei zwischen Prüfung und Verwendung.

Besonders anfällig ist das Muster „prüfen und anschließend handeln“: Die Anwendung kontrolliert eine Bedingung und führt die Aktion erst danach aus. Dazwischen liegt ein kleines Zeitfenster, in dem eine weitere Anfrage den Zustand verändern kann.

Wie werden Race Conditions verhindert?

  • - Kritische Vorgänge atomar ausführen und Regeln möglichst in der Datenbank erzwingen.
  • - Transaktionen, geeignete Sperren oder Compare-and-Swap-Mechanismen verwenden.
  • - Zustandsändernde APIs idempotent gestalten und eindeutige Vorgangskennungen nutzen.
  • - Wichtige Geschäftsabläufe mit synchronisierten parallelen Anfragen testen.

Codebeispiel: Gutschein atomar einlösen

Verwundbares Check-then-act-Muster:

$voucher = Voucher::findOrFail($id);
if (!$voucher->redeemed) {
    creditAccount($user, $voucher->amount);
    $voucher->update(['redeemed' => true]);
}

Atomar mit Transaktion und Sperre:

DB::transaction(function () use ($id, $user) {
    $voucher = Voucher::query()
        ->lockForUpdate()
        ->findOrFail($id);

    abort_if($voucher->redeemed, 409);
    creditAccount($user, $voucher->amount);
    $voucher->update(['redeemed' => true]);
});

Die Sperre muss dieselbe Datenbanktransaktion wie Gutschrift und Statusänderung umfassen. Eindeutige Constraints und Idempotency Keys bieten zusätzliche, oft robustere Invarianten.

Warum sind diese Fehler schwer zu finden?

Sie treten oft nur in einem engen Zeitfenster auf und verschwinden beim Debugging. Ein zuverlässiger Test koordiniert Anfragen präzise und prüft den endgültigen Zustand, nicht nur einzelne HTTP-Antworten.

Penetrationstests

Sicherheitslücken aufdecken

Professionelle Penetrationstests für Ihr Unternehmen

Web Apps
Netzwerke
Mobile Apps
10% Neukunden-Rabatt
Jetzt planen

Mehr Informationsmaterial

Vielen Dank für dein Feedback! Wir werden es prüfen und unseren Artikel anpassen.

Hast du Feedback zum Thema Race Condition? Schreib uns!