Kurzfassung
Die JavaScript-Bibliothek shell-quote enthält mit CVE-2026-102422 eine kritische Schwachstelle, die unter bestimmten Bedingungen zur Ausführung eingeschleuster Shell-Befehle führen kann. Betroffen sind Versionen vor 1.11.0; der NVD-Eintrag bewertet das Problem mit CVSS 9.2, kritisch. Für Unternehmen ist das vor allem dort relevant, wo Node.js-Anwendungen untrusted Eingaben in Shell-Kommandos umwandeln oder Token aus parse() und quote() weiterverarbeiten.
Was ist passiert?
Im Kern geht es um die Funktion quote() von shell-quote. Sie verarbeitet ein Kommentar-Token in einer Weise, die in der Shell zu unerwartetem Verhalten führt: Ein { comment }-Token wird als # plus Kommentartext ausgegeben. Dadurch kommentiert die Shell den restlichen Teil der Zeile aus.
Problematisch wird das, wenn später in derselben Befehlszeile noch ein String mit Zeilenumbruch folgt. Der Zeilenumbruch beendet den Kommentar, und der restliche Inhalt dieses Strings wird anschließend als reguläre Shell-Eingabe interpretiert. So kann aus eigentlich quotierten Daten wieder ausführbarer Shell-Code werden.
Die Schwachstelle knüpft an eine frühere Korrektur an. Die damalige Abwehr blockierte Zeilenumbrüche im Kommentartext selbst, nicht aber in nachfolgenden String-Tokens. Genau diese Lücke schließt Version 1.11.0.
Technische Details
Nach der Beschreibung lässt sich das Verhalten so zusammenfassen: Enthält die an quote() übergebene Token-Liste erst ein Kommentarobjekt und später einen String mit Zeilenumbruch, kann der Teil nach dem Zeilenumbruch von gängigen Shells wie sh, bash, dash, ksh und zsh als Befehl verarbeitet werden.
Zusätzlich kann parse() in bestimmten Fällen ein Kommentar-Token auch dann erzeugen, wenn ein # mitten in einem Wort vorkommt, etwa in einer URL mit Fragment. Wer das Ergebnis von parse() mit weiteren nicht vertrauenswürdigen Eingaben zusammenführt und danach erneut mit quote() verarbeitet, schafft damit ein besonders riskantes Muster.
Die Korrektur in Version 1.11.0 sorgt laut NVD-Beschreibung dafür, dass quote() einen TypeError auslöst, wenn nach einem { comment }-Token ein String mit Zeilentrennzeichen folgt.
Der NVD-Eintrag nennt einen CVSS-Basiswert von 9.2 nach CVSS 4.0. Das beschreibt die technische Schwere, nicht automatisch die tatsächliche Ausnutzung in freier Wildbahn. Der Vektor bedeutet hier: Ein Angriff ist über das Netzwerk möglich, erfordert keine Authentifizierung und keine Nutzerinteraktion, bei geringer Angriffskomplexität.
Wer ist betroffen?
Betroffen ist shell-quote in Versionen vor 1.11.0. Praktisch relevant ist die Schwachstelle für Betreiber und Entwickler von Node.js- oder JavaScript-Anwendungen, die diese Bibliothek direkt oder als indirekte Abhängigkeit einbinden.
Akut wird das Risiko vor allem in drei Situationen:
- wenn Anwendungen Benutzereingaben oder andere untrusted Daten in Shell-Kommandos einbauen,
- wenn Ergebnisse von
parse()mit weiteren Eingaben kombiniert werden, - wenn Serverprozesse Shells aufrufen, etwa für Hilfsskripte, Build- oder Automatisierungsaufgaben.
Für viele Unternehmen im DACH-Raum ist das kein flächendeckendes Endnutzerproblem, sondern ein Thema für Entwicklungs-, Plattform- und DevOps-Teams. Wer shell-quote gar nicht einsetzt oder keinerlei Shell-Kommandos aus externen Eingaben zusammensetzt, ist voraussichtlich nicht direkt betroffen.
Empfohlene Maßnahmen
- Abhängigkeiten sofort prüfen: Ermitteln Sie, ob shell-quote direkt oder transitiv in Ihren Projekten enthalten ist, insbesondere in serverseitigen Node.js-Anwendungen, CI/CD-Komponenten und Automatisierungsskripten.
- Auf Version 1.11.0 oder neuer aktualisieren: Das ist die zentrale Abhilfemaßnahme, weil die fehlerhafte Behandlung nach Angaben des NVD dort korrigiert wurde.
- Codepfade mit Shell-Aufrufen priorisieren: Prüfen Sie Stellen, an denen Eingaben an
sh,bashoder ähnliche Shells übergeben werden. Besonders kritisch sind Konstruktionen, die Token ausparse()wieder mit weiteren untrusted Werten kombinieren. - Unsichere Muster entfernen: Wenn möglich, Shell-Aufrufe ganz vermeiden und stattdessen Prozesse mit festen Argumentlisten starten, ohne Shell-Interpretation. Das reduziert die Klasse solcher Fehler grundsätzlich.
- Temporäre Schutzmaßnahmen umsetzen: Bis zum Update sollten Sie Eingaben mit Zeilenumbrüchen in betroffenen Pfaden blockieren und jede Verarbeitung von Kommentar-Tokens aus untrusted Daten unterbinden.
- Abhängigkeitsmanagement nachziehen: Führen Sie für JavaScript-Projekte verbindliche Prüfungen auf verwundbare Bibliotheken ein, damit transitive Pakete in Build- und Release-Prozessen nicht übersehen werden.
Einschätzung von CyberSecurity-News.de
Technisch ist die Schwachstelle ernst zu nehmen, weil sie eine Schutzannahme bricht: Daten, die eigentlich sicher für die Shell quotiert werden sollen, können unter bestimmten Umständen wieder zu ausführbarem Inhalt werden. Das rechtfertigt die hohe CVSS-Bewertung.
Für die praktische Relevanz zählt aber der Anwendungskontext. Nicht jede Einbindung von shell-quote ist automatisch ausnutzbar. Entscheidend ist, ob untrusted Eingaben in Shell-Befehle gelangen und ob dabei genau die betroffenen Muster auftreten. Für klassische Office-IT ohne eigene Node.js-Dienste ist das meist kaum relevant; für Entwicklungsplattformen, Self-Hosted-Tools und interne Automatisierung dagegen durchaus.
Die Informationslage ist in einem Punkt klar und in einem Punkt begrenzt: Die betroffene Versionsspanne lässt sich als vor 1.11.0 benennen, und die Fehlerursache ist konkret beschrieben. Angaben zu bereits beobachteter Ausnutzung nennt der NVD-Eintrag nicht. Unternehmen sollten daher weder Entwarnung aus fehlenden Exploit-Hinweisen ableiten noch pauschal von flächendeckender Gefahr ausgehen.
Fazit
Wenn Sie shell-quote in Node.js-Umgebungen einsetzen, sollten Sie jetzt auf Version 1.11.0 oder neuer aktualisieren und Shell-Aufrufe mit externen Eingaben gezielt prüfen. Höchste Priorität haben Systeme, die Befehle dynamisch zusammensetzen oder Parser-Ausgaben erneut mit untrusted Daten verketten.
Quellenangabe
Weiterführende technische Informationen bietet der NVD-Eintrag zu CVE-2026-102422.






