Every CVE Search/ Get API key

CVE-2026-9277

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

9.2 CriticalPublic exploitFix available

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.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

0.79%Up 0.7 points since May 23, 2026
90%50%10%1%

What each source reports

CVE List Score used 9.2

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.

Record
CVE-2026-9277
CVSS 4.0
9.2 CriticalCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-78, CWE-77, CWE-78
Updated
2026-11-02
EUVDEUVD-2026-31440 9.2

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.

Record
EUVD-2026-31440
CVSS 4.0
9.2 CriticalCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-w7jw-789q-3m8p 9.2

shell-quote quote() does not escape newlines in object .op values

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

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

Record
GHSA-w7jw-789q-3m8p
CVSS 4.0
9.2 CriticalCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-77, CWE-78
Updated
2026-11-02
NVD 9.2

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.

Record
CVE-2026-9277
CVSS 4.0
9.2 CriticalCVSS: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
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-77, CWE-78
Updated
2026-11-02
OSV 9.2

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.

Record
CVE-2026-9277
CVSS 4.0
9.2 CriticalCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Weakness
CWE-77, CWE-78
Updated
2026-11-02
OSVDEBIAN-CVE-2026-9277 9.2

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.

Record
DEBIAN-CVE-2026-9277
CVSS 4.0
9.2 CriticalCVSS: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
Updated
2026-11-02
Show 13 moreShow less
OSVGHSA-w7jw-789q-3m8p 9.2

shell-quote quote() does not escape newlines in object .op values

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

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

Record
GHSA-w7jw-789q-3m8p
CVSS 4.0
9.2 CriticalCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-77, CWE-78
Updated
2026-11-02
OSVUBUNTU-CVE-2026-9277 9.2

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.

Record
UBUNTU-CVE-2026-9277
CVSS 4.0
9.2 CriticalCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVCLSA-2026-1783558964 No score

TuxCare security update for shell-quote (1 CVE)

TuxCare rebuilt shell-quote to address 1 CVE. Fixed in 1.7.2-tuxcare.2.

Record
CLSA-2026-1783558964
Updated
2026-11-02
OSVCLSA-2026-1784683086 No score

TuxCare security update for shell-quote (2 CVEs)

TuxCare rebuilt shell-quote to address 2 CVEs. Fixed in 1.7.3-tuxcare.1.

Record
CLSA-2026-1784683086
Updated
2026-11-02
OSVCLSA-2026-1791201398 No score

TuxCare security update for shell-quote (2 CVEs)

TuxCare rebuilt shell-quote to address 2 CVEs. Fixed in 1.8.1-tuxcare.2.

Record
CLSA-2026-1791201398
Updated
2026-11-02
OSVCLSA-2026-1791359284 No score

TuxCare security update for shell-quote (1 CVE)

TuxCare rebuilt shell-quote to address 1 CVE. Fixed in 1.8.3-tuxcare.1.

Record
CLSA-2026-1791359284
Updated
2026-11-02
OSVCLSA-2026-1792163710 No score

TuxCare security update for shell-quote (2 CVEs)

TuxCare rebuilt shell-quote to address 2 CVEs. Fixed in 1.8.2-tuxcare.1.

Record
CLSA-2026-1792163710
Updated
2026-11-02
OSVopenSUSE-SU-2026:10861-1 No score

python311-pytest-html-4.2.0-2.1 on GA media

These are all security issues fixed in the python311-pytest-html-4.2.0-2.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:10861-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:10979-1 No score

agama-web-ui-21+360.16caae772-44.1 on GA media

These are all security issues fixed in the agama-web-ui-21+360.16caae772-44.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:10979-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:20839-1 No score

Security update for python-pytest-html

This update for python-pytest-html fixes the following issues:

