ReDoS

RedoS erklärt: Was ist DoS mit regulären Ausdrücken und wie kann man es verhindern?

Regular Expression DoS (ReDoS) stellt ein wachsendes Risiko dar innerhalb moderne AnwendungssicherheitDa immer mehr Teams auf Eingabevalidierung und Mustererkennung angewiesen sind, können schlecht gestaltete reguläre Ausdrücke Leistungslücken verursachen, die Angreifer ausnutzen können, um Dienste zu verlangsamen oder Ausfälle herbeizuführen. Tatsächlich OWASP beschreibt ReDoS als einen Denial-of-Service-Angriff, der die Tatsache ausnutzt, dass viele Regex-Implementierungen extrem langsam werden können, manchmal mit einer Laufzeit, die exponentiell mit der Eingabegröße wächst.

Gleichzeitig sind ReDoS-Angriffe in Cloud-nativen Umgebungen besonders gefährlich. CI/CDIn Umgebungen, die von ReDoS-Angriffen geprägt sind, kann ein einzelner anfälliger regulärer Ausdruck in einer API, einem Gateway oder einem Authentifizierungsablauf die Verfügbarkeit massiv beeinträchtigen. Aus diesem Grund sollten Teams ReDoS als echtes Verfügbarkeitsrisiko und nicht nur als seltenen Sonderfall betrachten.

Noch wichtiger ist, dass diese Schwachstellen während der Entwicklung oft unentdeckt bleiben, da herkömmliche Ansätze den Fokus auf die Syntax und nicht auf das Ausführungsverhalten legen. Dadurch können ineffiziente reguläre Ausdrücke leicht in die Produktionsumgebung gelangen, ohne dass Warnmeldungen ausgelöst werden.

Hier kommen moderne AppSec-Plattformen wie Xygeni ins Spiel. Durch die direkte Integration von Sicherheitsprüfungen in Entwicklungsabläufe helfen sie, diese Probleme frühzeitig zu erkennen und die tatsächlich erreichbaren und wirkungsvollen Risiken zu priorisieren, anstatt lediglich zusätzliche Warnmeldungen zu erzeugen.

Was ist ReDoS (Regular Expression DoS)?

ReDoS (Regular Expression Denial of Service) ist eine Sicherheitslücke, die auftritt, wenn ein Regex-Muster übermäßiges Backtracking verursacht, was zu exponentieller Ausführungszeit führt.

Vereinfacht ausgedrückt kann eine bösartige Eingabe Ihre Anwendung dazu zwingen, extrem viel Zeit mit der Auswertung eines regulären Ausdrucks zu verbringen, das System zu blockieren und die Leistung zu beeinträchtigen.

Zum Beispiel Muster mit verschachtelten Quantoren wie:

(a+)+

kann bei der Verarbeitung bestimmter Eingaben sehr ineffizient werden, insbesondere wenn diese absichtlich von einem Angreifer manipuliert wurden.

Dies mag zwar wie ein Sonderfall erscheinen, ist aber in realen Anwendungen überraschend häufig anzutreffen, insbesondere bei Validierungslogik, Formulareingaben und der Verarbeitung von API-Anfragen.

Wie RedoS-Angriffe funktionieren

Ein ReDoS-Angriff benötigt keine fortgeschrittenen Exploits. Stattdessen nutzt er das vorhersehbare Verhalten von Regex-Engines aus.

Katastrophales Zurückrudern

Der Angreifer zielt auf einen regulären Ausdruck ab, der mehrere übereinstimmende Pfade zulassen kann. Anschließend liefert er Eingaben, die die Engine dazu zwingen, die meisten oder alle Pfade zu untersuchen.

Eingaben, die von Angreifern erstellt wurden

Angreifer senden üblicherweise:

  • Lange Zeichenketten mit sich wiederholenden Zeichen.
  • Eingaben, die fast übereinstimmen, aber am Ende scheitern.
  • Nutzdaten, die sich auf den am wenigsten eindeutigen Teil des Musters konzentrieren.

Leistungsabfall

Da jede Anfrage CPU-Leistung beanspruchen kann, summiert sich der Effekt schnell:

  • Höhere Latenzzeiten an den Endpunkten.
  • Erschöpfung des Thread-Pools.
  • Ereignisschleifen hängen in Single-Thread-Laufzeitumgebungen.

