Ruby behebt Fehler in der Regex-Engine hinter kritischen GitLab-RCE-Schwachstellen
Ruby veröffentlicht Updates zur Behebung von drei Onigmo-Engine-Fehlern, die vier kritische Remote-Code-Ausführungsschwachstellen in GitLab ermöglichten. Diese betreffen jede App, die nicht vertrauenswürdige Regex-Muster kompiliert.
Automatisch aus dem englischen Original übersetzt.
Ruby hat die Versionen 4.0.9, 3.4.12 und 3.3.13 veröffentlicht, um drei Fehler in der integrierten regulären Ausdrucks-Engine Onigmo zu beheben. Diese zugrunde liegenden Defekte waren verantwortlich für vier kritische Remote-Code-Ausführungsschwachstellen (RCE), die kürzlich in GitLab gepatcht wurden. Die Korrekturen sind dringend erforderlich für jeden Entwickler, der Ruby-Anwendungen wartet, die vom Benutzer bereitgestellte Musterstrings verarbeiten.
Was passiert ist
Die Sicherheitsprobleme entstanden durch die Art und Weise, wie Ruby reguläre Ausdrücke aus Text kompiliert, der von einem Angreifer kontrolliert wird. Wenn ein Programm eine solche Zeichenkette an Methoden wie Regexp.new, Regexp.union oder Regexp.compile übergibt oder Interpolation in einem Muster wie /#{input}/ verwendet, kann die Engine während des Kompilierungsvorgangs Speicher beschädigen. Diese Speicherbeschädigung öffnet den Weg für die Ausführung beliebigen Codes auf dem Server. Während GitLab das primäre öffentlich identifizierte Opfer war, stellt Ruby ausdrücklich fest, dass jede Anwendung, die diesen Vorgang durchführt, verwundbar ist.
GitLab entdeckte diese Schwachstellen über sein Bug-Bounty-Programm, wobei der Forscher joaxcar alle vier Fälle meldete. Das Unternehmen vergab zwischen dem 23. September und dem 21. Oktober vier Common Vulnerabilities and Exposures (CVE)-Kennungen. Die ersten beiden Schwachstellen, die Ende September offengelegt wurden, erforderten ein angemeldetes Konto und trugen eine Schweregradbewertung von 9,9 von 10. Die nachfolgenden zwei, CVE-2026-97229 und CVE-2026-110264, erforderten keine Authentifizierung und erhielten den maximalen Schweregrad von 10,0. Bemerkenswerterweise betrifft CVE-2026-110264 jede GitLab-Version ab 7.0 aufwärts.
Ruby hat seinen eigenen Fixes noch keine CVE-Kennungen zugewiesen und rät Nutzern, das Problem stattdessen über die Aufzeichnungen von GitLab zu verfolgen. Diese Entscheidung führt zu einer Sichtbarkeitslücke für Sicherheitsscanner, die darauf angewiesen sind, CVEs mit bestimmten Bibliotheksversionen abzugleichen, da GitLabs Aufzeichnungen nur GitLab als betroffenes Produkt listen. Ruby merkte an, dass es für ähnliche Bugs in 2022 und 2024 CVEs zugewiesen habe, aber nicht vertrauenswürdige Muster in seiner Dokumentation derzeit primär als Risiko für Denial-of-Service-Angriffe beschreibt, nicht jedoch als Bedrohung durch Codeausführung.
Wie es funktioniert
Die Schwachstelle liegt in Onigmo, der in die Sprache Ruby eingebetteten Engine für reguläre Ausdrücke. Wenn Ruby einen regulären Ausdruck kompiliert, übersetzt es den Musterstring in eine interne Struktur, die für das Matching verwendet wird. Wenn ein Angreifer ein speziell präpariertes Muster liefert, kann der Kompilierungsprozess eine Speicherbeschädigung auslösen. Dies ist kein Problem langsamen Matchings oder Ressourcenerschöpfung, was typische Sorgen bei komplexen Regexes sind. Stattdessen versagt die Engine darin, bestimmte Musterstrukturen während der Build-Phase sicher zu handhaben, was es einem Angreifer ermöglicht, Speicherorte zu überschreiben.
Gängige Gegenmaßnahmen scheitern oft an dieser spezifischen Klasse von Fehlern. Das Setzen von Regexp.timeout verhindert die Speicherbeschädigung nicht, da der Fehler während der Kompilierung auftritt, bevor das Matching beginnt. Ebenso ist das Begrenzen der Länge des Eingabemusters unzuverlässig, da kurze, sorgfältig konstruierte Muster weiterhin die zugrunde liegenden Engine-Defekte auslösen können. Die einzige zuverlässige Verteidigung besteht darin, das Kompilieren von regulären Ausdrücken aus nicht vertrauenswürdiger Eingabe vollständig zu vermeiden oder auf eine gepatchte Version der Ruby-Laufzeitumgebung zu aktualisieren.
Wichtige Details
- Ruby-Versionen 4.0.9, 3.4.12 und 3.3.13 enthalten die notwendigen Fixes für die drei Onigmo-Engine-Fehler.
- Ruby 4.0.8 ist unzureichend, da ihm der Fix für CVE-2026-110264 fehlt; Nutzer müssen auf 4.0.9 aktualisieren.
- Ruby 3.2 und frühere Versionen erhalten keine Fixes mehr, da Ruby 3.2 am 1. April 2026 das End-of-Life erreichte.
- Anwendungen sind nur gefährdet, wenn sie Regexes aus angreiferkontrollierten Strings via
Regexp.new,Regexp.union,Regexp.compileoder Interpolation kompilieren. - GitLab behob die Probleme in den Versionen 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 und 18.11.13.
- Stand 23. Oktober tauchte keine der vier zugehörigen CVEs im Known Exploited Vulnerabilities-Katalog der CISA auf.
Warum es wichtig ist
Für Software-Ingenieure unterstreicht dieser Vorfall eine persistente Gefahr bei der Handhabung von Benutzereingaben für dynamisches Pattern-Matching. Viele Entwickler gehen davon aus, dass Risiken bei regulären Ausdrücken auf Leistungsverschlechterung oder Denial-of-Service-Angriffe beschränkt sind. Dieses Ereignis beweist, dass Memory-Safety-Probleme in der Kompilierungsphase zu vollständiger Remote-Code-Ausführung führen können. Es erzwingt eine Neubewertung jeder Funktion, die es Benutzern erlaubt, Suchfilter, Validierungsregeln oder Konfigurationsmuster mittels regulärer Ausdrücke zu definieren.
Das Fehlen dedizierter Ruby-CVEs erschwert zudem das automatisierte Sicherheitsmonitoring. Teams, die sich auf Standard-Vulnerability-Scanner verlassen, könnten diese Patches übersehen, wenn ihre Tools nur nach CVEs suchen, die direkt mit dem Ruby-Paket assoziiert sind. Da GitLab seine eigene Kopie von Ruby bündelt, müssen selbstverwaltete Instanzen die GitLab-Anwendung selbst aktualisieren, um den Fix zu erhalten. Diese Abhängigkeitskette bedeutet, dass Infrastruktur-Leiter Upstream-Sprachupdates auch dann verfolgen müssen, wenn sie als applikationsseitige Patches in gebündelten Diensten erscheinen.
Was Sie tun können
- Aktualisieren Sie Ruby sofort auf Version 4.0.9, 3.4.12 oder 3.3.13, wenn Ihre Anwendung Regexes aus Benutzereingaben kompiliert.
- Migrieren Sie weg von Ruby 3.2 und früheren Versionen, da diese keine Sicherheitsfixes für diese Fehler mehr erhalten werden.
- Prüfen Sie Ihre Codebasis auf die Verwendung von
Regexp.new,Regexp.union,Regexp.compileoder Musterinterpolation mit nicht vertrauenswürdigen Daten. - Refaktorisieren Sie Funktionen, die benutzerdefinierte Regex-Muster erlauben, hin zu sichereren Alternativen, wie vordefinierten Filteroptionen oder String-Matching.
- Wenn Sie selbst gehostete GitLab-Instanzen verwalten, aktualisieren Sie auf eine der gepatchten Releases, wie etwa 19.5.1 oder 18.11.13.
- Implementieren Sie die von GitLab bereitgestellten Erkennungsregeln, um Anzeichen von Exploit-Versuchen auf Ihren Servern zu überwachen.



