Skip to content
OpenAdvisories
High · 8.1 Public exploit CVE-2026-9277 EUVD-2026-31440GHSA-w7jw-789q-3m8p

shell-quote `quote()` does not validate object-token shapes, allowing command injection via line terminators in `.op`

Published May 22, 2026 · Updated Sep 14, 2026 · Assigned by harborist

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

VendorProductAffectedFixed
— 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.

ReleasePackageFixed inAdvisory
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 —
ReleasePackageFixed inAdvisory
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)
ReleasePackageFixed inAdvisory
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 —
ReleasePackageFixed inAdvisory
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

ReleasePackageFixed inAdvisory
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.

Third-party code, not reviewed by us. Public PoCs are sometimes fake or contain malware. Read the code first and run it only in an isolated lab, against systems you are authorised to test.

GitHub 1 repository

Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.

Affected packages

EcosystemPackageAffectedFixedRecord
npm shell-quote >= 1.1.0, < 1.8.4 1.8.4 GHSA-w7jw-789q-3m8p

Advisories 4

References