shell-quote `quote()` does not validate object-token shapes, allowing command injection via line terminators in `.op`
Exploitation and risk
Source statusCISA KEV lists vulnerabilities known to be exploited. FIRST EPSS estimates the likelihood of exploitation in the next 30 days. An unavailable score does not mean zero risk.
Which CVEs have scores here?
This view includes predictions for CVE identifiers explicitly listed in public NuGet advisories. Microsoft release pages have their own prediction coverage. Check source status for the scope and latest checks.
No exploitation or prediction data is available here for these CVEs. This does not mean they are safe or unlikely to be exploited.
cve-program · CVE-2026-9277
Publishedshell-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`.
- Source published
- 22 May 2026 13:22:38 UTC
- Source modified
- 14 Sep 2026 12:04:27 UTC
- Saved here
- 23 Oct 2026 15:48:27 UTC
- Source terms
- CVE Program Terms of Use
Original source record · Cite this exact observation · Complete original publisher JSON
Source: cve-program · CVE Program Terms of Use. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS 3.1 · 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 4.0 · 9.2 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
euvd · EUVD-2026-31440
Publishedshell-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`.
Additional publisher context
EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.
Original publisher date fields
datePublished: May 22, 2026, 1:22:38 PM
dateUpdated: Sep 14, 2026, 12:04:27 PM
39 related source bulletins · separate from aliases
RHSA-2026:41928: Red Hat Security Advisory: Red Hat Migration Toolkit for Containers
CVE-2025-7783 · CVE-2025-12816 · CVE-2025-13465 · CVE-2025-15284 · CVE-2025-52881 · CVE-2025-58183 · CVE-2025-58754 · CVE-2025-61726 · CVE-2025-61729 · CVE-2025-62718 · CVE-2025-66031 · CVE-2025-66418 · CVE-2025-66471 · CVE-2025-66506 · CVE-2025-68121 · CVE-2025-69223 · CVE-2025-69227 · CVE-2025-69228 · CVE-2026-4800 · CVE-2026-6322 · CVE-2026-9277 · CVE-2026-9595 · CVE-2026-12143 · CVE-2026-13149 · CVE-2026-13676 · CVE-2026-21441 · CVE-2026-22029 · CVE-2026-23490 · CVE-2026-23745 · CVE-2026-25679 · CVE-2026-25681 · CVE-2026-27136 · CVE-2026-27137 · CVE-2026-29063 · CVE-2026-30922 · CVE-2026-32280 · CVE-2026-32281 · CVE-2026-32283 · CVE-2026-33186 · CVE-2026-33810 · CVE-2026-33811 · CVE-2026-34986 · CVE-2026-39820 · CVE-2026-39821 · CVE-2026-40895 · CVE-2026-42264 · CVE-2026-42338 · CVE-2026-42499 · CVE-2026-44486 · CVE-2026-44487 · CVE-2026-44488 · CVE-2026-44492 · CVE-2026-44494 · CVE-2026-44495 · CVE-2026-44496 · CVE-2026-45736 · CVE-2026-45822 · CVE-2026-48779
RHSA-2026:62410: Red Hat Security Advisory: OpenShift Container Platform 4.14.73 bug fix and security update
CVE-2026-9277 · CVE-2026-33814 · CVE-2026-54423
openSUSE-SU-2026:10861-1: python311-pytest-html-4.2.0-2.1 on GA media
CVE-2026-9277
RHSA-2026:28571: Red Hat Security Advisory: Red Hat Quay 3.9.23
CVE-2026-6322 · CVE-2026-9277 · CVE-2026-10143 · CVE-2026-44432 · CVE-2026-44496 · CVE-2026-48526
RHSA-2026:29197: Red Hat Security Advisory: A Subscription Management tool for finding and reporting Red Hat product usage
CVE-2024-12086 · CVE-2025-14087 · CVE-2025-14512 · CVE-2026-3832 · CVE-2026-3833 · CVE-2026-4046 · CVE-2026-4437 · CVE-2026-4438 · CVE-2026-4878 · CVE-2026-5260 · CVE-2026-5419 · CVE-2026-6322 · CVE-2026-7383 · CVE-2026-9076 · CVE-2026-9277 · CVE-2026-28390 · CVE-2026-29518 · CVE-2026-33845 · CVE-2026-33846 · CVE-2026-34180 · CVE-2026-34181 · CVE-2026-34182 · CVE-2026-34183 · CVE-2026-40355 · CVE-2026-40356 · CVE-2026-41035 · CVE-2026-42009 · CVE-2026-42010 · CVE-2026-42011 · CVE-2026-42012 · CVE-2026-42013 · CVE-2026-42014 · CVE-2026-42015 · CVE-2026-42764 · CVE-2026-42766 · CVE-2026-42767 · CVE-2026-42768 · CVE-2026-42769 · CVE-2026-42770 · CVE-2026-43618 · CVE-2026-44486 · CVE-2026-44487 · CVE-2026-44488 · CVE-2026-44492 · CVE-2026-44494 · CVE-2026-44495 · CVE-2026-44496 · CVE-2026-45186 · CVE-2026-45445 · CVE-2026-45446 · CVE-2026-45447 · CVE-2026-45736 · CVE-2026-48779
RHSA-2026:29834: Red Hat Security Advisory: OpenShift Container Platform 4.21.22 bug fix and security update
CVE-2026-6322 · CVE-2026-9277
RHSA-2026:48699: Red Hat Security Advisory: OpenShift Container Platform 4.18.51 bug fix and security update
CVE-2026-4800 · CVE-2026-9277 · CVE-2026-16242 · CVE-2026-33186 · CVE-2026-40895 · CVE-2026-42154
RHSA-2026:34342: Red Hat Security Advisory: Cluster Observability Operator 1.5.0
CVE-2020-7753 · CVE-2021-33623 · CVE-2024-4068 · CVE-2024-45338 · CVE-2024-52011 · CVE-2025-22868 · CVE-2025-22870 · CVE-2025-22872 · CVE-2025-47911 · CVE-2025-58190 · CVE-2026-1526 · CVE-2026-1528 · CVE-2026-2229 · CVE-2026-4800 · CVE-2026-4867 · CVE-2026-6321 · CVE-2026-6322 · CVE-2026-6734 · CVE-2026-9277 · CVE-2026-9697 · CVE-2026-12143 · CVE-2026-12151 · CVE-2026-25680 · CVE-2026-25681 · CVE-2026-29063 · CVE-2026-32141 · CVE-2026-33228 · CVE-2026-33671 · CVE-2026-33814 · CVE-2026-33891 · CVE-2026-33894 · CVE-2026-33895 · CVE-2026-33896 · CVE-2026-33937 · CVE-2026-33938 · CVE-2026-33939 · CVE-2026-33940 · CVE-2026-33941 · CVE-2026-39821 · CVE-2026-42506 · CVE-2026-48779
RHSA-2026:26079: Red Hat Security Advisory: Kiali 2.17.9 for Red Hat OpenShift Service Mesh 3.2
CVE-2026-9277 · CVE-2026-32281
RHSA-2026:26090: Red Hat Security Advisory: Kiali 2.22.5 for Red Hat OpenShift Service Mesh 3.3
CVE-2026-9277 · CVE-2026-32281 · CVE-2026-44293
RHSA-2026:62260: Red Hat Security Advisory: Red Hat OpenShift Dev Spaces 3.30.0 Release.
CVE-2025-55163 · CVE-2026-8286 · CVE-2026-9277 · CVE-2026-9547 · CVE-2026-9563 · CVE-2026-10050 · CVE-2026-10051 · CVE-2026-12143 · CVE-2026-12151 · CVE-2026-13149 · CVE-2026-15075 · CVE-2026-15076 · CVE-2026-27136 · CVE-2026-34986 · CVE-2026-39820 · CVE-2026-39831 · CVE-2026-39835 · CVE-2026-40898 · CVE-2026-40983 · CVE-2026-40984 · CVE-2026-41242 · CVE-2026-41695 · CVE-2026-41716 · CVE-2026-42264 · CVE-2026-42499 · CVE-2026-44705 · CVE-2026-45149 · CVE-2026-45416 · CVE-2026-45623 · CVE-2026-45674 · CVE-2026-46597 · CVE-2026-46681 · CVE-2026-47691 · CVE-2026-48020 · CVE-2026-48068 · CVE-2026-48491 · CVE-2026-49978 · CVE-2026-50010 · CVE-2026-50193 · CVE-2026-53488 · CVE-2026-53492 · CVE-2026-53622 · CVE-2026-54399 · CVE-2026-54428 · CVE-2026-54512 · CVE-2026-54513 · CVE-2026-54763 · CVE-2026-55831 · CVE-2026-55833 · CVE-2026-56745 · CVE-2026-56746 · CVE-2026-56819 · CVE-2026-59296 · CVE-2026-59869 · CVE-2026-59873 · CVE-2026-59874 · CVE-2026-59877 · CVE-2026-59888 · CVE-2026-59899 · CVE-2026-65600 · CVE-2026-65601 · CVE-2026-67213 · CVE-2026-67214 · CVE-2026-68494 · CVE-2026-69152 · CVE-2026-69153 · CVE-2026-73086 · CVE-2026-73566 · CVE-2026-73646 · CVE-2026-75838
openSUSE-SU-2026:20919-1: Security update for agama-web-ui
CVE-2025-7339 · CVE-2026-42041 · CVE-2026-42264 · CVE-2026-9277
RHSA-2026:26077: Red Hat Security Advisory: Kiali 2.11.12 for Red Hat OpenShift Service Mesh 3.1
CVE-2026-9277 · CVE-2026-32281
RHSA-2026:70267: Red Hat Security Advisory: Red Hat Quay 3.14.9
CVE-2026-4427 · CVE-2026-6322 · CVE-2026-9277 · CVE-2026-10143 · CVE-2026-12143 · CVE-2026-13149 · CVE-2026-13676 · CVE-2026-14257 · CVE-2026-15792 · CVE-2026-15927 · CVE-2026-16221 · CVE-2026-18255 · CVE-2026-32591 · CVE-2026-33747 · CVE-2026-33748 · CVE-2026-33818 · CVE-2026-39820 · CVE-2026-39821 · CVE-2026-39822 · CVE-2026-39828 · CVE-2026-39829 · CVE-2026-39830 · CVE-2026-39831 · CVE-2026-39832 · CVE-2026-39835 · CVE-2026-42151 · CVE-2026-42154 · CVE-2026-42499 · CVE-2026-42504 · CVE-2026-42508 · CVE-2026-44432 · CVE-2026-44486 · CVE-2026-44487 · CVE-2026-44488 · CVE-2026-44492 · CVE-2026-44494 · CVE-2026-44495 · CVE-2026-44496 · CVE-2026-44705 · CVE-2026-44990 · CVE-2026-46595 · CVE-2026-46597 · CVE-2026-48526 · CVE-2026-49477 · CVE-2026-54058 · CVE-2026-54060 · CVE-2026-55379 · CVE-2026-55380 · CVE-2026-56852 · CVE-2026-56853 · CVE-2026-56858 · CVE-2026-56859 · CVE-2026-56860 · CVE-2026-56862 · CVE-2026-57231 · CVE-2026-59197 · CVE-2026-59199 · CVE-2026-59200 · CVE-2026-59204 · CVE-2026-59205 · CVE-2026-59869 · CVE-2026-59885 · CVE-2026-59886 · CVE-2026-67213 · CVE-2026-67214 · CVE-2026-67313 · CVE-2026-67314 · CVE-2026-67320 · CVE-2026-67321 · CVE-2026-69152 · CVE-2026-69153 · CVE-2026-73086 · CVE-2026-73088 · CVE-2026-73089 · CVE-2026-84375
RHSA-2026:40765: Red Hat Security Advisory: OpenShift Container Platform 4.19.39 bug fix and security update
CVE-2026-9277 · CVE-2026-13676
RHSA-2026:36754: Red Hat Security Advisory: Red Hat Developer Hub 1.10.2 release.
CVE-2026-6322 · CVE-2026-6734 · CVE-2026-9277 · CVE-2026-9673 · CVE-2026-9697 · CVE-2026-12143 · CVE-2026-12151 · CVE-2026-24781 · CVE-2026-27136 · CVE-2026-39820 · CVE-2026-42338 · CVE-2026-42499 · CVE-2026-44486 · CVE-2026-44487 · CVE-2026-44488 · CVE-2026-44492 · CVE-2026-44494 · CVE-2026-44495 · CVE-2026-44496 · CVE-2026-45736 · CVE-2026-47131 · CVE-2026-47135 · CVE-2026-47137 · CVE-2026-47139 · CVE-2026-47140 · CVE-2026-47141 · CVE-2026-47208 · CVE-2026-47210 · CVE-2026-48779
RHSA-2026:28010: Red Hat Security Advisory: Red Hat build of Cryostat security update
CVE-2025-48431 · CVE-2026-9277 · CVE-2026-32281 · CVE-2026-41240 · CVE-2026-42578 · CVE-2026-42579 · CVE-2026-42581 · CVE-2026-42584 · CVE-2026-42587 · CVE-2026-43869
RHSA-2026:30076: Red Hat Security Advisory: Red Hat Quay 3.12.19
CVE-2026-6322 · CVE-2026-9277 · CVE-2026-10143 · CVE-2026-44432 · CVE-2026-44496 · CVE-2026-48526
WID-SEC-W-2026-1934: Red Hat OpenShift Service Mesh: Schwachstelle ermöglicht Codeausführung
CVE-2026-9277
RHSA-2026:26072: Red Hat Security Advisory: Kiali 1.73.32 for Red Hat OpenShift Service Mesh 2.6
CVE-2026-9277
RHSA-2026:44263: Red Hat Security Advisory: OpenShift Container Platform 4.20.31 bug fix and security update
CVE-2026-9277 · CVE-2026-12143 · CVE-2026-40895 · CVE-2026-42154 · CVE-2026-42338 · CVE-2026-45736 · CVE-2026-59869 · CVE-2026-59873
RHSA-2026:29795: Red Hat Security Advisory: OpenShift Container Platform 4.22.3 bug fix and security update
CVE-2026-4800 · CVE-2026-6322 · CVE-2026-9277 · CVE-2026-35469 · CVE-2026-44293
RHSA-2026:93951: Red Hat Security Advisory: OpenShift Virtualization v4.17 Images
CVE-2026-9277 · CVE-2026-59879 · CVE-2026-84375
RHSA-2026:44237: Red Hat Security Advisory: OpenShift Container Platform 4.22.7 bug fix and security update
CVE-2026-9277 · CVE-2026-27136 · CVE-2026-35469 · CVE-2026-42338 · CVE-2026-59869 · CVE-2026-59873
RHSA-2026:54395: Red Hat Security Advisory: Red Hat Quay 3.17.4
CVE-2026-6322 · CVE-2026-9277 · CVE-2026-10143 · CVE-2026-12143 · CVE-2026-13149 · CVE-2026-13676 · CVE-2026-15927 · CVE-2026-39821 · CVE-2026-39828 · CVE-2026-39829 · CVE-2026-39830 · CVE-2026-39831 · CVE-2026-39832 · CVE-2026-39835 · CVE-2026-42508 · CVE-2026-44432 · CVE-2026-44990 · CVE-2026-46597 · CVE-2026-54058 · CVE-2026-54060 · CVE-2026-55379 · CVE-2026-55380 · CVE-2026-57231 · CVE-2026-59197 · CVE-2026-59199 · CVE-2026-59200 · CVE-2026-59204 · CVE-2026-59205 · CVE-2026-59869 · CVE-2026-59885 · CVE-2026-59886 · CVE-2026-73086
RHSA-2026:60023: Red Hat Security Advisory: OpenShift Container Platform 4.17.57 bug fix and security update
CVE-2026-4800 · CVE-2026-9277 · CVE-2026-25681 · CVE-2026-33814 · CVE-2026-34986 · CVE-2026-35469 · CVE-2026-39820 · CVE-2026-42499 · CVE-2026-42504 · CVE-2026-46597 · CVE-2026-49332 · CVE-2026-50236 · CVE-2026-50237
RHSA-2026:33574: Red Hat Security Advisory: Red Hat Developer Hub 1.9.6 release.
CVE-2026-9277 · CVE-2026-9673 · CVE-2026-27145 · CVE-2026-33811 · CVE-2026-39820 · CVE-2026-42033 · CVE-2026-42035 · CVE-2026-42039 · CVE-2026-42041 · CVE-2026-42043 · CVE-2026-42044 · CVE-2026-42338 · CVE-2026-42499 · CVE-2026-44486 · CVE-2026-44487 · CVE-2026-44488 · CVE-2026-44492 · CVE-2026-44494 · CVE-2026-44495 · CVE-2026-44496 · CVE-2026-44724 · CVE-2026-45736 · CVE-2026-47131 · CVE-2026-47135 · CVE-2026-47137 · CVE-2026-47139 · CVE-2026-47140 · CVE-2026-47141 · CVE-2026-47208 · CVE-2026-47209 · CVE-2026-48779
RHSA-2026:70647: Red Hat Security Advisory: OpenShift Container Platform 4.12.99 bug fix and security update
CVE-2026-1784 · CVE-2026-9277 · CVE-2026-33814 · CVE-2026-33818 · CVE-2026-56859 · CVE-2026-56860 · CVE-2026-56862 · CVE-2026-75885 · CVE-2026-75887
openSUSE-SU-2026:10979-1: agama-web-ui-21+360.16caae772-44.1 on GA media
CVE-2026-6402 · CVE-2026-9277
RHSA-2026:50850: Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.1 security update
CVE-2026-9277 · CVE-2026-43997 · CVE-2026-43998 · CVE-2026-43999 · CVE-2026-44000 · CVE-2026-44001 · CVE-2026-44002 · CVE-2026-44003 · CVE-2026-44004 · CVE-2026-44005 · CVE-2026-44006 · CVE-2026-44007 · CVE-2026-44008 · CVE-2026-44009 · CVE-2026-45411 · CVE-2026-47131 · CVE-2026-47135 · CVE-2026-47137 · CVE-2026-47139 · CVE-2026-47140 · CVE-2026-47141 · CVE-2026-47209 · CVE-2026-48068 · CVE-2026-48801 · CVE-2026-59877
openSUSE-SU-2026:20839-1: Security update for python-pytest-html
CVE-2026-9277
RHSA-2026:42796: Red Hat Security Advisory: Red Hat Quay 3.15.6
CVE-2026-9277 · CVE-2026-10143 · CVE-2026-12143 · CVE-2026-32591 · CVE-2026-39820 · CVE-2026-39821 · CVE-2026-39828 · CVE-2026-39829 · CVE-2026-39830 · CVE-2026-39831 · CVE-2026-39832 · CVE-2026-39835 · CVE-2026-42151 · CVE-2026-42154 · CVE-2026-42499 · CVE-2026-42508 · CVE-2026-44432 · CVE-2026-44486 · CVE-2026-44487 · CVE-2026-44488 · CVE-2026-44492 · CVE-2026-44494 · CVE-2026-44495 · CVE-2026-44496 · CVE-2026-44990 · CVE-2026-46595 · CVE-2026-46597 · CVE-2026-48526
RHSA-2026:26225: Red Hat Security Advisory: Technical preview of the satellite/iop-vulnerability-frontend-rhel9 container image
CVE-2026-6322 · CVE-2026-9277 · CVE-2026-26996 · CVE-2026-27904 · CVE-2026-29063 · CVE-2026-41680 · CVE-2026-42033 · CVE-2026-42035 · CVE-2026-42039 · CVE-2026-42041 · CVE-2026-42043 · CVE-2026-42044
RHSA-2026:65840: Red Hat Security Advisory: OpenShift Container Platform 4.13.71 bug fix and security update
CVE-2025-68121 · CVE-2026-9277 · CVE-2026-27143 · CVE-2026-27144 · CVE-2026-32280 · CVE-2026-33186 · CVE-2026-33814 · CVE-2026-39820 · CVE-2026-42154 · CVE-2026-42499 · CVE-2026-44496
RHSA-2026:26080: Red Hat Security Advisory: Kiali 2.4.18 for Red Hat OpenShift Service Mesh 3.0
CVE-2026-9277 · CVE-2026-32281
RHSA-2026:34791: Red Hat Security Advisory: OpenShift Container Platform 4.20.28 bug fix and security update
CVE-2026-9277 · CVE-2026-35469
RHSA-2026:44267: Red Hat Security Advisory: OpenShift Container Platform 4.21.26 bug fix and security update
CVE-2026-9277 · CVE-2026-12143 · CVE-2026-34986 · CVE-2026-35469 · CVE-2026-40895 · CVE-2026-42338 · CVE-2026-45736 · CVE-2026-59869 · CVE-2026-59873
RHSA-2026:41066: Red Hat Security Advisory: Red Hat Quay 3.16.5
CVE-2026-6322 · CVE-2026-9277 · CVE-2026-10143 · CVE-2026-12143 · CVE-2026-13676 · CVE-2026-32281 · CVE-2026-32591 · CVE-2026-39820 · CVE-2026-39821 · CVE-2026-39828 · CVE-2026-39829 · CVE-2026-39830 · CVE-2026-39831 · CVE-2026-39832 · CVE-2026-39835 · CVE-2026-42044 · CVE-2026-42151 · CVE-2026-42154 · CVE-2026-42499 · CVE-2026-42504 · CVE-2026-42508 · CVE-2026-44432 · CVE-2026-44486 · CVE-2026-44487 · CVE-2026-44488 · CVE-2026-44492 · CVE-2026-44494 · CVE-2026-44495 · CVE-2026-44496 · CVE-2026-44990 · CVE-2026-45822 · CVE-2026-46597 · CVE-2026-48526
RHSA-2026:33683: Red Hat Security Advisory: Red Hat Quay 3.10.23
CVE-2026-6322 · CVE-2026-9277 · CVE-2026-10143 · CVE-2026-44432 · CVE-2026-44496 · CVE-2026-48526
- Source published
- May 22, 2026, 1:22:38 PM (timezone not stated)
- Source modified
- Sep 14, 2026, 12:04:27 PM (timezone not stated)
- Saved here
- 11 Nov 2026 18:10:27 UTC
- Source terms
- ENISA EUVD · source terms and attribution apply
Original source record · Cite this exact observation · Complete original publisher JSON
Source: euvd · ENISA EUVD · source terms and attribution apply. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
EUVD CVSS 4.0 · 9.2 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
nvd · CVE-2026-9277
Publishedshell-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`.
Additional publisher context
NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.
Source analysis status: Deferred
Weakness classifications: CWE-77 · CWE-78
Original publisher date fields
published: 2026-05-22T14:16:30.330
lastModified: 2026-09-14T13:19:33.133
- Source published
- 22 May 2026 14:16:30 UTC
- Source modified
- 14 Sep 2026 13:19:33 UTC
- Saved here
- 25 Oct 2026 16:19:22 UTC
- Source terms
- NIST NVD usage terms; underlying source attribution retained
Original source record · Cite this exact observation · Complete original publisher JSON
Source: nvd · NIST NVD usage terms; underlying source attribution retained. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS 4.0 · 7ffcee3d-2c14-4c3e-b844-86c6a321a158 · Secondary · 9.2 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 3.1 · 7ffcee3d-2c14-4c3e-b844-86c6a321a158 · Secondary · 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 3.1 · 0b0ca135-0b70-47e7-9f44-1890c2a1c46c · Secondary · 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
osv · GHSA-w7jw-789q-3m8p
Published### Summary `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 `\n` as a command separator, so any content after it would execute as a second command. The vulnerable code path is reachable in two ways. Neither requires the parser to misbehave — `parse()` only emits ops from a fixed control set — but both are documented API surface: 1. **Direct construction.** A caller builds `{ op: '...\n...' }` from external input (e.g. a deserialized argument array) and passes it to `quote()`. 2. **`envFn` return.** `parse(cmd, envFn)` is documented to splice the return value of `envFn` into the result array when it is an object. An attacker-influenced data source consulted by `envFn` can introduce an object token whose `.op` reaches `quote()`. ### Impact Shell command injection in callers that pass object tokens with attacker-influenced `.op` values to `quote()` and then hand the result to a shell. The preconditions are narrower than ordinary string injection — they require the caller to feed object tokens into `quote()` — but object tokens are a public, documented part of the API surface, and `quote()` is intended to be a shell-safety boundary. ### PoC ```js const { parse, quote } = require('shell-quote'); // Direct construction quote([{ op: ';\nid' }]); // → "\;\n\\i\\d" ← literal newline; second line executes as a command // Via parse() with an envFn returning attacker-shaped objects const tokens = parse('echo $X', () => ({ op: ';\nid' })); require('child_process').execSync(quote(tokens), { shell: true }); // Executes `id` after `echo \;`. ``` Confirmed under `sh`, `bash`, `dash`, and `zsh`. ### Patch Fixed by replacing the per-character escape with strict shape validation in `quote()`. The object-token branch now: - **`{ op }`** — `.op` must be a string from the same allowlist the parser emits (`||`, `&&`, `;;`, `|&`, `<(`, `<<<`, `>>`, `>&`, `<&`, `&`, `;`, `(`, `)`, `|`, `<`, `>`). Anything else throws `TypeError`. This is the direct fix for the reported issue and removes the entire class of `.op` injection. - **`{ op: 'glob', pattern }`** — `.pattern` must be a string with no line terminators. Glob metacharacters (`*`, `?`, `[`, `]`, `{`, `}`, `,`) pass through; all other shell-special characters are backslash-escaped. (Previously the pattern field was discarded entirely and the literal string `\g\l\o\b` was emitted — a latent bug, not security-relevant.) - **`{ comment }`** — `.comment` must be a string with no line terminators (line terminators would end the shell comment and resume command parsing — same injection shape). - **Any other object shape** — `TypeError`. The fix is allowlist-based rather than a targeted regex tweak, so it closes the reported vector and forecloses adjacent ones (U+2028 / U+2029 line separators in `.op`, line terminators in comments, unknown-shape objects coerced through `.replace`). ### Workarounds Prior to upgrading, callers that build object tokens from untrusted input should validate `.op` against the parser's operator set themselves, and never construct `{ op }` from attacker-controlled strings. ### Credits Reported by Akshat Sinha
- Source published
- 9 Jun 2026 14:27:15 UTC
- Source modified
- 10 Sep 2026 03:50:50 UTC
- Saved here
- 24 Oct 2026 13:17:17 UTC
- Source terms
- GitHub Advisory Database · CC-BY-4.0
Original source record · Cite this exact observation · Complete original publisher JSON
Source: osv · GitHub Advisory Database · CC-BY-4.0. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS_V3 · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS_V4 · 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
Publisher rating · CRITICAL