CVE-2026-9277

Aliases:GHSA-w7jw-789q-3m8pDEBIAN-CVE-2026-9277CGA-2m7c-6c47-63cmCGA-39pf-6frh-jh4qCGA-924q-6xch-qqh4CGA-p363-57jr-4fq3CGA-2pxg-7954-j773CGA-36j4-vvh6-3qgwCGA-37mg-r8xp-fjvcCGA-3j77-9q83-cgm8CGA-442j-2xmj-3jfvCGA-4c7c-vrq4-9x26CGA-4p35-658j-64fwCGA-4x2g-hhc2-422cCGA-5hm4-9qj7-gj5jCGA-5hmx-xmq2-h6hxCGA-6p3j-f5cm-3rxcCGA-6xr8-m2h4-p7v7CGA-74pq-6645-745pCGA-7hc2-8rx5-62rvCGA-7r94-4w39-cfhrCGA-826j-v3jv-fj75CGA-83h9-6fv8-phpmCGA-85hx-r5cj-mh9cCGA-8fc3-rh45-vqrgCGA-8frg-233r-xjf9CGA-8w86-xf42-q3rxCGA-9gh2-px7r-4j62CGA-9vhq-jg4m-2vg3CGA-9xgr-6g84-vg4jCGA-c74j-9qj4-8vcxCGA-ch5v-46h9-5qfrCGA-cxp7-ggm5-4857CGA-f37g-982m-vfh2CGA-fmm2-r92r-7xcmCGA-fmrj-6q2h-xqgcCGA-g7qj-42mv-39c7CGA-gj7f-m6q2-rx9pCGA-h6xm-wmm4-qx2rCGA-h7v6-xf59-7q9qCGA-hp3p-j4gf-gr6cCGA-jfr5-pp93-jj2hCGA-jg54-5469-cqw8CGA-mh8g-wr5q-v8vjCGA-mhjq-c6m4-hpjvCGA-mx8j-cv45-9q3jCGA-p2mf-pf8p-c786CGA-pchx-96qc-9ww8CGA-pm6m-m66p-j6h8CGA-q3jj-qr8j-xmrhCGA-q62c-9h8c-37rwCGA-q7gj-99ph-wrpqCGA-qfmj-gg94-c934CGA-qggx-f9gj-mm9xCGA-qqgg-6gjf-7whpCGA-qqqh-9m3m-ccv2CGA-qvm8-x3hf-6v4pCGA-v9ph-fqc3-qq7rCGA-vf9j-c85x-6g7rCGA-vff5-hh9p-33w5CGA-vfgw-h342-cfx3CGA-vfpv-jv56-vgg2CGA-vhf2-v4xw-m5w8CGA-vhj6-7hmf-vm48CGA-w44v-7j39-xrf9CGA-w82g-6gcc-89hxCGA-wq73-qx6g-frq3CGA-xc5v-f2r8-hr5fCGA-xxpr-7vrf-m83q
Deferred
Published: 22 May 2026, 13:22
Last modified:14 Sept 2026, 12:04

Vulnerability Summary

Overall Risk (default)
high
70/100
CVSS Score
9.2 CRITICAL
v4.0 (cve.org)
EPSS Score
0.85% LOW
1% probability 0.00%
KEV
Not listed
Ransomware
No reports
Public exploits
None found
Dark Web
Not detected

Timeline

22 May 2026, 13:22
Published
Vulnerability first disclosed
14 Sept 2026, 12:04
Last Modified
Vulnerability information updated

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`.

CVSS Metrics

  • v4.0CRITICALScore: 9.2CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
  • v4.0CRITICALScore: 9.2CVSS: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
  • v3.1HIGHScore: 8.1CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

EPSS Trends

Current EPSS score: 0.85% Percentile: 57%

Techniques & Countermeasures

  • CWE-77Improper Neutralization of Special Elements used in a Command ('Command Injection')

    The product constructs all or part of a command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended command when it is sent to a downstream component.

  • CWE-78Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

    The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.

Affected Systems

  • chainguardarangodb-3.11

    < 3.11.14.4-r9

  • chainguardarangodb-3.12

    < 3.12.9.4-r2

  • chainguardargo-workflows-ui-3.6

    < 3.6.19-r7

  • chainguardcode-server

    < 4.123.0-r2

  • chainguardgemini-cli

    < 0.49.0-r4

  • chainguardgitlab-rails-ce-18.1

    < 18.1.6-r20

  • chainguardgitlab-rails-ce-18.10

    all

  • chainguardgitlab-rails-ce-18.11

    < 18.11.6-r8

  • chainguardgitlab-rails-ce-18.5

    all

  • chainguardgitlab-rails-ce-18.6

    all

  • chainguardgitlab-rails-ce-18.7

    all

  • chainguardgitlab-rails-ce-18.8

    all

  • chainguardgitlab-rails-ce-18.9

    all

  • chainguardgitlab-rails-ce-19.0

    < 19.0.4-r4

  • chainguardgitlab-rails-ce-19.1

    < 19.1.2-r4

  • chainguardgitlab-rails-ce-fips-18.1

    < 18.1.6-r68

  • chainguardgitlab-rails-ce-fips-18.10

    all

  • chainguardgitlab-rails-ce-fips-18.11

    < 18.11.7-r2

  • chainguardgitlab-rails-ce-fips-18.5

    all

  • chainguardgitlab-rails-ce-fips-18.6

    all

  • chainguardgitlab-rails-ce-fips-18.7

    all

  • chainguardgitlab-rails-ce-fips-18.8

    all

  • chainguardgitlab-rails-ce-fips-18.9

    all

  • chainguardgitlab-rails-ce-fips-19.0

    < 19.0.4-r4

  • chainguardgitlab-rails-ce-fips-19.1

    < 19.1.2-r5

  • chainguardlangfuse-2-worker

    < 2.95.12-r28

  • chainguardpy3.10-captum

    < 0.9.0-r1

  • chainguardpy3.11-captum

    < 0.9.0-r1

  • chainguardpy3.12-captum

    < 0.9.0-r1

  • chainguardpy3.13-captum

    < 0.9.0-r1

  • chainguardtileserver-gl

    < 5.6.0-r5

  • chainguardtileserver-gl-fips

    < 5.6.0-r4

  • wolficode-server

    < 4.123.0-r2

  • wolfitileserver-gl

    < 5.6.0-r5

  • debiannode-shell-quote

    < 1.7.4+~1.7.1-1+deb12u1 | < 1.7.4+~1.7.1-1+deb13u1 | < 1.8.4+~1.7.5-1

  • Npmshell-quote

    ≥ 1.1.0, < 1.8.4

References (43)