Diese Angriffe erfordern keine komplexen Exploits. Stattdessen nutzen sie ineffiziente Mustererkennung aus, wodurch sie schwer zu erkennen sind, wenn Ihre Tools nur die Syntax oder bekannte CVEs überprüfen.

wiederholt

Reale Auswirkungen von RedoS-Schwachstellen

ReDoS trifft das „A“ der CIA-Triade: Verfügbarkeit. Es kann wie ein Stabilitätsproblem aussehen, nicht wie ein Sicherheitsvorfall, bis man die Zusammenhänge erkennt.

API-Verlangsamung

Ein einzelner Endpunkt, der einen anfälligen regulären Ausdruck verwendet, kann während der Eingabevalidierung, des Anforderungsroutings oder der Authentifizierungsprüfungen zu einer sprunghaften Erhöhung der CPU-Auslastung führen.

Dienstausfall

Unter Last kann ein Redostase-Hotspot dazu führen, dass Pods neu gestartet werden, die automatische Skalierung beeinträchtigt wird und kaskadierende Fehler ausgelöst werden.

Ressourcenerschöpfung

ReDoS kann Folgendes verarbeiten:

  • CPU auf den Anwendungsknoten.
  • Speicher aufgrund des Backtracking-Zustands.
  • Worker-Threads, die andere Anfragen blockieren.

Da ReDoS eher die Performance als die Datensicherheit beeinträchtigt, unterschätzen viele Teams die Auswirkungen. Verfügbarkeit ist jedoch ein zentraler Bestandteil der Anwendungssicherheit, und Störungen können schnell zu einem Geschäftsrisiko führen.

Breaking Changes sind das eigentliche Vertrauensproblem

Wenn Entwickler sagen, dass sie der Autoreparatur nicht vertrauen, meinen sie oft ein ganz bestimmtes: Sie trauen ihr nicht zu, dass sie nicht etwas kaputt macht.

Das Vertrauensproblem wird am deutlichsten bei der Behebung von Abhängigkeiten sichtbar.

Für ein anfälliges Paket kann zwar eine gepatchte Version verfügbar sein, das bedeutet aber nicht, dass das Upgrade sicher ist. Die gepatchte Version kann eine von Ihrer Anwendung verwendete Methode entfernen, eine API umbenennen, einen Typvertrag verschärfen oder das Verhalten so ändern, dass Unit-Tests zwar erfolgreich abgeschlossen werden, aber in der Produktionsumgebung zu Regressionen führen. In vielen Teams liegt der eigentliche Aufwand für die Behebung der Schwachstelle nicht im Einspielen des Patches, sondern in der Untersuchung des potenziellen Schadensausmaßes.

Betrachten wir ein einfaches Beispiel in Java. Eine Codebasis ist von einer Bibliothek abhängig, in der eine gemeinsame Methode in Version 1.x vorhanden ist, in Version 2.x jedoch entfernt wurde.

RedoS-Angriffe und Sicherheitsvorfälle in der Praxis

ReDoS ist nicht nur eine theoretische Schwachstelle. Sie wurde bereits in realen Anwendungen ausgenutzt und beeinträchtigte weit verbreitete Bibliotheken und Produktionssysteme.

Hier einige bemerkenswerte Beispiele, die die Auswirkungen ineffizienter Regex-Muster verdeutlichen:

Moment.js RedoS-Schwachstelle

Eine der bekanntesten ReDoS-Schwachstellen war betroffen Moment.js, eine weit verbreitete JavaScript-Datumsbibliothek.

  • Ein schlecht gestaltetes Regex-Muster verursachte übermäßiges Backtracking.
  • Angreifer könnten durch manipulierte Eingaben eine hohe CPU-Auslastung auslösen.
  • Anwendungen, die Moment.js verwenden, wurden anfällig für Denial-of-Service-Angriffe.

Dieser Fall hat gezeigt, wie selbst vertrauenswürdige Bibliotheken Sicherheitslücken in Tausenden von Anwendungen einführen können, die auf Leistungseinbußen beruhen.

Node.js Validator Library (validator.js)

Ein weiteres Beispiel betraf validator.jswird häufig zur Eingabevalidierung verwendet.

  • Bestimmte Validierungsfunktionen basierten auf ineffizienten regulären Ausdrücken.
  • Bösartige Eingaben könnten die Ausführung erheblich verzögern.
  • Dies betraf APIs und Backend-Dienste, die auf der Validierung von Benutzereingaben basieren.

