• CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

Das Produkt enthält eine konkurrente Code-Sequenz, die temporären, exklusiven Zugriff auf eine gemeinsam genutzte Ressource benötigt. Es besteht jedoch ein Timing-Fenster, in dem die gemeinsam genutzte Ressource von einer anderen, gleichzeitig operierenden Code-Sequenz modifiziert werden kann.

CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

CWE ID: 362
Name: Concurrent Execution using Shared Resource with Improper Synchronization (‘Race Condition’)

Beschreibung

Das Produkt enthält eine konkurrente Code-Sequenz, die temporären, exklusiven Zugriff auf eine gemeinsam genutzte Ressource benötigt. Es besteht jedoch ein Timing-Fenster, in dem die gemeinsam genutzte Ressource von einer anderen, gleichzeitig operierenden Code-Sequenz modifiziert werden kann.

Risikominderungsmaßnahmen

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Nutzen Sie in Sprachen, die dies unterstützen, Synchronisation primitives. Beschränken Sie diese lediglich auf den kritischen Code, um die Auswirkungen auf die Performance zu minimieren.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Nutzen Sie thread-sichere Funktionalitäten wie die Data Access Abstraction in Spring.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Bei der Verwendung von Multithreading und dem Zugriff auf gemeinsam genutzte Variablen sollten ausschließlich thread-sichere Funktionen verwendet werden.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Verwenden Sie für den Zugriff auf gemeinsam genutzte Variablen atomic operations. Seien Sie vorsichtig bei scheinbar harmlosen Konstrukten wie “x++”. Diese können auf Code-Ebene atomar erscheinen, sind auf Instruktions-Ebene jedoch in der Regel nicht atomar, da sie aus einem Read-Vorgang, gefolgt von einer Berechnung und anschließend einem Write-Vorgang bestehen.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Nutzen Sie, falls verfügbar, ein mutex, achten Sie aber darauf, damit verbundene Schwachstellen wie CWE-412 zu vermeiden.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Vermeiden Sie double-checked locking (CWE-609) und andere Implementierungsfehler, die entstehen, wenn versucht wird, den Overhead der Synchronisation zu umgehen.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Deaktivieren Sie Interrupts oder Signale über kritische Codeabschnitte, stellen Sie aber sicher, dass der Code nicht in eine große oder unendliche Schleife gerät.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Verwenden Sie den volatile-Typmodifikator für kritische Variablen, um unerwartete Compileroptimierungen oder -neuarten zu vermeiden. Dies löst das Synchronisationsproblem nicht zwangsläufig, kann aber hilfreich sein.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Führen Sie Ihren Code mit den minimal erforderlichen Berechtigungen aus, die zur Erledigung der notwendigen Aufgaben benötigt werden [REF-76]. Wenn möglich, erstellen Sie isolierte Accounts mit eingeschränkten Berechtigungen, die ausschließlich für eine einzelne Aufgabe verwendet werden. Auf diese Weise gewährt ein erfolgreicher Angriff dem Angreifer nicht unmittelbar Zugriff auf den Rest der Software oder ihrer Umgebung. Beispielsweise benötigen Datenbankanwendungen selten die Ausführung als Datenbankadministrator, insbesondere im Rahmen des täglichen Betriebs.