Zwei Zeilen Code reichten aus, um Jahre an sorgfältig aufgebauter Datenbank-Sicherheit zu untergraben. Genau das zeigt der Fall des offiziellen MariaDB Connector/Node.js: Anfang Oktober 2026 wurden zwei getrennte MariaDB SQL-Injection-Schwachstellen öffentlich, die tief in der Art verwurzelt sind, wie der Treiber Text-Protokoll-Anfragen und SET-Statements verarbeitet. Für Node.js- und PHP-Teams, die MySQL oder MariaDB im Backend einsetzen, ist das kein theoretisches Risiko, sondern ein konkreter Prüfauftrag für die kommende Woche.
Wer die Grundlagen von Backend-Technologien wie PHP, Node.js und MySQL vertiefen möchte, findet einen Einstieg in unserem Grundlagenartikel PHP, Node.js und MySQL im Vergleich.
Beide Lücken wurden zwischen dem 7. und 9. Oktober 2026 als CVE verzeichnet und am 8. und 9. Oktober 2026 öffentlich analysiert. Gemeldet hat sie der Sicherheitsforscher fg0x0 über die JIRA-Tickets CONJS-368 und CONJS-369. Die gute Nachricht vorab: Fixes existieren bereits seit dem 7. August 2026 über den Release 3.2.5 – die Schwachstellen wurden also erst nachträglich öffentlich dokumentiert.
Inhaltsverzeichnis
Key Takeaways
- CVE-2026-107385 (CVSS 7.4) betrifft das Backslash-Escaping im Text-Protokoll, wenn der Server im Modus NO_BACKSLASH_ESCAPES läuft.
- CVE-2026-107384 (CVSS 8.1) entsteht durch unzureichende Bereinigung von Object Keys bei aktivierter Option permitSetMultiParamEntries.
- Betroffen sind primär Connection.escape() und rohe Text-Protokoll-Queries – die Binärprotokoll-Methoden execute() und batch() sind von CVE-2026-107385 nicht betroffen.
- Gefixt in mariadb-connector-nodejs 3.2.5, 3.3.4, 3.4.7 und 3.5.4; zusätzlich wurde eine dritte Schwachstelle (CONJS-358) zur Speichererschöpfung vor der Authentifizierung behoben.
- Kein aktiver Exploit bekannt (Stand 9. Oktober 2026), EPSS für CVE-2026-107385 bei nur 0,44 Prozent – Handlungsbedarf besteht trotzdem, da High-Severity-Lücken typischerweise nachziehen.
Was ist passiert: Zwei MariaDB SQL-Injection-Schwachstellen im Überblick
Der MariaDB Connector/Node.js ist der von der MariaDB Corporation gepflegte, offizielle Treiber, mit dem Node.js-Anwendungen gegen MariaDB- und MySQL-Datenbanken sprechen. Weil er so tief in der Anwendungsschicht sitzt, wirkt sich jede Schwachstelle im Treiber direkt auf alle Anwendungen aus, die ihn einbinden – unabhängig davon, wie sorgfältig der eigene Anwendungscode geschrieben ist.
Im Oktober 2026 wurden zwei voneinander unabhängige Wege bekannt, wie Angreifer aus dem Treiberverhalten heraus SQL-Injection erzeugen konnten. Beide fallen in die Kategorie CWE-89 (SQL Injection) und haben die CVSS-3.1-Bewertung "High". Der folgende Überblick zeigt die Kerndaten:
| Kürzel | CVSS 3.1 | Ursache | Betroffene API |
|---|---|---|---|
| CVE-2026-107385 | 7.4 (High) | Backslash-Escaping ignoriert NO_BACKSLASH_ESCAPES | Connection.escape(), Text-Protokoll-Queries |
| CVE-2026-107384 | 8.1 (High) | Unsanitisierte Object Keys bei SET-Expansion | permitSetMultiParamEntries-Option |
Beide Probleme teilen eine gemeinsame Lehre: Escaping-Logik, die unabhängig vom tatsächlichen Server-Zustand funktioniert, ist eine trügerische Sicherheit. Ein Treiber, der annimmt, der Server verhalte sich immer gleich, kann von einer einzigen Konfigurationsäänderung auf Serverseite ausgehebelt werden.
CVE-2026-107385: Wenn Backslash-Escaping zur Falle wird
Die Schwachstelle CVE-2026-107385 betrifft den Kern jedes SQL-String-Escapings: das Markieren von Anführungszeichen innerhalb von Textwerten. Standardmäßig escaped MariaDB Connector/Node.js Anführungszeichen im Text-Protokoll immer mit einem Backslash – so wie es die klassische MySQL-Syntax vorsieht. Das Problem: Der Treiber prüft nicht, ob die aktuelle Datenbank-Session überhaupt im Backslash-Modus arbeitet.
MariaDB und MySQL kennen einen alternativen SQL-Modus namens NO_BACKSLASH_ESCAPES. Ist dieser Modus aktiv – sei es serverweit per Konfiguration, über Connector-Initialisierungsoptionen oder per explizitem SET sql_mode-Befehl – verliert der Backslash seine Sonderbedeutung und wird zu einem ganz normalen Zeichen. Genau hier liegt die Lücke: Der Treiber escaped weiterhin mit Backslash, obwohl dieser vom Server gar nicht mehr als Escape-Zeichen interpretiert wird.
Für Angreifer bedeutet das: Ein eingeschleustes Anführungszeichen wird vom Server nicht mehr neutralisiert, sondern beendet das SQL-String-Literal vorzeitig. Ab diesem Punkt kann beliebiger SQL-Code mit den Rechten der Datenbankverbindung der Anwendung angehängt werden – von einfachem Datenabgriff bis hin zu destruktiven Befehlen, je nach vergebenen Datenbankrechten.
"Ein Treiber, der Escaping ohne Kenntnis des Server-Modus durchführt, schützt nur solange, wie niemand den Modus ändert."
Wichtig für die Risikoeinschätzung: Betroffen sind ausschliesslich Connection.escape() und Text-Protokoll-Queries, also klassische query()-Aufrufe mit manuell zusammengesetzten Strings. Die Binärprotokoll-Methoden execute() und batch(), die mit echten Platzhaltern arbeiten, sind von dieser konkreten Schwachstelle nicht betroffen.
CVE-2026-107384: Backtick-Injection über permitSetMultiParamEntries
Die zweite Lücke, CVE-2026-107384, ist mit einem CVSS-Wert von 8.1 sogar noch höher eingestuft. Sie betrifft die Connector-Option permitSetMultiParamEntries. Diese Option erlaubt es, mehrere Parameter in einem einzigen SET-Statement effizient zu expandieren – praktisch für Batch-Updates oder dynamisch erzeugte Zuweisungen.
Das Problem liegt in der Identifier-Behandlung: Wenn der Connector Object Keys im Rahmen der SET-Expansion verarbeitet, bereinigt er diese nicht korrekt. Object Keys werden in SQL üblicherweise mit Backticks (`) als Identifier markiert, um sie von normalen Werten zu unterscheiden. Fehlt die saubere Bereinigung dieser Keys, kann ein Angreifer gezielt Backticks in die Schlüsselwerte einschleusen und so das Identifier-Escaping komplett umgehen.
Die Folge: Zusätzliche SQL-Befehle lassen sich direkt an das ursprüngliche Statement anhängen. Da SET-Statements häufig in Verbindung mit UPDATE-Operationen auf produktionsrelevanten Daten verwendet werden, ist das Schadenspotenzial hier besonders hoch – daher auch die höhere CVSS-Einstufung im Vergleich zu CVE-2026-107385.
Relevant ist diese Lücke ausschliesslich für Anwendungen, die permitSetMultiParamEntries aktiv nutzen. Projekte, die diese Option nie gesetzt haben, sind von CVE-2026-107384 nicht direkt betroffen – sollten aber trotzdem prüfen, ob sie versehentlich über Framework-Defaults aktiviert wurde.
Die dritte Baustelle: Speichererschöpfung vor der Authentifizierung
Im selben Release 3.2.5, der die beiden SQL-Injection-Lücken schliesst, wurde noch eine dritte, verwandte Schwachstelle behoben: CONJS-358. Hier geht es nicht um SQL-Injection, sondern um eine Denial-of-Service-Schwäche auf Protokollebene.
Konkret akzeptierte der Client vor abgeschlossener Authentifizierung Multi-Part-Pakete mit mehr als 16 Megabyte zur Reassemblierung. Ein bösartiger oder kompromittierter Server konnte diese Schwäche ausnutzen, um den Speicher des Node.js-Clients zu erschöpfen – und das, noch bevor überhaupt Anmeldedaten geprüft wurden. Besonders relevant ist das für Umgebungen, in denen Anwendungen sich mit weniger vertrauenswürdigen oder extern erreichbaren Datenbank-Endpunkten verbinden, etwa in Multi-Tenant-Architekturen oder bei Datenbank-Proxys.
Auch wenn diese Schwachstelle keine CVE-Nummer im Rahmen der hier besprochenen MariaDB SQL-Injection-Analyse erhalten hat, gehört sie zum selben Patch-Paket und sollte beim Update mitbedacht werden.
Risikoeinordnung: Wie gefährlich ist diese MariaDB SQL-Injection wirklich?
Die nackten CVSS-Werte – 7.4 und 8.1 – signalisieren "High", nicht "Critical". Das deckt sich mit der Einschätzung zum Zeitpunkt der Analyse am 9. Oktober 2026: Es gibt keinen bekannten aktiven Exploit in freier Wildbahn. Der EPSS-Score (Exploit Prediction Scoring System) für CVE-2026-107385 liegt bei lediglich 0,44 Prozent innerhalb von 30 Tagen – statistisch also eine geringe Wahrscheinlichkeit einer kurzfristigen Massenausnutzung.
Trotzdem wäre es ein Fehler, die Dringlichkeit zu unterschätzen. Drei Gründe sprechen dafür, das Thema zeitnah zu bearbeiten:
- Verzögerter Exploit-Code ist die Regel, nicht die Ausnahme. Niedrige EPSS-Werte kurz nach Bekanntwerden einer Lücke sagen wenig über die Lage in drei oder sechs Monaten aus.
- Die Angriffsfläche ist leicht zu finden. Beide Lücken betreffen Standardfunktionen (Escaping, SET-Expansion), die in vielen bestehenden Codebasen bereits im Einsatz sind.
- Parametrisierte Abfragen sind der entscheidende Hebel. Anwendungen, die konsequent
execute()mit echten Platzhaltern statt roherquery()-Aufrufe mit String-Konkatenation nutzen, reduzieren das Risiko aus CVE-2026-107385 erheblich, da das Binärprotokoll nicht auf das fehleranfällige Backslash-Escaping angewiesen ist. Wer dagegen Nutzereingaben manuell in SQL-Strings einbaut und aufConnection.escape()vertraut, ist dem vollen Risiko ausgesetzt.
Kurz gesagt: Die MariaDB SQL-Injection-Schwachstellen sind kein Grund zur Panik, aber ein klares Signal, bestehende Datenbankzugriffsmuster im eigenen Code zu überprüfen.
Handlungsempfehlungen: So schützen Sie Ihre Anwendung
Die wichtigste und wirksamste Massnahme ist simpel: aktualisieren. MariaDB Corporation hat Fixes für alle aktiv gepflegten Branches bereitgestellt. Die folgende Tabelle zeigt, welche Version je nach genutztem Zweig notwendig ist:
| Genutzter Branch | Fix-Version |
|---|---|
| 3.2.x | 3.2.5 |
| 3.3.x | 3.3.4 |
| 3.4.x | 3.4.7 |
| 3.5.x | 3.5.4 |
Konkret empfiehlt sich folgendes Vorgehen für Backend-Teams:
- Version prüfen. Mit
npm ls mariadblässt sich in jedem Node.js-Projekt schnell feststellen, welche Treiberversion tatsächlich installiert ist – auch tief verschachtelt in Abhängigkeiten. - Update durchführen. Heben Sie die Abhängigkeit auf die passende Fix-Version im jeweiligen Branch an und testen Sie bestehende Datenbankzugriffe, insbesondere SET-Statements und Escaping-Aufrufe.
- Konfiguration kontrollieren. Prüfen Sie, ob
permitSetMultiParamEntriesim eigenen Projekt aktiv gesetzt ist – etwa in der Connection-Pool-Konfiguration oder in Framework-Defaults. - Option deaktivieren, wenn ein Update nicht sofort möglich ist. Solange kein Patch eingespielt werden kann, entschärft das Deaktivieren von
permitSetMultiParamEntriesden Angriffsvektor von CVE-2026-107384 zumindest teilweise. - Auf parametrisierte Queries umstellen. Langfristig reduziert der Wechsel von roher
query()-Nutzung zuexecute()mit Platzhaltern das strukturelle Risiko weiterer, noch unbekannter Escaping-Probleme. - SQL-Modus dokumentieren. Teams, die
NO_BACKSLASH_ESCAPESserverseitig einsetzen, sollten das explizit im Deployment-Runbook vermerken, damit zukünftige Treiber-Updates gezielt darauf getestet werden.
Diese Schritte lassen sich in bestehende CI/CD-Pipelines integrieren: Ein automatisierter Check, der npm ls mariadb gegen eine Mindestversion abgleicht, verhindert, dass veraltete Treiberversionen unbemerkt in Produktion landen.
Fazit und nächste Schritte
Die beiden MariaDB SQL-Injection-Schwachstellen CVE-2026-107384 und CVE-2026-107385 zeigen exemplarisch, wie Annahmen über Server-Verhalten – etwa der SQL-Modus oder die korrekte Bereinigung von Identifiern – zu konkreten Sicherheitslücken werden können, selbst in einem offiziell gepflegten, weit verbreiteten Datenbanktreiber. Beide Lücken sind seit dem Release 3.2.5 vom 7. August 2026 behoben, die öffentliche Analyse folgte erst im Oktober 2026.
Für Node.js- und PHP-Teams, die MariaDB oder MySQL im Einsatz haben, bedeutet das konkret: Jetzt mit npm ls mariadb die aktuelle Version prüfen, auf 3.2.5, 3.3.4, 3.4.7 oder 3.5.4 aktualisieren, die Nutzung von permitSetMultiParamEntries kontrollieren und – unabhängig vom aktuellen Vorfall – den eigenen Code schrittweise auf parametrisierte Abfragen mit execute() umstellen. Diese Kombination aus schnellem Patch und strukturellem Umbau ist der zuverlässigste Weg, zukünftige SQL-Injection-Risiken im eigenen Datenbankzugriff dauerhaft zu reduzieren.



