Skip to content

chore(CI): prevent tag-name command injection in release workflow#15

Merged
yosriady merged 3 commits into
mainfrom
sec/deepsec
May 17, 2026
Merged

chore(CI): prevent tag-name command injection in release workflow#15
yosriady merged 3 commits into
mainfrom
sec/deepsec

Conversation

@yosriady
Copy link
Copy Markdown
Collaborator

@yosriady yosriady commented May 17, 2026


View in Codesmith
Need help on this PR? Tag @codesmith with what you need.

  • Let Codesmith autofix CI failures and bot reviews

yosriady and others added 2 commits May 17, 2026 07:23
The publish job runs with id-token:write (npm OIDC trusted publishing)
and contents:write, and interpolated the attacker-influenceable tag
name (github.ref_name and tag-derived step outputs) directly into run:
scripts. Git ref names permit shell metacharacters, so a tag like
v1.0.0$(...) could execute arbitrary commands with publish privileges.

- Move all tag-derived values to env: blocks, referenced as quoted
  shell variables instead of ${{ }} interpolation in run: bodies
- Add strict semver tag validation that fails the workflow before any
  untrusted value is used
- Pin actions/checkout and actions/setup-node to commit SHAs and npm
  to an exact version (immutable, retains OIDC trusted publishing)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Revert the npm version pin from a50d49a back to npm@latest. The
command-injection fix and action SHA-pins are retained; npm itself is
a first-party tool and npm@latest auto-receives npm's own security
patches, which was the preferred tradeoff here.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@gemini-code-assist
Copy link
Copy Markdown

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

Adds the .deepsec/ workspace (config + project context) so teammates
inherit the threat model and scan setup. node_modules/, .env.local,
and generated scan output (files/, runs/, reports/, project.json)
remain gitignored.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@socket-security
Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addeddeepsec@​2.0.8811001009680

View full report

@yosriady yosriady merged commit bbe6887 into main May 17, 2026
8 checks passed
@yosriady yosriady deleted the sec/deepsec branch May 17, 2026 01:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant