CWE ID: 20
Name: Improper Input Validation
Das Produkt empfängt Eingaben oder Daten, validiert diese jedoch nicht oder führt eine fehlerhafte Validierung durch, sodass nicht sichergestellt ist, dass die Eingaben die Eigenschaften aufweisen, die für eine sichere und korrekte Datenverarbeitung erforderlich sind.
Effektivität: Unknown
Beschreibung: Es wird empfohlen, Techniken der Language-theoretic Security (LangSec) zu nutzen, die Eingaben mithilfe einer formalen Sprache charakterisieren und “recognizers” für diese Sprache erstellen. Dies erfordert effektiv, dass das Parsen eine separate Ebene bildet, die eine klare Abgrenzung zwischen den Rohdaten und den internen Datenrepräsentationen erzwingt, anstatt Parser-Code über das Programm zu verteilen, wo er anfällig für Fehler oder Inkonsistenzen sein könnte, die Schwachstellen erzeugen. [REF-1109] [REF-1110] [REF-1111]
Effektivität: Unknown
Beschreibung: Nutzen Sie ein Input-Validierungs-Framework wie Struts oder die OWASP ESAPI Validation API. Beachten Sie jedoch, dass die Verwendung eines Frameworks nicht automatisch alle Input-Validierungsprobleme löst; achten Sie auf Schwachstellen, die durch eine fehlerhafte Verwendung des Frameworks selbst entstehen können (CWE-1173).
Effektivität: Unknown
Beschreibung: Verstehen Sie alle potenziellen Bereiche, in denen nicht vertrauenswürdige Eingaben in das Produkt gelangen können, einschließlich, aber nicht beschränkt auf: Parameter oder Argumente, Cookies, alles, was über das Netzwerk gelesen wird, Umgebungsvariablen, Reverse-DNS-Lookups, Abfrageergebnisse, Request-Header, URL-Komponenten, E-Mails, Dateien, Dateinamen, Datenbanken und alle externen Systeme, die Daten an die Anwendung liefern. Beachten Sie, dass solche Eingaben indirekt über API-Aufrufe erhalten werden können.
Effektivität: Unknown
Beschreibung: Wenn Ihre Anwendung Daten aus mehreren Quellen kombiniert, führen Sie die Validierung erst nach der Zusammenführung der Quellen durch. Einzelne Datenelemente können den Validierungsschritt bestehen, aber gegen die beabsichtigten Einschränkungen verstoßen, sobald sie kombiniert wurden.
Effektivität: Unknown
Beschreibung: Achten Sie besonders auf die Validierung aller Eingaben, wenn Sie Code aufrufen, der Sprachgrenzen überschreitet, beispielsweise von einer interpretierten Sprache zu nativem Code. Dies könnte zu unerwarteten Interaktionen zwischen den Sprachgrenzen führen. Stellen Sie sicher, dass Sie keine Erwartungen der Sprache verletzen, mit der Sie interagieren. Beispielsweise kann Java zwar nicht anfällig für buffer overflows sein, aber die Übergabe eines großen Arguments bei einem Aufruf von nativem Code könnte dennoch einen solchen overflow auslösen.
Effektivität: Unknown
Beschreibung: Konvertieren Sie Ihren Eingabetyp direkt in den erwarteten Datentyp, beispielsweise durch die Verwendung einer Konvertierungsfunktion, die einen String in eine Zahl übersetzt. Nach der Konvertierung in den erwarteten Datentyp stellen Sie sicher, dass die Werte der Eingabe innerhalb des erwarteten Wertebereichs liegen und dass Mehrfeldkonsistenzen eingehalten werden.
Effektivität: Unknown
Beschreibung: Bei der Datenübertragung zwischen Komponenten ist sicherzustellen, dass beide Komponenten dieselbe Zeichenkodierung verwenden. Stellen Sie sicher, dass die korrekte Kodierung an jeder Schnittstelle angewendet wird. Legen Sie die verwendete Kodierung explizit fest, wann immer das verwendete Protokoll dies zulässt.