Track vulnerabilities like this one.
Sign up free to get alerted when software you use is affected.
9.2
CVE-2026-9277: shell-quote allows command injection through newline in op field
CVE-2026-9277 · published 4 months ago
Summary
The shell-quote library can turn a specially crafted input that includes a line break into two separate commands when it builds a shell command string. This means an attacker could cause unintended commands to run on the server. Update to the latest version of the library to get the fix that validates input and blocks line breaks.
What to do
- Update debian node-shell-quote to version 1.8.4+~1.7.5-1.
- Update ljharb shell-quote to version 1.8.4.
- Update rootio @rootio/shell-quote to version 1.8.1-root.io.1.
- Update ljharb shell-quote to version 1.8.1-aikido.1.
- Update ljharb shell-quote to version 1.7.3-aikido.1.
- Update rootio @rootio/shell-quote to version 1.7.3-root.io.1.
- Update ljharb shell-quote to version 1.8.3-aikido.2.
- Update rootio @rootio/shell-quote to version 1.8.3-root.io.2.
- Update ljharb shell-quote to version 1.8.0-aikido.1.
- Update rootio @rootio/shell-quote to version 1.8.0-root.io.1.
- Update rootio @rootio/shell-quote to version 1.8.2-root.io.2.
- Update ljharb shell-quote to version 1.7.2-aikido.1.
- Update rootio @rootio/shell-quote to version 1.7.2-root.io.1.
- Update ljharb shell-quote to version 1.8.2-aikido.2.
- Update shell-quote to version 1.7.2-aikido.1.
- Update debian node-shell-quote to version 1.7.4+~1.7.1-1+deb12u1.
- Update debian node-shell-quote to version 1.7.4+~1.7.1-1+deb13u1.
Affected software
| Ecosystem | Vendor | Product | Affected versions |
|---|---|---|---|
| Debian:12 | debian | node-shell-quote |
< 1.7.4+~1.7.1-1+deb12u1 Fix: upgrade to 1.7.4+~1.7.1-1+deb12u1
|
| Debian:13 | debian | node-shell-quote |
< 1.7.4+~1.7.1-1+deb13u1 Fix: upgrade to 1.7.4+~1.7.1-1+deb13u1
|
| Debian:14 | debian | node-shell-quote |
< 1.8.4+~1.7.5-1 Fix: upgrade to 1.8.4+~1.7.5-1
|
| Ubuntu:Pro:18.04:LTS | canonical | node-shell-quote | All versions |
| Ubuntu:Pro:22.04:LTS | canonical | node-shell-quote | All versions |
| Ubuntu:24.04:LTS | canonical | node-shell-quote | All versions |
| Ubuntu:25.10 | canonical | node-shell-quote | All versions |
| Ubuntu:Pro:26.04:LTS | canonical | node-shell-quote | All versions |
| npm | ljharb | shell-quote |
>= 1.1.0, <= 1.8.3 >= 1.1.0, < 1.8.4 Fix: upgrade to 1.8.4
|
| Root:npm | rootio | @rootio/shell-quote |
< 1.8.1-root.io.1 < 1.7.3-root.io.1 < 1.8.3-root.io.2 < 1.8.0-root.io.1 < 1.8.2-root.io.2 < 1.7.2-root.io.1 Fix: upgrade to 1.8.1-root.io.1
|
| Root:npm | ljharb | shell-quote |
< 1.8.1-aikido.1 < 1.7.3-aikido.1 < 1.8.3-aikido.2 < 1.8.0-aikido.1 < 1.7.2-aikido.1 < 1.8.2-aikido.2 Fix: upgrade to 1.8.1-aikido.1
|
| – | – | shell-quote | < 1.8.4 |
| Root:npm | – | shell-quote |
< 1.7.2-aikido.1 Fix: upgrade to 1.7.2-aikido.1
|
Original advisory text
shell-quote `quote()` does not validate object-token shapes, allowing command injection via line terminators in `.op`
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`.
References
- https://security-tracker.debian.org/tracker/CVE-2026-9277 Vendor Advisory
- https://www.cve.org/CVERecord?id=CVE-2026-9277 Third Party Advisory
- https://ubuntu.com/security/CVE-2026-9277 Third Party Advisory
- https://access.redhat.com/errata/RHSA-2026:62260
- https://github.com/ljharb/shell-quote
- https://github.com/ljharb/shell-quote/commit/1518179
- https://www.npmjs.com/package/shell-quote
- https://github.com/ljharb/shell-quote/security/advisories/GHSA-w7jw-789q-3m8p
- https://access.redhat.com/errata/RHSA-2026:60023
- https://access.redhat.com/errata/RHSA-2026:33683
- https://access.redhat.com/errata/RHSA-2026:26090
- https://access.redhat.com/errata/RHSA-2026:26080
- http://www.openwall.com/lists/oss-security/2026/05/23/2
- https://access.redhat.com/errata/RHSA-2026:26079
- https://access.redhat.com/errata/RHSA-2026:26072
- https://github.com/advisories/GHSA-w7jw-789q-3m8p
- https://nvd.nist.gov/vuln/detail/CVE-2026-9277 Vendor Advisory
- https://access.redhat.com/errata/RHSA-2026:26077
- https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/9xxx/CVE-2026-9277.j... Vendor Advisory
- https://access.redhat.com/errata/RHSA-2026:41066
- https://access.redhat.com/errata/RHSA-2026:41928
- https://access.redhat.com/errata/RHSA-2026:42796
- https://access.redhat.com/errata/RHSA-2026:40765
- https://access.redhat.com/errata/RHSA-2026:44267
- https://access.redhat.com/errata/RHSA-2026:44263
- https://access.redhat.com/errata/RHSA-2026:44237
- https://access.redhat.com/errata/RHSA-2026:26225
- https://access.redhat.com/errata/RHSA-2026:29197
- https://access.redhat.com/errata/RHSA-2026:28010
- https://access.redhat.com/errata/RHSA-2026:26234
- https://access.redhat.com/errata/RHSA-2026:28571
- https://access.redhat.com/errata/RHSA-2026:30076
- https://access.redhat.com/errata/RHSA-2026:33574
- https://access.redhat.com/errata/RHSA-2026:34342
- https://access.redhat.com/errata/RHSA-2026:29834
- https://access.redhat.com/errata/RHSA-2026:34791
- https://access.redhat.com/errata/RHSA-2026:29795
- https://access.redhat.com/errata/RHSA-2026:62410
- https://access.redhat.com/errata/RHSA-2026:36754
- https://access.redhat.com/errata/RHSA-2026:48699
- https://access.redhat.com/errata/RHSA-2026:50850
- https://access.redhat.com/errata/RHSA-2026:56854
- https://access.redhat.com/errata/RHSA-2026:56912
- https://access.redhat.com/security/cve/CVE-2026-9277
- https://bugzilla.redhat.com/show_bug.cgi?id=2480741
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-9277.json
Internet-facing
14 days
Internal
At next upgrade
- Not known to be exploited
- Needs hands-on effort to exploit
- Gives an attacker full control
Type
CWE-77Command Injection
CWE-78OS Command Injection
Timeline
Published22 May 2026
Updated11 Oct 2026
First seen22 May 2026
Sources
CVE-2026-9277 · OSV
GHSA-w7jw-789q-3m8p · OSV
CVE-2026-9277 · MITRE
DEBIAN-CVE-2026-9277 · OSV
UBUNTU-CVE-2026-9277 · OSV
GHSA-w7jw-789q-3m8p · GHSA
CVE-2026-9277 · NVD
Track software like this
Free during beta