Skip to content

[Issue]: Fix OpenSSF Scorecard Pinned-Dependencies warnings for npm commands #291

@WilliamBerryiii

Description

@WilliamBerryiii

Issue Description

OpenSSF Scorecard reports a Pinned-Dependencies warning with score normalized to 8/10, indicating 4 npm commands in GitHub workflows are not properly pinned by hash.

Current State

File Line Command Status
extension-package.yml 57 npm install -g @vscode/vsce@3.7.1 ⚠️ Version pinned only
extension-publish-prerelease.yml 71 npm install -g @vscode/vsce ❌ Completely unpinned
extension-publish-prerelease.yml 129 npm install -g @vscode/vsce ❌ Completely unpinned
extension-publish.yml 114 npm install -g @vscode/vsce@3.7.1 ⚠️ Version pinned only

The 5 workflows using npm ci are properly pinned via package-lock.json integrity hashes.

Security Risk

  • Version pinning ≠ hash pinning: A version like @3.7.1 doesn't guarantee identical bytes
  • Unpinned packages can install any version including compromised releases
  • Supply chain attacks target build-time dependencies

Recommended Approach

Convert global installs to local package.json with npm ci:

  1. Add @vscode/vsce to extension/package.json as a dev dependency
  2. Commit package-lock.json with integrity hashes
  3. Replace global installs with npm ci + npx vsce

This leverages npm's built-in integrity verification and aligns with existing workflow patterns.

Additional Context

Metadata

Metadata

Labels

needs-triageRequires triage and prioritizationsecuritySecurity-related changes or concernsworkflowsGitHub Actions workflows

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions