Skip to content

feat: automate VEX entry creation in nodejs/security-wg on issue close - #436

Open
marco-ippolito wants to merge 1 commit into
mainfrom
feat/vex-entry-automation
Open

marco-ippolito wants to merge 1 commit into
mainfrom
feat/vex-entry-automation

Conversation

@marco-ippolito

Copy link
Copy Markdown
Member

Supersedes #225 (thanks @sddhantjaiii, credited as co-author).
Closes #224

What

Closing an issue with exactly one of these labels opens a PR in nodejs/security-wg adding a vuln/deps/<N>.json entry with status: not_affected and the label as reason:

  • component_not_present
  • vulnerable_code_not_present
  • vulnerable_code_not_in_execute_path
  • vulnerable_code_cannot_be_controlled_by_adversary
  • inline_mitigations_already_exist

The five labels have been created on this repo. confirmed remains the "affected" signal and is documented as handled by the security release process via vuln/core. dont-believe-affects-nodejs and dont-fall-in-threat-model are documented as legacy and do not trigger anything.

How the entry is built

  • cve: every CVE id in the issue title. CVEs already in vuln/deps are skipped, so closing the v22/v24/v26/main duplicates of one CVE does not create duplicate entries. The security-wg branch is named after the first new CVE, so a second closure updates the existing PR instead of opening another.
  • description: CVE record title from the cve.org API (no key needed).
  • overview: latest comment by the person who closed the issue, falling back to a generic sentence per label.
  • ref: the issue URL.

The workflow comments on the closed issue with the security-wg PR link, or with the reason it did nothing.

Verification

  • 19 unit tests in dep_checker/test_vex_entry.py, run by the new test.yml workflow on Python 3.9.
  • End-to-end dry run against a clone of security-wg using real data from CVE-2026-78227 (ngtcp2) found on main #422: the generated 7.json passed npm run create-deps-index and the Go VEX generator's validators, producing a not_affected statement with justification and impact_statement.

Setup needed before merge

Add a SECURITY_WG_TOKEN repository secret with contents: write and pull-requests: write on nodejs/security-wg.

🤖 Generated with Claude Code

@RafaelGSS

Copy link
Copy Markdown
Member

@marco-ippolito you might need to change the Co-Authored-By to Assisted-By.

…stification label

Closing an issue with one of the five OpenVEX `not_affected` justification
labels now runs the `vex-entry` workflow, which generates a
`vuln/deps/<N>.json` entry and opens a pull request against
nodejs/security-wg. CVEs already recorded in `vuln/deps` are skipped, so the
per-release-line duplicates of the same CVE do not produce duplicate entries.

The README documents the labels, the affected path (`confirmed`), the legacy
labels, and the `SECURITY_WG_TOKEN` secret the workflow needs.

Supersedes #225.
Closes #224

Co-Authored-By: sddhantjaiii <122254271+sddhantjaiii@users.noreply.github.com>
Assisted-By: Claude Fable 5.1 <noreply@anthropic.com>
@marco-ippolito
marco-ippolito force-pushed the feat/vex-entry-automation branch from 09860a9 to e172804 Compare September 25, 2026 12:42
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.

Automate VEX file entry creation

2 participants