CWE ID: 764
Name: Multiple Locks of a Critical Resource
Das Produkt sperrt eine kritische Ressource mehrfach als beabsichtigt, was zu einem unerwarteten Systemzustand führt.
Bei Betrieb in einer concurrent Umgebung und wiederholtem Sperren einer kritischen Ressource variieren die Konsequenzen je nach Lock-Typ, der Implementierung des Locks und der geschützten Ressource. In bestimmten Situationen, beispielsweise bei der Verwendung von Semaphores, werden die Ressourcen gepoolt, und zusätzliche Locking-Aufrufe reduzieren die Größe des verfügbaren Gesamtpools, was möglicherweise zu einer verschlechterten Performance oder einem Denial of Service führen kann. Wenn dies durch einen Angreifer ausgelöst werden kann, ähnelt es einem unbeschränkten Lock (CWE-412). Im Kontext eines binären Locks ist es wahrscheinlich, dass jegliche duplizierte Locking-Versuche fehlschlagen, da der Lock bereits gehalten wird und der Fortschritt möglicherweise nicht möglich ist.
Effektivität: Unknown
Beschreibung: Beim Sperren und Entsperren einer Ressource sollte sichergestellt werden, dass alle Kontrollpfade durch den Code, in dem die Ressource einmal oder mehrmals gesperrt wird, exakt der gleichen Anzahl von Entsperren entsprechen. Wenn die Software einen Lock erwirbt und anschließend feststellt, dass sie ihr beabsichtigtes Verhalten nicht ausführen kann, sollte der/die Lock(s) freigegeben werden, bevor auf eine Verbesserung der Bedingungen gewartet wird. Vor dem erneuten Versuch sollten der/die Lock(s) erneut erworben werden.