Das Ruby-Team hat die Versionen 4.0.9, 3.4.12 und 3.3.13 veröffentlicht, die drei Fehler in der Regex-Engine Onigmo beheben, die zur Ausführung von Schadcode auf betroffenen Servern führen können.

Fehlernachweise
- CVE-2026-89078: Doppelte Speicherfreigabe beim Einlesen eines Musters.
- CVE-2026-93577: Ganzzahlüberlauf bei der Berechnung der Größe des kompilierten Programms.
- CVE-2026-97229: Ganzzahlüberlauf bei der Berechnung der Größe des kompilierten Programms.
- CVE-2026-110264: Überlauf interner Zähler bei Mustern mit sehr vielen Wiederholungen.
Fehlerbeschreibung
Die Fehler liegen in der Regex-Engine Onigmo, die zur Ausführung von Schadcode auf den betroffenen Servern führen kann. Nur wer selbst geschriebene Muster verwendet, muss sich laut Ruby-Team keine Sorgen machen. Bevor Ruby ein Muster auf einen Text anwendet, übersetzt es das Muster in ein internes Programm. In diesem Schritt, dem Kompilieren, liegen die Fehler, nicht erst im Abgleich.
GitLab-Sicherheitslücken
Betroffen ist aber jede Ruby-Anwendung, die reguläre Ausdrücke aus fremden Eingaben erzeugt. Nur wer selbst geschriebene Muster verwendet, muss sich laut Ruby-Team keine Sorgen machen. Der Sicherheitsforscher Johan Carlsson meldete über das Bug-Bounty-Programm vier Lücken: CVE-2026-89078 und CVE-2026-93577 mit einem CVSS-Wert von 9,9 sowie CVE-2026-97229 und CVE-2026-110264 mit dem Höchstwert 10,0, beide ohne Anmeldung ausnutzbar. GitLab schloss sie zwischen dem 23. September und dem 21. Oktober, indem es das mitgelieferte Ruby selbst patchte.
Anwendungsfälle
Im schlimmsten Fall läuft dann Code des Angreifers mit den Rechten des Ruby-Prozesses, also mit allem, auf das die Anwendung selbst Zugriff hat: Datenbank, Secrets aus der Umgebung, Dateisystem. Wahrscheinlicher ist bei einem einzelnen Versuch ein Absturz des Prozesses, der die Anfrage bearbeitet. Wiederholt wird daraus ein Denial of Service ohne Anmeldung. Aktive Angriffe meldet bislang weder GitLab noch Ruby.
Regexp-Engine und Sicherheit
Für fremde Muster empfiehlt die Ruby-Dokumentation bisher ein Timeout, weil sie nur vor Denial of Service warnt. Regexp.timeout bricht aber nur einen Abgleich ab, der zu lange dauert. Die Fehler passieren davor, beim Kompilieren, und das Timeout greift nicht. Eine Begrenzung der Musterlänge hilft laut Ruby-Team ebenfalls nicht zuverlässig, weil einige der Fehler auch kurze Muster auslösen. Wer nicht sofort aktualisieren kann, sollte keine Muster aus fremden Eingaben kompilieren.
Versionsmanagement
Mit einem Versionsmanager kann die Anwendungsförderung und die Sicherheit verbessert werden. Ein Versionsmanager bietet die Möglichkeit, die Anwendung auf verschiedene Versionen von Ruby zu verwalten und sicher zu aktualisieren. Ein Versionsmanager kann auch helfen, sicher zu verwalten, welche Versionen in verschiedenen Umgebungen verwendet werden.