Description
shell-quote's `quote()` function did not validate object-token inputs against the operator model used by `parse()`. The `.op` field was backslash-escaped character by character using `/(.)/g`, which in JavaScript does not match line terminators (\n, \r, U+2028, U+2029). A line terminator in `.op` therefore passed through unescaped into the output; POSIX shells treat a literal newline as a command separator, so any content after it would execute as a second command. The vulnerable code path is reachable in two ways: (1) direct construction of `{ op: '...\n...' }` from external input, and (2) via `parse(cmd, envFn)` when `envFn` returns object tokens whose `.op` is attacker-influenced. Both are documented API surface. Fixed by replacing the per-character escape with strict shape validation: `.op` must match the parser's control-operator allowlist; `{ op: 'glob', pattern }` validates `pattern` and forbids line terminators; `{ comment }` validates `comment` and forbids line terminators; any other object shape throws `TypeError`.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| — | shell-quote | 1.1.0 – < 1.8.4 | 1.8.4 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | node-shell-quote | 1.8.4+~1.7.5-1 | — |
| Debian 13 | node-shell-quote | 1.7.4+~1.7.1-1+deb13u1 | — |
| Debian 12 | node-shell-quote | 1.7.4+~1.7.1-1+deb12u1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 26.10 | node-shell-quote | No fix yet | — |
| Ubuntu 25.10 | node-shell-quote | 1.7.4+~1.7.1-1ubuntu0.25.10.1 | — |
| Ubuntu 24.04 LTS | node-shell-quote | 1.7.4+~1.7.1-1ubuntu0.24.04.1 | — |
Show 3 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Pro 26.04 LTS | node-shell-quote | 1.8.3+~1.7.5-1ubuntu0.1~esm1 | — |
| Ubuntu Pro 22.04 LTS | node-shell-quote | 1.7.3+~1.7.1-1ubuntu0.1~esm1 | — |
| Ubuntu Pro 18.04 LTS | node-shell-quote | 1.6.1+20160617-git72fb5a8ce29b-1ubuntu0.1~esm1 | — |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Tumbleweed | agama-web-ui | 21+360.16caae772-44.1 | openSUSE-SU-2026:10979-1 |
| openSUSE Tumbleweed | python-pytest-html | 4.2.0-2.1 | openSUSE-SU-2026:10861-1 |
| openSUSE Leap 16.0 | agama-web-ui | 17+612.d8bf69336-160000.11.1 | openSUSE-SU-2026:20919-1 |
Wolfi
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Wolfi rolling | code-server | 4.123.0-r2 | — |
| Wolfi rolling | tileserver-gl | 5.6.0-r5 | — |
Public exploits
Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.
GitHub 1 repository
-
DylanZahedi/CVE-2026-9277 ★ 2 · Jun 15, 2026
Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| npm | shell-quote | >= 1.1.0, < 1.8.4 | 1.8.4 | GHSA-w7jw-789q-3m8p |
Advisories 4
- WID-SEC-2026-1934 Red Hat OpenShift Service Mesh: Schwachstelle ermöglicht Codeausführung BSI CERT-Bund (WID) · Nov 2, 2026
- openSUSE-SU-2026:20919-1 Security update for agama-web-ui SUSE / openSUSE Security Updates · Jun 10, 2026
- openSUSE-SU-2026:10979-1 agama-web-ui-21+360.16caae772-44.1 on GA media SUSE / openSUSE Security Updates · Jun 10, 2026
- openSUSE-SU-2026:10861-1 python311-pytest-html-4.2.0-2.1 on GA media SUSE / openSUSE Security Updates · May 27, 2026
References
- GHSA-w7jw-789q-3m8p vendor-advisory
- Fix commit patch
- https://github.com/ljharb/shell-quote product
- https://www.npmjs.com/package/shell-quote product