shell-quote `quote()` does not validate object-token shapes, allowing command injection via line terminators in `.op`
Summary
| CVE | CVE-2026-9277 |
|---|---|
| State | PUBLISHED |
| Assigner | harborist |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2026-05-22 14:16:30 UTC |
| Updated | 2026-07-21 12:19:04 UTC |
| 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`. |
Risk And Classification
Primary CVSS: v4.0 9.2 CRITICAL from 7ffcee3d-2c14-4c3e-b844-86c6a321a158
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
EPSS: 0.008480000 probability, percentile 0.540630000 (date 2026-07-20)
Problem Types: CWE-77 | CWE-78 | CWE-78 CWE-78 Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') | CWE-77 CWE-77 Improper Neutralization of Special Elements used in a Command ('Command Injection') | CWE-78 Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
| Version | Source | Type | Score | Severity | Vector |
|---|---|---|---|---|---|
| 4.0 | 7ffcee3d-2c14-4c3e-b844-86c6a321a158 | Secondary | 9.2 | CRITICAL | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/C... |
| 4.0 | CNA | CVSS | 9.2 | CRITICAL | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| 3.1 | ADP | CVSS | 8.1 | HIGH | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 3.1 | 7ffcee3d-2c14-4c3e-b844-86c6a321a158 | Secondary | 8.1 | HIGH | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 3.1 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | Secondary | 8.1 | HIGH | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 3.1 | CNA | CVSS | 8.1 | HIGH | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
CVSS v4.0 Breakdown
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CVSS v3.1 Breakdown
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|---|---|---|---|
| ADP | Red Hat | Cryostat 4 On RHEL 9 | unaffected 4.2.0-10 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782840519 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782839981 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782839193 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782838753 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782839279 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782840539 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782841925 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782844225 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782839658 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782838476 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782839996 * rpm | Not specified |
| ADP | Red Hat | Cluster Observability Operator 1.5.0 | unaffected 1782839494 * rpm | Not specified |
| ADP | Red Hat | Red Hat Developer Hub 1.10 | unaffected 1783448184 * rpm | Not specified |
| ADP | Red Hat | Red Hat Developer Hub 1.9 | unaffected 1781187342 * rpm | Not specified |
| ADP | Red Hat | Red Hat Developer Hub 1.9 | unaffected 1782761244 * rpm | Not specified |
| ADP | Red Hat | Red Hat Discovery 2 | unaffected 1782166952 * rpm | Not specified |
| ADP | Red Hat | Red Hat Migration Toolkit 1.8 | unaffected 1783690532 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Container Platform 4.20 | unaffected 1782911711 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Container Platform 4.21 | unaffected 1782308675 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Container Platform 4.22 | unaffected 1782224390 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 2.6 | unaffected 1780907585 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 2.6 | unaffected 1780916536 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 3.0 | unaffected 1780470245 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 3.0 | unaffected 1780916345 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 3.1 | unaffected 1780470706 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 3.1 | unaffected 1780916478 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 3.2 | unaffected 1780470003 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 3.2 | unaffected 1780916392 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 3.3 | unaffected 1780997382 * rpm | Not specified |
| ADP | Red Hat | Red Hat OpenShift Service Mesh 3.3 | unaffected 1780997438 * rpm | Not specified |
| ADP | Red Hat | Red Hat Quay 3.1 | unaffected 1782487717 * rpm | Not specified |
| ADP | Red Hat | Red Hat Quay 3.12 | unaffected 1781937357 * rpm | Not specified |
| ADP | Red Hat | Red Hat Quay 3.16 | unaffected 1783955846 * rpm | Not specified |
| ADP | Red Hat | Red Hat Quay 3.9 | unaffected 1781878070 * rpm | Not specified |
| ADP | Red Hat | Red Hat Satellite 6.18 | unaffected 1781032495 * rpm | Not specified |
| ADP | Red Hat | Cryostat 4 | Not specified | Not specified |
| ADP | Red Hat | Gatekeeper 3 | Not specified | Not specified |
| ADP | Red Hat | Node HealthCheck Operator | Not specified | Not specified |
| ADP | Red Hat | Node HealthCheck Operator | Not specified | Not specified |
| ADP | Red Hat | Node HealthCheck Operator | Not specified | Not specified |
| ADP | Red Hat | OpenShift Lightspeed | Not specified | Not specified |
| ADP | Red Hat | OpenShift Lightspeed | Not specified | Not specified |
| ADP | Red Hat | OpenShift Lightspeed | Not specified | Not specified |
| ADP | Red Hat | OpenShift Pipelines | Not specified | Not specified |
| ADP | Red Hat | OpenShift Pipelines | Not specified | Not specified |
| ADP | Red Hat | OpenShift Pipelines | Not specified | Not specified |
| ADP | Red Hat | OpenShift Pipelines | Not specified | Not specified |
| ADP | Red Hat | OpenShift Service Mesh 3 | Not specified | Not specified |
| ADP | Red Hat | OpenShift Service Mesh 3 | Not specified | Not specified |
| ADP | Red Hat | Red Hat AMQ Broker 7 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Build Of Apache Camel - HawtIO 4 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Build Of Podman Desktop | Not specified | Not specified |
| ADP | Red Hat | Red Hat Build Of Podman Desktop - Tech Preview | Not specified | Not specified |
| ADP | Red Hat | Red Hat Data Grid 8 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux 10 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux 8 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux 8 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux 9 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux 9 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux 9 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux AI RHEL AI 3 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux AI RHEL AI 3 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux AI RHEL AI 3 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux AI RHEL AI 3 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Fuse 7 | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift Container Platform 4 | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift Container Platform 4 | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift Virtualization 4 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Trusted Artifact Signer | Not specified | Not specified |
| ADP | Red Hat | Self-service Automation Portal 2 | Not specified | Not specified |
References
| Reference | Source | Link | Tags |
|---|---|---|---|
| access.redhat.com/errata/RHSA-2026:34791 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:33683 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:41928 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:26080 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| github.com/ljharb/shell-quote/commit/1518179 | 7ffcee3d-2c14-4c3e-b844-86c6a321a158 | github.com | |
| access.redhat.com/errata/RHSA-2026:34342 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:36754 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/security/cve/CVE-2026-9277 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:30076 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:29834 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:28571 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:26077 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:29795 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| www.npmjs.com/package/shell-quote | 7ffcee3d-2c14-4c3e-b844-86c6a321a158 | www.npmjs.com | |
| access.redhat.com/errata/RHSA-2026:26072 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:26225 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:26090 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| www.openwall.com/lists/oss-security/2026/05/23/2 | af854a3a-2127-422b-91ae-364da2661108 | www.openwall.com | |
| access.redhat.com/errata/RHSA-2026:29197 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:26079 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| github.com/ljharb/shell-quote/security/advisories/GHSA-w7jw-789q-3m8p | 134c704f-9b21-4f2e-91b3-4a467353bcc0 | github.com | |
| github.com/ljharb/shell-quote | 7ffcee3d-2c14-4c3e-b844-86c6a321a158 | github.com | |
| security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-9277.json | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | security.access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:28010 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:41066 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| bugzilla.redhat.com/show_bug.cgi | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | bugzilla.redhat.com | |
| access.redhat.com/errata/RHSA-2026:26234 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:33574 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| CVE Program record | CVE.ORG | www.cve.org | canonical |
| NVD vulnerability detail | NVD | nvd.nist.gov | canonical, analysis |
Vendor Comments And Credit
Discovery Credit
CNA: Akshat Sinha (@akshatgit) (en)
CNA: Jordan Harband (@ljharb) (en)
Additional Advisory Data
| Source | Time | Event |
|---|---|---|
| ADP | 2026-05-22T14:01:14.427Z | Reported to Red Hat. |
| ADP | 2026-05-22T13:22:38.873Z | Made public. |
Solutions
ADP: RHSA-2026:28010: Cryostat 4 on RHEL 9
ADP: RHSA-2026:34342: Cluster Observability Operator 1.5.0
ADP: RHSA-2026:36754: Red Hat Developer Hub 1.10
ADP: RHSA-2026:33574: Red Hat Developer Hub 1.9
ADP: RHSA-2026:26234: Red Hat Developer Hub 1.9
ADP: RHSA-2026:29197: Red Hat Discovery 2
ADP: RHSA-2026:41928: Red Hat Migration Toolkit 1.8
ADP: RHSA-2026:34791: Red Hat OpenShift Container Platform 4.20
ADP: RHSA-2026:29834: Red Hat OpenShift Container Platform 4.21
ADP: RHSA-2026:29795: Red Hat OpenShift Container Platform 4.22
ADP: RHSA-2026:26072: Red Hat OpenShift Service Mesh 2.6
ADP: RHSA-2026:26080: Red Hat OpenShift Service Mesh 3.0
ADP: RHSA-2026:26077: Red Hat OpenShift Service Mesh 3.1
ADP: RHSA-2026:26079: Red Hat OpenShift Service Mesh 3.2
ADP: RHSA-2026:26090: Red Hat OpenShift Service Mesh 3.3
ADP: RHSA-2026:30076: Red Hat Quay 3.12
ADP: RHSA-2026:41066: Red Hat Quay 3.16
ADP: RHSA-2026:33683: Red Hat Quay 3.1
ADP: RHSA-2026:28571: Red Hat Quay 3.9
ADP: RHSA-2026:26225: Red Hat Satellite 6.18