CWE ID: 138
Name: Improper Neutralization of Special Elements
Das Produkt empfängt Eingaben von einer vorgelagerten Komponente, neutralisiert diese jedoch nicht oder neutralisiert sie fehlerhaft, sodass spezielle Elemente, die als Control Elements oder syntaktische Markierungen interpretiert werden könnten, an eine nachgelagerte Komponente weitergeleitet werden.
Die meisten Programmiersprachen und Protokolle verfügen über eigene spezielle Elemente, wie beispielsweise Zeichen und reservierte Keywords. Diese speziellen Elemente können Kontrollimplikationen bergen. Wenn das Produkt die externe Kontrolle oder den Einfluss über die Einbeziehung solcher speziellen Elemente nicht verhindert, kann der Kontrollfluss des Programms von dem abweichen, der beabsichtigt war. Beispielsweise interpretieren sowohl Unix als auch Windows das Symbol “<” (“less than”) als “Eingabe aus einer Datei lesen”.
Effektivität: Unknown
Beschreibung: Entwickler sollten davon ausgehen, dass spezielle Elemente (z.B. Delimiter, Symbole) in die Input-Vektoren ihres Produkts injiziert werden. Eine Verteidigungsmaßnahme ist die Erstellung einer Allowlist (z.B. ein Regular Expression), die gültige Eingaben gemäß den Anforderungsspezifikationen definiert. Filtern Sie strikt alle Eingaben, die nicht mit der Allowlist übereinstimmen. Kodieren Sie Ihre Ausgabe korrekt und setzen Sie alle Elemente, die für die Komponente, mit der Sie kommunizieren, eine spezielle Bedeutung haben, in Anführungszeichen (quote).
Effektivität: Unknown
Beschreibung: Verwenden und spezifizieren Sie eine geeignete Output-Kodierung, um sicherzustellen, dass die speziellen Elemente eindeutig definiert sind. Eine normale Byte-Sequenz in einer Kodierung kann in einer anderen Kodierung ein spezielles Element darstellen.
Effektivität: Unknown
Beschreibung: Eingehende Daten sollten dekodiert und in die aktuelle interne Repräsentation der Anwendung kanonisiert werden, bevor sie validiert werden (CWE-180). Stellen Sie sicher, dass die Anwendung dieselben Eingaben nicht zweimal dekodiert (CWE-174). Solche Fehler könnten dazu verwendet werden, allowlist Validierungsschemata zu umgehen, indem gefährliche Eingaben nach der Prüfung eingeführt werden.
Effektivität: Unknown
Beschreibung: Obwohl die Verwendung von dynamisch generierten query strings, Code oder Befehlen, die Kontrollelemente und Daten vermischen, riskant ist, ist dies manchmal unvermeidlich. Zitieren Sie Argumente korrekt und maskieren Sie alle speziellen Zeichen innerhalb dieser Argumente. Der konservativste Ansatz ist, alle Zeichen zu maskieren oder herauszufiltern, die nicht durch eine äußerst strenge allowlist bestehen (z. B. alles, was nicht alphanumerisch oder Leerzeichen ist). Wenn einige spezielle Zeichen dennoch benötigt werden, z. B. Leerzeichen, umschließen Sie jedes Argument nach dem Maskieren/Filtern in Anführungszeichen. Seien Sie vorsichtig vor argument injection (CWE-88).