Skip to main content

Visual Studio Code Case Study

Verified baseline scan — CVE Lite CLI v1.21.0 · 2026-06-11

Visual Studio Code logo

Summary

  • Project: Visual Studio Code — open-source code editor maintained by Microsoft
  • Revision: b867fed (main branch, 2026-06-11)
  • Scan scope: root package-lock.json only — not nested lockfiles under build/, extensions/, or other subfolders
  • Lockfile: package-lock.json (1,374 resolved packages, lockfile v3)
  • Baseline findings: 6 unique vulnerable packages (1 critical · 1 high · 4 medium · 0 low)
  • Direct vs transitive: 1 direct / 5 transitive
  • Dev vs runtime: 3 of 5 transitive findings are build-time only (· dev)
  • Fix command groups generated: 4
  • First-pass coverage: 4 of 6 findings have confident copy-and-run commands
  • npm audit (same lockfile): 18 vulnerability entries (1 critical · 5 high · 12 moderate)
  • Remediation applied in this study: none — baseline scan and generated fix plan only

What this case study demonstrates

Visual Studio Code is one of the most widely used developer tools in the world — yet its root JavaScript toolchain lockfile resolves 1,374 packages with only 6 vulnerable package versions in this snapshot. That makes it a useful counterpoint to framework monorepos like Astro or Gatsby-scale graphs: high recognition, relatively lean OSV surface on the root lockfile.

The scan scope matters. VS Code is a multi-folder product tree with additional package.json files under build/, extensions, and test workspaces. This case study commits and scans the repository root lockfile only. Findings reflect build tooling, gulp plugins, sandbox runtime paths, and Copilot-related dependencies locked at the root — not every nested package tree in the full VS Code checkout.

The direct/transitive split and dev/runtime labelling are the headline for triage:

[email protected] — critical, transitive via @vscode/sandbox-runtime. A command-injection advisory in the VS Code sandbox runtime. The parent range already covers the fix ([email protected]) — CVE Lite generates npm update @vscode/sandbox-runtime as a within-range lockfile refresh.

[email protected] — high, transitive · dev. The only high-severity finding arrives through legacy gulp file-watcher tooling. The · dev label immediately signals this is build-pipeline risk, not the shipped editor binary. The parent range covers the fix: npm update braces.

@anthropic-ai/[email protected] — medium, direct. One locked version of the Anthropic SDK in the root graph, used by Copilot-related tooling. CVE Lite generates a direct fix: npm install @anthropic-ai/[email protected].

[email protected], [email protected] — medium, transitive · dev. Both trace through gulp build tooling. The · dev label correctly deprioritises these as build-time noise with no runtime exposure.

[email protected] — medium, transitive. Arrives through @microsoft/dev-tunnels-connections. No auto-generated fix command — no confident parent upgrade path identified.


Comparison Note: CVE Lite CLI vs npm audit

Both tools were run against the same root package-lock.json on the same machine on 2026-06-11.

Metricnpm auditCVE Lite CLI v1.21.0
Total reported findings186
Critical11
High51
Moderate / Medium124
Low00
Direct vs transitive breakdown✓ (1 / 5)
Dev vs runtime labelling✓ (3 dev, 3 runtime)
Deduplicated package view
Validated fix targetspartial
Specific copy-and-run commandspartial (npm audit fix)✓ (4 groups)
Skipped findings with reason

Why the totals differ:

npm audit counts vulnerability entries (advisory × dependency path combinations). CVE Lite counts each unique vulnerable package version once. [email protected] appears across multiple gulp-related paths in npm audit (contributing to its 5 high entries) while CVE Lite reports it once as a single high finding.

The dev/runtime distinction changes how you prioritise:

Of CVE Lite's 6 findings, 3 are labelled · devbraces, micromatch, and postcss are all build tooling that never reaches the shipped editor. npm audit reports no such distinction. A developer reading the raw audit output has no signal for which findings require urgent attention and which are build-chain maintenance.

Fix guidance differs materially:

CVE Lite generates four copy-and-run command groups covering 4 of 6 findings:

npm update @vscode/sandbox-runtime # critical: shell-quote
npm update braces # high: braces (dev)
npm install @anthropic-ai/[email protected] # medium: direct Copilot dep
npm install [email protected] # medium: micromatch path-specific

