• CWE-131: Incorrect Calculation of Buffer Size

Das Produkt berechnet die für die Allokation eines Buffers zu verwendende Größe nicht korrekt, was zu einem Buffer Overflow führen könnte.

CWE-131: Incorrect Calculation of Buffer Size

CWE ID: 131
Name: Incorrect Calculation of Buffer Size

Beschreibung

Das Produkt berechnet die für die Allokation eines Buffers zu verwendende Größe nicht korrekt, was zu einem Buffer Overflow führen könnte.

Risikominderungsmaßnahmen

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Bei der Allokation eines Buffers für die Transformation, Konvertierung oder das Encoding eines Inputs sollte ausreichend Speicher reserviert werden, um die größte mögliche Encoding-Größe zu berücksichtigen. Beispielsweise benötigt ein Routine, die “&"-Zeichen in “&” für HTML Entity Encoding konvertiert, einen Output Buffer, der mindestens das 5-fache der Größe des Input Buffers beträgt.

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. Stellen Sie sicher, dass die Eingabe sowohl die Mindest- als auch die Maximalanforderungen für den erwarteten Bereich erfüllt.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Für alle Sicherheitsprüfungen, die clientseitig durchgeführt werden, stellen Sie sicher, dass diese serverseitig dupliziert werden, um CWE-602 zu vermeiden. Angreifer können clientseitige Prüfungen umgehen, indem sie Werte nach der Durchführung der Prüfungen modifizieren oder den Client verändern, um die clientseitigen Checks vollständig zu entfernen. Anschließend würden diese modifizierten Werte an den Server übermittelt.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Bei der Verarbeitung strukturierter, eingehender Daten, die ein Size-Feld vor den Rohdaten enthalten, identifizieren und beheben Sie jegliche Inkonsistenzen zwischen dem Size-Feld und der tatsächlichen Größe der Daten (CWE-130).

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Wenn Speicher zugewiesen wird, der Sentinels zur Markierung des Endes einer Datenstruktur verwendet – beispielsweise NUL-Bytes in Strings – stellen Sie sicher, dass Sie das Sentinel auch in Ihre Berechnung der gesamten zu reservierenden Memory-Größe einbeziehen.

Maßnahme (Implementation)

Effektivität: Moderate
Beschreibung: Ersetzen Sie unbegrenzte Copy-Funktionen durch analoge Funktionen, die Längenargumente unterstützen, wie beispielsweise strcpy durch strncpy. Erstellen Sie diese Funktionen, falls sie nicht verfügbar sind. Notizen: Dieser Ansatz ist weiterhin anfällig für Rechenfehler, einschließlich Problemen wie “off-by-one” Fehler (CWE-193) und fehlerhafter Berechnung von Pufferlängen (CWE-131). Darüber hinaus adressiert dies lediglich potenzielle Overflow-Probleme. Ressourcenverbrauch/Erschöpfungsprobleme sind weiterhin möglich.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Verwenden Sie sizeof() auf dem entsprechenden Datentyp, um CWE-467 zu vermeiden.

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 Mengen beziehen. Dies vereinfacht die Validierung und reduziert unerwartete Überraschungen durch unerwartete casts.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Prüfen Sie Compiler-Warnungen sorgfältig und beseitigen Sie Probleme mit potenziellen Sicherheitsimplikationen, wie beispielsweise signed/ unsigned-Fehlmatches 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 (Architecture and Design)

Effektivität: Unknown
Beschreibung: Führen Sie Ihren Code mit den niedrigsten Berechtigungen aus, die zur Erfüllung der notwendigen Aufgaben erforderlich sind [REF-76]. Erstellen Sie nach Möglichkeit isolierte Konten mit eingeschränkten Berechtigungen, die ausschließlich für eine einzelne Aufgabe verwendet werden. So kann ein erfolgreicher Angriff dem Angreifer nicht sofort Zugriff auf den Rest der Software oder deren Umgebung gewähren. Beispielsweise benötigen Datenbankanwendungen selten die Ausführung als Datenbankadministrator, insbesondere im Rahmen des täglichen Betriebs.