CWE ID: 170
Name: Improper Null Termination
Das Produkt terminiert nicht korrekt oder beendet eine Zeichenkette oder ein Array fälschlicherweise mit einem Nullzeichen oder einem entsprechenden Terminator.
Null-Termination-Fehler treten häufig auf zwei verschiedene Arten auf. Ein “off-by-one”-Fehler kann dazu führen, dass ein Nullzeichen außerhalb der Grenzen geschrieben wird, was zu einem Overflow führt. Alternativ kann eine fehlerhafte Verwendung der Funktion strncpy()
dazu führen, dass überhaupt kein Nullterminator hinzugefügt wird. Weitere Szenarien sind möglich.
Effektivität: Unknown
Beschreibung: Verwenden Sie eine Sprache, die nicht anfällig für diese Probleme ist. Achten Sie jedoch auf Null-Byte-Interaktionsfehler (CWE-626) mit Low-Level-Konstrukten, die möglicherweise in einer anfälligen Sprache geschrieben wurden.
Effektivität: Unknown
Beschreibung: Stellen Sie sicher, dass alle verwendeten String-Funktionen vollständig verstanden werden, insbesondere im Hinblick darauf, wie sie Null-Zeichen anhängen. Seien Sie außerdem vorsichtig bei Off-by-One-Fehlern beim Anhängen von Null-Zeichen am Ende von Strings.
Effektivität: Unknown
Beschreibung: Wenn die Performance-Anforderungen dies zulassen, kann spezieller Code hinzugefügt werden, der die Null-Terminierung von String-Buffern validiert. Dies ist jedoch eine eher naive und fehleranfällige Lösung.
Effektivität: Unknown
Beschreibung: Wechseln Sie zu String-Manipulationsfunktionen mit Größenbeschränkung. Überprüfen Sie die Pufferlängen, die im Zusammenhang mit der im Defekt gemeldeten Buffer-Overrun-Trace enthalten sind.
Effektivität: Unknown
Beschreibung: Fügen Sie Code hinzu, der Puffer mit Nullbytes füllt (achten Sie jedoch darauf, dass die Länge der Puffer weiterhin überprüft werden muss, um sicherzustellen, dass die nicht null-terminierte Zeichenkette nicht am physischen Ende des Puffers geschrieben wird).