Changes in python-pytest-html:

  • CVE-2026-9277: shell-quote: improper escaping of newlines (bsc#1266254) Update the vendored shell-quote to 1.8.4 node_modules
Record
openSUSE-SU-2026:20839-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:20919-1 No score

Security update for agama-web-ui

This update for agama-web-ui fixes the following issues

  • CVE-2025-7339: on-headers: incorrect array handling may lead to HTTP response header manipulation (bsc#1246678).
  • CVE-2026-9277: shell-quote: improper escaping of newlines in object .op values by quote() can lead to shell command injection (bsc#1266256).
  • CVE-2026-42041: axios: authentication bypass via validateStatus prototype pollution gadget due to suppression of HTTP error (bsc#1264160).
  • CVE-2026-42264: axios: prototype pollution read-side gadgets in HTTP adapter can lead to credential injection and request h (bsc#1264802).

Changes for agama-web-ui:

  • Update other dependencies reported by "npm audit".
Record
openSUSE-SU-2026:20919-1
Updated
2026-11-02
OSVROOT-APP-NPM-CVE-2026-9277 No score

CVE-2026-9277 in shell-quote - Patched by Root

Root has patched CVE-2026-9277 in the shell-quote package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-CVE-2026-9277
Updated
2026-11-02
OSVUSN-8410-1 No score

node-shell-quote vulnerability

Akshat Sinha discovered that shell-quote improperly validated object-token inputs. An attacker could possibly use this issue to cause shell-quote to crash, resulting in a denial of service, or execute arbitrary code.

Record
USN-8410-1
Updated
2026-11-02

Affected products

Show 36 moreShow less

Affected packages

Affected packages
PackageAffectedFixed
shell-quote
npm
1.1.0 to 1.8.3
1.8.4
shell-quote
TuxCare:npm
1.7.2-tuxcare.0 up to 1.7.2-tuxcare.2, plus listed versions
1.7.21.7.2-tuxcare.1
1.7.2-tuxcare.2
shell-quote
TuxCare:npm
From an advisory covering 2 CVEs
1.7.3-tuxcare.0 up to 1.7.3-tuxcare.1, plus listed versions
1.7.3
1.7.3-tuxcare.1
shell-quote
TuxCare:npm
From an advisory covering 2 CVEs
1.8.1-tuxcare.0 up to 1.8.1-tuxcare.2, plus listed versions
1.8.11.8.1-tuxcare.1
1.8.1-tuxcare.2
shell-quote
TuxCare:npm
1.8.3-tuxcare.0 up to 1.8.3-tuxcare.1, plus listed versions
1.8.3
1.8.3-tuxcare.1
shell-quote
TuxCare:npm
From an advisory covering 2 CVEs
1.8.2-tuxcare.0 up to 1.8.2-tuxcare.1, plus listed versions
1.8.2
1.8.2-tuxcare.1
node-shell-quote
Debian:12
before 1.7.4+~1.7.1-1+deb12u1, plus listed versions
1.7.4+~1.7.1-1
1.7.4+~1.7.1-1+deb12u1
node-shell-quote
Debian:13
before 1.7.4+~1.7.1-1+deb13u1, plus listed versions
1.7.4+~1.7.1-1
1.7.4+~1.7.1-1+deb13u1
node-shell-quote
Debian:14
before 1.8.4+~1.7.5-1, plus listed versions
1.7.4+~1.7.1-11.7.4+~1.7.1-21.8.3+~1.7.5-1
1.8.4+~1.7.5-1
shell-quote
npm
1.1.0 up to 1.8.4
1.8.4
Show 11 moreShow less
Affected packages
PackageAffectedFixed
shell-quote
Root:npm
before 1.6.3-aikido.3
1.6.3-aikido.31.8.1-aikido.11.7.2-aikido.21.8.0-aikido.21.7.3-aikido.11.8.3-aikido.21.8.3-aikido.31.7.3-aikido.21.8.2-aikido.11.8.0-aikido.11.8.2-aikido.21.7.2-aikido.1
@rootio/shell-quote
Root:npm
before 1.6.3-root.io.3
1.6.3-root.io.31.8.1-root.io.11.7.2-root.io.21.8.0-root.io.21.7.3-root.io.11.8.3-root.io.21.8.3-root.io.31.7.3-root.io.21.8.2-root.io.11.8.0-root.io.11.8.2-root.io.21.7.2-root.io.1
node-shell-quote
Ubuntu:Pro:18.04:LTS
before 1.6.1+20160617-git72fb5a8ce29b-1ubuntu0.1~esm1, plus listed versions
1.6.1+20160617-git72fb5a8ce29b-1
1.6.1+20160617-git72fb5a8ce29b-1ubuntu0.1~esm1
node-shell-quote
Ubuntu:Pro:22.04:LTS
before 1.7.3+~1.7.1-1ubuntu0.1~esm1, plus listed versions
1.7.3+~1.7.1-1
1.7.3+~1.7.1-1ubuntu0.1~esm1
node-shell-quote
Ubuntu:24.04:LTS
before 1.7.4+~1.7.1-1ubuntu0.24.04.1, plus listed versions
1.7.4+~1.7.1-1
1.7.4+~1.7.1-1ubuntu0.24.04.1
node-shell-quote
Ubuntu:25.10
before 1.7.4+~1.7.1-1ubuntu0.25.10.1, plus listed versions
1.7.4+~1.7.1-1
1.7.4+~1.7.1-1ubuntu0.25.10.1
node-shell-quote
Ubuntu:26.10
All versions, plus listed versions
1.8.3+~1.7.5-11.9.0+~1.7.5-11.10.0-1
None known
node-shell-quote
Ubuntu:Pro:26.04:LTS
before 1.8.3+~1.7.5-1ubuntu0.1~esm1, plus listed versions
1.7.4+~1.7.1-11.8.3+~1.7.5-1
1.8.3+~1.7.5-1ubuntu0.1~esm1
python-pytest-html
openSUSE:Tumbleweed
before 4.2.0-2.1
4.2.0-2.1
agama-web-ui
openSUSE:Tumbleweed
From an advisory covering 2 CVEs
before 21+360.16caae772-44.1
21+360.16caae772-44.1
agama-web-ui
openSUSE:Leap 16.0
From an advisory covering 4 CVEs
before 17+612.d8bf69336-160000.11.1
17+612.d8bf69336-160000.11.1

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
PoC in GitHubDylanZahedi/CVE-2026-92772026-06-15

History

History
RecordedChangedSources
affected, facts
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-9277 is a critical vulnerability (CVSS 9.2) in Shell-quote, published May 22, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 0.79%, the 56th percentile. Fixed in shell-quote 1.8.4.

References

Show 51 moreShow less
MoveEnter Open