Da validator.js weit verbreitet ist, erstrecken sich die Auswirkungen auf zahlreiche Anwendungen und Dienste.

Cloudflare-Ausfall (Fehler aufgrund regulärer Ausdrücke)

Ein aufsehenerregender Vorfall war beteiligt Cloudflare, wo ein fehlerhaftes Regex-Muster einen größeren Ausfall verursachte.

  • Ein im Produktivbetrieb eingesetzter regulärer Ausdruck löste übermäßige CPU-Auslastung aus.
  • Weltweit reagierten die Systeme nicht mehr.
  • Große Teile des Internets waren vorübergehend betroffen

Auch wenn es sich nicht um einen böswilligen Angriff handelte, zeigt dieser Vorfall deutlich, wie Ineffizienzen bei regulären Ausdrücken in großem Umfang reale Konsequenzen haben können.

Warum traditionelle Sicherheitstools RedoS verfehlen

Dies ist der Abschnitt zur Umrechnung, da er die Lücke erklärt, die die meisten Teams spüren: Scanner laufen, dashboards fill, und ReDoS schlüpft trotzdem noch durch.

Statische Werkzeuge konzentrieren sich auf die Syntax

Viele Scanner können „gefährliche Regex-Muster“ kennzeichnen, aber oft fehlt ihnen die Gewissheit, ob das Muster in Ihrem Kontext tatsächlich ausnutzbar ist.

Kein Ausführungskontext

Bei ReDoS geht es um das Laufzeitverhalten. OWASP merkt an, dass viele Regex-Implementierungen extreme Zustände erreichen und sehr langsam arbeiten können, manchmal exponentiell proportional zur Eingabegröße.
Wenn ein Tool niemals über die Form der Eingabe, die Fehlerbedingungen der Übereinstimmung oder die Ausführungspfade nachdenkt, wird es das Risiko entweder übersehen oder Sie mit Fehlalarmen überhäufen.

Keine Ausnutzbarkeitsanalyse

Ein regulärer Ausdruck kann theoretisch riskant sein, ist aber in der Praxis nicht erreichbar. Umgekehrt kann ein kleiner Validator in einem öffentlichen Endpunkt einen echten Sicherheitsvorfall darstellen. Ohne Kontext ignorieren Teams entweder Warnmeldungen oder beheben das Problem übermäßig.

Herkömmliche Scanner erkennen ReDoS-Angriffe oft nicht, da sie das Verhalten von regulären Ausdrücken zur Laufzeit oder unter schädlichen Eingabebedingungen nicht analysieren. Hier setzt Xygeni an, indem es die Analyse mit … kombiniert. Kontextuelle Risikobewertung, um Teams dabei zu helfen, zu verstehen, ob eine Schwäche tatsächlich erreichbar und wirkungsvoll ist.

Wie man Redos-Schwachstellen erkennt

ReDoS-Angriffe lassen sich durch eine Kombination aus sorgfältiger Designpraxis und Tests erkennen. Zusätzlich sind kontinuierliche Prüfungen erforderlich, nicht nur im Rahmen von Sicherheitsüberprüfungen.

Sicheres Regex-Design

Beginnen Sie mit Mustern, die Mehrdeutigkeiten minimieren. Vermeiden Sie verschachtelte Quantoren und sich überschneidende Alternativen.

Fuzzing und Testen

Regex-Muster testen mit:

  • Sehr lange Eingaben.
  • Beinahe-Fehler-Eingaben, die zu spät ausfallen.
  • Wiederholte Token, die zum Zurückverfolgen von Daten führen sollen.

Statische Analyse

Nutzen Sie Analysen, die bekannte Risikokonstrukte und Muster kennzeichnen, die mit folgenden Punkten übereinstimmen: CWE-1333.

Laufzeitvalidierung

Wenn möglich, sollten Sie Längenbeschränkungen für Eingaben und Zeitüberschreitungen für die Auswertung regulärer Ausdrücke festlegen. OWASP-Leitfaden zur Eingabevalidierunge warnt ausdrücklich vor ReDoS und hebt die Wichtigkeit der Definition einer minimalen und maximalen Eingabelänge hervor.

