Wichtige Fakten
- Kategorie
- Sicherheit & Validierung
- Eingabetypen
- textarea, text, number
- Ausgabetyp
- json
- Sample-Abdeckung
- 4
- API verfügbar
- Yes
Überblick
Der ReDoS-Scanner für Regex ist ein spezialisiertes Sicherheitswerkzeug, das reguläre Ausdrücke auf das Risiko von katastrophalem Backtracking (Regular Expression Denial of Service) prüft. Durch die Kombination von statischen Heuristiken und der Simulation bösartiger Eingaben (Near-Miss-Benchmarking) ermittelt das Tool Schwachstellen in Ihren Mustern und schlägt sichere Alternativen vor, um Performance-Einbrüche oder Serverausfälle zu verhindern.
Wann verwenden
- •Wenn Sie Benutzereingaben mit komplexen regulären Ausdrücken validieren und Serverausfälle durch ReDoS-Angriffe proaktiv ausschließen möchten.
- •Vor dem Deployment von neuem Code, um verschachtelte Quantifizierer in Regex-Mustern auf Performance-Risiken zu testen.
- •Bei der Überprüfung von Legacy-Code oder Drittanbieter-Bibliotheken auf bekannte Backtracking-Schwachstellen.
So funktioniert es
- •Fügen Sie Ihre regulären Ausdrücke zeilenweise in das Eingabefeld ein, ohne umschließende Schrägstriche.
- •Definieren Sie bei Bedarf Regex-Flags (wie 'i' oder 'm') sowie die maximale Länge der simulierten bösartigen Eingabe.
- •Legen Sie die Anzahl der Simulationsläufe fest, um das Benchmarking für den Worst-Case-Fall zu konfigurieren.
- •Starten Sie den Scan, um einen detaillierten JSON-Bericht mit Risikobewertungen, Ausführungszeiten und sicheren Alternativen zu erhalten.
Anwendungsfälle
Beispiele
1. Überprüfung eines Login-Regex auf ReDoS-Risiken
Security Engineer- Hintergrund
- Ein neues Registrierungsformular verwendet komplexe reguläre Ausdrücke zur Validierung von Benutzernamen und E-Mail-Adressen.
- Problem
- Es muss sichergestellt werden, dass Angreifer den Server nicht durch speziell präparierte Eingaben (ReDoS) lahmlegen können.
- Verwendung
- Fügen Sie die Regex-Muster in die Liste ein, setzen Sie die Evil-Input-Länge auf 32 und die Simulationsläufe auf 200.
- Beispielkonfiguration
-
regexList: "(a+)+$\n^(\\w+\\s?)*$"\nmaxEvilInputLength: 32\nsimulationRuns: 200 - Ergebnis
- Der Scanner identifiziert `(a+)+$` als kritisches Risiko, zeigt die extrem hohe Ausführungszeit beim Benchmarking und schlägt eine sichere Alternative vor.
2. Analyse von Log-Parsing-Mustern
Backend-Entwickler- Hintergrund
- Ein Node.js-Server parst täglich Millionen von Log-Zeilen mit verschiedenen regulären Ausdrücken.
- Problem
- Gelegentlich kommt es zu massiven CPU-Spitzen, vermutlich ausgelöst durch ineffizientes Regex-Matching bei fehlerhaften Log-Einträgen.
- Verwendung
- Kopieren Sie die verdächtigen Log-Parsing-Regex in das Tool, fügen Sie das Flag 'm' hinzu und erhöhen Sie die Simulationsläufe auf 500.
- Beispielkonfiguration
-
regexList: "^([a-zA-Z0-9]+\\s?)*:.*$"\nflags: "m"\nsimulationRuns: 500 - Ergebnis
- Das Tool deckt verschachtelte Quantifizierer auf, die bei unvollständigen Log-Zeilen zu katastrophalem Backtracking führen, und liefert einen optimierten Ausdruck im JSON-Format.
Mit Samples testen
regexFAQ
Was ist katastrophales Backtracking?
Ein Zustand, in dem eine Regex-Engine bei bestimmten Eingaben extrem viele Kombinationen prüfen muss, was zu massiven Verzögerungen und einer extrem hohen CPU-Auslastung führt.
Wie simuliert das Tool bösartige Eingaben?
Es generiert sogenannte 'Near-Miss'-Strings, die fast auf das Muster passen, aber am Ende fehlschlagen. Dadurch wird der Worst-Case-Pfad der Regex-Engine erzwungen und gemessen.
Welche Regex-Flags werden unterstützt?
Sie können gängige JavaScript-Regex-Flags wie 'i' (Case-Insensitive), 'm' (Multiline) oder 'u' (Unicode) in das entsprechende Textfeld eintragen.
Was bedeutet die 'Maximale Evil-Input-Länge'?
Dieser Wert (zwischen 8 und 256) bestimmt, wie lang der generierte Test-String maximal sein darf, um die Ausführungszeit beim Benchmarking zu messen.
Repariert das Tool meine fehlerhaften Regex automatisch?
Das Tool liefert im JSON-Bericht konkrete Vorschläge für sicherere Alternativen, die Sie manuell überprüfen und in Ihren Code übernehmen können.