• CWE-186: Overly Restrictive Regular Expression

Ein Regular Expression ist zu restriktiv, was dazu führt, dass gefährliche Werte nicht erkannt werden.

CWE-186: Overly Restrictive Regular Expression

CWE ID: 186
Name: Overly Restrictive Regular Expression

Beschreibung

Ein Regular Expression ist zu restriktiv, was dazu führt, dass gefährliche Werte nicht erkannt werden.

Erweiterte Beschreibung

Diese Schwachstelle liegt nicht an der Komplexität eines Regular Expression. Vielmehr handelt es sich um einen Regular Expression, der nicht alle beabsichtigten Werte abdeckt. Betrachten Sie die Verwendung eines regexp zur Identifizierung akzeptabler Werte oder zur Erkennung unerwünschter Begriffe. Ein zu restriktiver regexp verpasst potenziell sicherheitsrelevante Werte, was entweder zu false positives oder false negatives führt, abhängig davon, wie der regexp im Code eingesetzt wird. Betrachten Sie beispielsweise den Ausdruck /[0-8]/, während die Absicht /[0-9]/ war. Dieser Ausdruck ist nicht “komplex”, aber der Wert “9” wird nicht abgeglichen, obwohl der Programmierer möglicherweise geplant hat, ihn zu prüfen.

Risikominderungsmaßnahmen

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Auch für erfahrene Personen, die mit dem Schreiben von Grammatiken vertraut sind, können Regular Expressions fehleranfällig werden, insbesondere bei der Definition komplexer Sprachen. Prüfen Sie, ob mehrere kleinere Regular Expressions einen großen Regular Expression vereinfachen. Unterziehen Sie Ihren Regular Expression außerdem gründlichen Testtechniken wie Äquivalenzpartitionierung, Grenzwertanalyse und Robustheitstests. Nachdem Tests durchgeführt wurden und ein angemessener Konfidenzgrad erreicht ist, ist ein Regular Expression möglicherweise nicht narrensicher. Sollte ein Exploit durchrutschen, protokollieren Sie diesen und refaktorieren Sie Ihren Regular Expression.