Fortschrittliche AppSec-Lösungen wie Xygeni gehen über die Mustererkennung hinaus, indem sie Codeanalyse im Workflow-Kontext und indem Teams dabei unterstützt werden, sich auf die Probleme zu konzentrieren, die in realen Szenarien am ehesten von Bedeutung sind, wodurch Fehlalarme reduziert und die Fehlerbehebung beschleunigt werden.

Wie man RedoS-Angriffe verhindert

Prävention ist eine Kombination aus sichereren Mustern, sichereren Eingaben und sichereren Laufzeitentscheidungen.

Vermeiden Sie verschachtelte Quantoren

Verschachtelte Wiederholungen führen oft zu den schlimmsten Backtracking-Explosionen.

Eingabegröße begrenzen

Dies ist die einfachste und zuverlässigste Schutzmaßnahme. Legen Sie maximale Längenbeschränkungen für Eingaben fest, die die Regex-Validierung bestehen. OWASP hebt Längenbeschränkungen als wichtigen Bestandteil einer sicheren Eingabevalidierung hervor.

Verwenden Sie nach Möglichkeit sichere Regex-Engines.

Wenn Sie die Wahl des Motors haben, bevorzugen Sie einen, der so konstruiert ist, dass katastrophale Rückschritte vermieden werden. Googles RE2 wird als sichere Alternative zu Backtracking-Regex-Engines positioniert.

Eingaben mit mehrstufigen Prüfungen validieren

Verwenden Sie nicht für alle Validierungen einen einzelnen regulären Ausdruck. Kombinieren Sie:

  • Zeichen-Erlaubnislisten,
  • strenge Längenprüfungen,
  • und einfachere Muster pro Feld.

Um Redo-Angriffe zu verhindern, sind sichere Programmierpraktiken erforderlich und kontinuierliche Validierung über den gesamten Entwicklungslebenszyklus hinweginsbesondere wenn Anwendungen skalieren und Abhängigkeiten zunehmen.

Wie Xygeni hilft, ReDoS zu erkennen und zu verhindern

Xygeni unterstützt DevSecOps-Teams bei der Erkennung und Verhinderung von Redos-Schwachstellen durch die Kombination mehrerer Analyseebenen.

Zu den wichtigsten Funktionen gehören:

  • Erkennung anfälliger Regex-Muster während der Entwicklung
  • Analyse der Datenflüsse und Ausführungspfade
  • Identifizierung ausnutzbarer Schwachstellen, nicht nur theoretischer.
  • Integration in CI/CD pipelines für kontinuierliches Scannen
  • Praktische Abhilfemaßnahmen für Entwickler

Anstatt Teams mit Benachrichtigungen zu überfluten, priorisiert Xygeni die Schwachstellen, die tatsächlich erreichbar sind und wirkungsvoll.

Dies ermöglicht es den Teams, reale Probleme schneller zu beheben, ohne die Entwicklung zu verlangsamen.

Bewährte Verfahren für DevSecOps-Teams

Shift-Left-Sicherheit

Integrieren Sie ReDoS-Prüfungen in die gleiche Routine wie Code-Reviews und Unit-Tests.

Automatisiertes Scannen

Führen Sie Überprüfungen auf jedem System durch. pull request Das Risiko durch reguläre Ausdrücke wartet also nicht auf regelmäßige Überprüfungen.

Abhängigkeiten überwachen

Regex-Schwachstellen treten auch in Abhängigkeiten und Bibliotheken zur Eingabeanalyse auf, daher ist eine sorgfältige Überprüfung der Abhängigkeiten unerlässlich.

Eingaben kontinuierlich validieren

Wenden Sie Längenbeschränkungen und Eingaberegeln an den Rändern an und validieren Sie anschließend innerhalb kritischer Dienste erneut.

Durch die direkte Integration von Sicherheitsmaßnahmen in die Entwicklungsabläufe können Teams leistungsbezogene Schwachstellen wie ReDoS verhindern, bevor diese die Produktion erreichen.

RedoS-Prävention beginnt mit vollständiger Transparenz.

ReDoS wird oft übersehen, kann aber die Anwendungsleistung und -verfügbarkeit erheblich beeinträchtigen. OWASP definiert ReDoS als Denial-of-Service-Risiko, das auf extremem Laufzeitverhalten regulärer Ausdrücke beruht.
Das bedeutet, dass Sie mehr als nur einfaches Scannen benötigen. Sie brauchen Kontext, Priorisierung und Automatisierung.

