CWE ID: 1333
Name: Inefficient Regular Expression Complexity
Das Produkt verwendet einen regulären Ausdruck mit einer ineffizienten, potenziell exponentiellen Worst-Case-Rechenkomplexität, die übermäßige CPU-Zyklen verbraucht.
Einige reguläre Ausdrucks-Engines verfügen über eine Funktion namens “backtracking”. Wenn ein Token nicht übereinstimmt, “backtrackt” die Engine zu einer Position, die möglicherweise zu einem anderen Token führt, das übereinstimmen kann.
Effektivität: High
Beschreibung: Verwenden Sie reguläre Ausdrücke, die kein “backtracking” unterstützen, beispielsweise durch Entfernen von verschachtelten Quantifizierer.
Notizen: Dies ist eine der wenigen effektiven Lösungen bei der Verwendung von benutzerdefinierten regular expressions.
Effektivität: Moderate
Beschreibung: Legen Sie backtracking-Limits in der Konfiguration der regular expression-Implementierung fest, beispielsweise in PHP’s pcre.backtrack_limit
. Berücksichtigen Sie zudem Limits für die Ausführungszeit des Prozesses.
Effektivität: High
Beschreibung: Vermeiden Sie die Verwendung von regular expressions mit nicht vertrauenswürdigen Eingaben. Sollten regular expressions verwendet werden müssen, vermeiden Sie die Verwendung von backtracking in dem Ausdruck.
Effektivität: Moderate
Beschreibung: Begrenzen Sie die Länge der Eingabe, die der regular expression verarbeitet.