npm audit fix may propose broader changes carrying breaking-change risk across the build toolchain. CVE Lite separates confident fixes from paths that need maintainer-level decisions.


Before vs After

No remediation pass was performed for this study. VS Code's peer dependency graph prevents automated lockfile-only remediation. This table records the verified baseline only.

StageFindingsCriticalHighMediumLowDirectTransitiveCommand groups
Baseline (verified)61140154

Four command groups covering four findings is strong first-pass coverage on a professionally maintained editor repository. The two remaining findings ([email protected] and the remaining micromatch paths) require maintainer-level dependency routing.


Fix Journey

No commands were generated or run for this study.

The critical finding is runtime. [email protected] in @vscode/sandbox-runtime is the only non-dev critical or high finding. The within-range fix (npm update @vscode/sandbox-runtime) is the highest-priority action and the first command CVE Lite surfaces.

The high finding is dev-only. [email protected] through gulp is immediately deprioritised by the · dev label. It should be fixed — but it is build-pipeline maintenance, not an exposure in the shipped editor.

The direct SDK fix is actionable. @anthropic-ai/[email protected] is a declared root devDependency for Copilot-related tooling. Bumping to 0.91.1 is a concrete maintainer action with no transitive complexity.

The remaining paths need routing. [email protected] arrives through @microsoft/dev-tunnels-connections with no clear within-range fix. [email protected] traces through gulp — no auto-generated parent upgrade on this lockfile-only snapshot.


Why this matters

Teams trust VS Code as infrastructure. A verified root lockfile scan still surfaces 6 vulnerable package versions — including a critical sandbox runtime issue and a direct Anthropic SDK advisory in Copilot-related tooling.

The dev/runtime labelling is the key contribution of this scan. Without it, a developer reading raw audit output sees 18 entries across critical, high, and moderate buckets with no guidance on what to prioritise. CVE Lite's output collapses that to 6 deduplicated findings, labels 3 as build-time only, and surfaces 4 specific commands — making the difference between alert fatigue and an actionable triage list.


Scan command

Run from the VS Code repository root or from the examples/vscode directory in this repository:

cve-lite . --verbose --all

The example lockfile reflects VS Code at revision b867fed (2026-06-11). VS Code releases frequently — and OSV advisory data changes over time — so re-scanning may show a different finding count even on the same lockfile revision.


Scan verification

Every number in this case study comes from a live scan of the committed fixture at examples/vscode/ in the CVE Lite CLI repository.

FieldValue
Scan date2026-06-11
CLI versionv1.21.0
CVE Lite commandcve-lite examples/vscode --verbose --all
npm audit commandnpm audit
Advisory sourceOSV (https://api.osv.dev) — online mode
Lockfile sourceexamples/vscode/package-lock.json from microsoft/vscode@b867fed
Packages parsed (CVE Lite)1,374
Unique vulnerable packages (CVE Lite)6
Vulnerability entries (npm audit)18
Fix command groups (CVE Lite)4
Findings covered by fix commands (CVE Lite)4 of 6

Remaining risk after baseline

All 6 baseline findings remain open at the time of this study. No remediation was applied.


Baseline findings

Full vulnerable package list from the verified scan on 2026-06-11 (revision b867fed):

PackageVersionSeverityRelationshipFix hintAdvisory IDs
shell-quote1.8.3criticaltransitive1.8.4GHSA-w7jw-789q-3m8p
braces2.3.2hightransitive · dev3.0.3GHSA-grv7-fg5c-xmjg
@anthropic-ai/sdk0.82.0mediumdirect0.91.1GHSA-p7fg-763f-g4gf
micromatch3.1.10mediumtransitive · dev4.0.8GHSA-952p-6rrq-rcjv
postcss7.0.39mediumtransitive · dev8.5.10GHSA-7fh5-64p2-3v2j, GHSA-qx2v-qp2m-jg93
uuid3.4.0mediumtransitive7.0.0GHSA-w5hq-g745-h8pq

Want your project reviewed?

If you maintain an interesting JavaScript or TypeScript project and want CVE Lite CLI considered for a public case study, open an issue in the CVE Lite CLI repository.

Please include:

  • the repository link
  • why the project would make a useful case study
  • whether the dependency graph is publicly reproducible

Not every project will be selected. Preference will go to projects that are publicly useful, technically interesting, and strong examples of realistic dependency remediation workflows.