• CWE-682: Incorrect Calculation

Das Produkt führt eine Berechnung durch, die fehlerhafte oder unbeabsichtigte Ergebnisse erzeugt, die anschließend in sicherheitskritischen Entscheidungen oder im Ressourcenmanagement verwendet werden.

CWE-682: Incorrect Calculation

CWE ID: 682
Name: Incorrect Calculation

Beschreibung

Das Produkt führt eine Berechnung durch, die fehlerhafte oder unbeabsichtigte Ergebnisse erzeugt, die anschließend in sicherheitskritischen Entscheidungen oder im Ressourcenmanagement verwendet werden.

Erweiterte Beschreibung

Wenn das Produkt eine sicherheitskritische Berechnung fehlerhaft durchführt, kann dies zu falschen Ressourcenallokationen, fehlerhaften Privilege Assignments oder fehlgeschlagenen Vergleichen führen, unter anderem. Viele der direkten Resultate einer fehlerhaften Berechnung können zu noch größeren Problemen führen, wie beispielsweise fehlgeschlagenen Protection Mechanisms oder sogar zu arbitrary code execution.

Risikominderungsmaßnahmen

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Verstehen Sie die zugrunde liegende Repräsentation Ihrer Programmiersprache und wie diese mit numerischen Berechnungen interagiert. Achten Sie besonders auf Diskrepanzen bei der Byte-Größe, Präzisionsunterschiede, signed/unsigned-Unterscheidungen, Truncation, Konvertierung und Casting zwischen Datentypen, “not-a-number”-Berechnungen und wie Ihre Sprache Zahlen behandelt, die zu groß oder zu klein für ihre zugrunde liegende Repräsentation sind.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Führen Sie eine Input-Validierung für numerische Eingaben durch, indem Sie sicherstellen, dass diese innerhalb des erwarteten Bereichs liegen. Erzwingen Sie, dass die Eingabe sowohl die Mindest- als auch die Maximalanforderungen für den erwarteten Bereich erfüllt.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Verwenden Sie den passenden Datentyp für die gewünschte Operation. Beispielsweise sollten in C/C++ nur unsigned Typen für Werte verwendet werden, die niemals negativ sein können, wie beispielsweise Höhe, Breite oder andere Zahlen, die sich auf eine Menge beziehen.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Prüfen Sie Compiler-Warnungen sorgfältig und beseitigen Sie Probleme mit potenziellen Sicherheitsauswirkungen, wie beispielsweise signed / unsigned -Fehler bei Speicheroperationen oder die Verwendung von nicht initialisierten Variablen. Selbst wenn eine Schwachstelle selten ausnutzbar ist, kann ein einziger Fehler zum Kompromittierung des gesamten Systems führen.

Maßnahme (Testing)

Effektivität: Unknown
Beschreibung: Nutzen Sie automatisierte static analysis Tools, die auf diese Art von Schwachstellen abzielen. Viele moderne Techniken verwenden data flow analysis, um die Anzahl der false positives zu minimieren. Dies ist keine perfekte Lösung, da eine 100%ige Genauigkeit und Abdeckung nicht realisierbar sind.

Maßnahme (Testing)

Effektivität: Unknown
Beschreibung: Setzen Sie dynamic Tools und Techniken ein, die mit dem Produkt interagieren und große Testsuiten mit vielfältigen Eingaben verwenden, wie beispielsweise fuzz testing (Fuzzing), robustness testing und fault injection. Der Betrieb des Produkts kann sich verlangsamen, aber es sollte nicht instabil werden, abstürzen oder falsche Ergebnisse generieren.