Behandelt man reguläre Ausdrücke wie Code, der bei Eingaben von Angreifern fehlschlagen kann, erkennt man ReDoS-Angriffe früher und kann sicherere Systeme bereitstellen. Mit Xygeni können Teams Störungen reduzieren, echte Risiken priorisieren und die AppSec-Kontrollen innerhalb des Systems stärken. CI/CD zum Arbeitsablauf

Fazit

ReDoS-Schwachstellen lassen sich leicht einschleusen und sind ohne den richtigen Kontext schwer zu erkennen.

Während sich traditionelle Tools auf die Identifizierung von Problemen konzentrieren, erfordert moderne AppSec ein Verständnis dafür, welche Schwachstellen tatsächlich relevant sind.

Um wettbewerbsfähig zu bleiben, benötigen Teams daher Transparenz, Priorisierung und Automatisierung, die über den gesamten Entwicklungslebenszyklus hinweg Hand in Hand gehen.

Hier setzt Xygeni an. Durch die Fokussierung auf ausnutzbare Risiken hilft es Teams, Probleme frühzeitig zu erkennen, Störungen zu reduzieren und Anwendungen von der Entwicklung bis zur Bereitstellung abzusichern.

Letztendlich bedeutet die Entwicklung sicherer Software heutzutage, über das Scannen hinauszugehen und einen kontextbezogenen Echtzeit-Sicherheitsansatz zu verfolgen.

Beginnen Sie mit dem Aufbau sicherer, robuster Anwendungen mit Echtzeiterkennung und kontextbezogene Sicherheit.

Häufig gestellte Fragen (FAQ)

Was ist ein Redos-Angriff?

Bei einem ReDoS-Angriff (Regular Expression Denial of Service) handelt es sich um eine Art von Sicherheitslücke, bei der ineffiziente Regex-Muster ausgenutzt werden können, um übermäßige Verarbeitungszeiten zu verursachen, was zu Leistungseinbußen oder Abstürzen der Anwendung führen kann.

Warum ist Redos in modernen Anwendungen gefährlich?

ReDoS-Angriffe können die Verfügbarkeit von Anwendungen beeinträchtigen, indem sie CPU-Ressourcen beanspruchen und Dienste verlangsamen. In Cloud-nativen Umgebungen kann dies schnell zu systemweiten Leistungsproblemen führen.

Wie können Entwickler ReDoS-Schwachstellen verhindern?

Entwickler können ReDoS verhindern, indem sie komplexe Regex-Muster vermeiden, die Eingabegröße begrenzen, sichere Regex-Engines verwenden und Sicherheitsprüfungen integrieren. CI/CD pipelines.

Können herkömmliche Sicherheitstools ReDoS erkennen?

Die meisten herkömmlichen Tools haben Schwierigkeiten, ReDoS-Angriffe zu erkennen, da sie das Laufzeitverhalten oder die Ausnutzbarkeit nicht analysieren. Moderne AppSec-Lösungen bieten eine bessere Erkennung, indem sie die Codeausführung in realen Szenarien auswerten.

Wie hilft Xygeni dabei, ReDoS-Angriffe zu verhindern?

Xygeni erkennt anfällige Regex-Muster, analysiert Ausführungspfade und priorisiert ausnutzbare Risiken. Es integriert sich in CI/CD pipelineund bietet Entwicklern konkrete Handlungsempfehlungen zur Behebung von Mängeln.

Über den Autor

Mitbegründer & CTO

Fatima Said spezialisiert sich auf entwicklerorientierte Inhalte für AppSec, DevSecOps und software supply chain securitySie wandelt komplexe Sicherheitssignale in klare, umsetzbare Anweisungen um, die Teams dabei helfen, schneller Prioritäten zu setzen, Störungen zu reduzieren und sichereren Code zu liefern.

 
SCA-Tools-Software-Zusammensetzungs-Analyse-Tools
Priorisieren, beheben und sichern Sie Ihre Softwarerisiken
7-Tage kostenlose Testversion
Keine Kreditkarte erforderlich

Sichern Sie Ihre Softwareentwicklung und -bereitstellung

mit der Xygeni-Produktsuite