fix: upgrade shell-quote to 1.8.4 (CVE-2026-9277) - #225
Conversation
Automated dependency upgrade by OrbisAI Security
0869830 to
8406435
Compare
Code review —
|
| Advisory | Severity | Vulnerable | Patched |
|---|---|---|---|
| GHSA-w7jw-789q-3m8p / CVE-2026-9277 | CRITICAL | >= 1.1.0, <= 1.8.3 |
1.8.4 |
| GHSA-395f-4hp3-45gv / CVE-2026-13311 | HIGH | <= 1.8.4 |
1.9.0 |
Pinning to the advertised 1.8.4 would have left the second one open. Please correct the title and body — a security PR whose stated target does not match its diff is the kind of thing that gets waved through on the description alone.
The overrides block is doing real work
Worth stating explicitly, because it looks like belt-and-braces and is not: concurrently (a devDependency) pins shell-quote at exactly 1.8.3, so bumping the lockfile entry alone would be reverted by the next resolution. With the override there is exactly one copy in the tree:
node_modules/shell-quote @ 1.9.0
Verified concurrently -> 1.8.3 and launch-editor -> ^1.8.3 both resolve through it.
Supply-chain verification
Since this is a lockfile change from outside the org, I checked the artifacts rather than the description:
shell-quote@1.9.0exists on the registry and theintegrityhash in the lockfile matches the registry's byte for byteresolvedpoints atregistry.npmjs.org, not a substituted hostnpm ci --dry-runresolves cleanly;npm install --package-lock-onlyproduces no further diff, so the lockfile is internally consistent despite npm not recording theoverridesblock inpackages[""]- the
@docusaurus/theme-mermaidline going^3.9.2→3.9.2is a correction:package.jsonalready pinned it exactly and the lockfile had drifted
Blocking on the other PR: #226 will clobber this
#226 adds its own overrides block at the same position in the same file:
"overrides": { "websocket-driver": "0.7.5" }Whichever lands second must merge the two keys, not replace the block. A naive conflict resolution that takes one side wholesale silently un-pins the other package and reopens a CRITICAL advisory, with a green build and no diff to notice it in. I am landing this one first and will resolve #226's rebase so both pins survive.
Out of scope, noted
docs-site still carries 58 advisories after this change. websocket-driver is #226; the rest are the webpack-dev-server tree and are dev-only.
🤖 Posted on behalf of @joestump by claude-opus-5 using Claude Code.
Summary
Upgrade shell-quote from 1.8.3 to 1.8.4 to fix CVE-2026-9277.
Vulnerability
CVE-2026-9277docs-site/package-lock.json(dependency:shell-quote)Description: shell-quote: shell-quote: Arbitrary code execution via command injection due to unescaped line terminators
Evidence
Scanner confirmation: trivy rule
CVE-2026-9277flagged this pattern.Changes
docs-site/package.jsondocs-site/package-lock.jsonBehavior Preservation
The change is scoped to 2 files on the vulnerable path; it only tightens handling of untrusted input and leaves valid inputs unaffected.
This change addresses a pattern flagged by static analysis. The code path handles user-influenced input and the fix reduces the attack surface against both manual and automated exploitation.
Automated security fix by OrbisAI Security