Skip to content

Release tooling: resolve Dependabot #21 for bundled undici 6.29.0 #460

Open

Description

@dborgards

Existing finding

GitHub reports Dependabot alert #21: GHSA-xjj6-f33q-929c, denial of service through an unhandled error on excessive content encodings. The alert is open, severity high, created 2026-10-24. Its affected range is >=6.23.0 <6.29.1; the first patched version is 6.29.1.

package-lock.json on main aa41820aa91659e6789633117f87597b3c6e7649 contains node_modules/npm/node_modules/undici at 6.29.0. This is a transitive development dependency of the release tooling. The finding was surfaced by the push for #459, whose diff changes no dependency manifest or lockfile; it predates that PR. No existing issue mentioning undici or this advisory was found.

Expected result

  • Update the release tooling dependency chain/lockfile to eliminate the vulnerable bundled copy without an unrelated major migration.
  • Verify the actual nested installed version after npm ci, dependency audit and existing release-configuration checks.
  • Use the repository's release dry-run validation where applicable; do not perform a real NuGet release as part of this fix.

Recorded separately under CLAUDE.md's scope rule while #459 is in progress.

Activity

  1. dborgards commented on Oct 26, 2026

    @dborgards
    OwnerAuthor

    Investigation on 2026-10-26 after #459 merged (d74230b9). No repository files or dependency pins were changed.

    The vulnerable installed file remains node_modules/npm/node_modules/undici/package.json at 6.29.0. I reproduced the following in separate temporary projects with scripts disabled:

    • npm 11.21.1 + scoped root overrides: { "npm": { "undici": "6.29.1" } }, followed by fresh npm ci --ignore-scripts: actual nested version 6.29.0.
    • npm audit fix --ignore-scripts: reports a repair as available but leaves the actual nested version 6.29.0.
    • An experimental lock entry with 6.29.1, registry URL/integrity and inBundle removed: fresh npm ci still installs 6.29.0, while the lock can misleadingly continue to say 6.29.1.
    • npm 12.2.1 (current latest, outside the release plugin's declared ^11.6.2 range): its actual bundled undici is also 6.29.0; no benefit from that major override.
    • Official npm 11.21.1 publish revision 8834421d14085fdf6e871e6f3a20f6ae1b3de599, installed as a Git dependency: CLI version 11.21.1, bundled undici still 6.29.0. A bare source tarball also leaves old dependencies and lacks workspace packages needed by the CLI.
    • Oldest currently allowed npm 11.6.2: audit introduces 14 findings, including 10 high and 1 critical, so downgrading is not an acceptable security repair.

    The root application's other undici copies are already patched (6.29.1 and 7.30.1). npm's documentation explicitly notes that published bundles can dictate their own resolutions. The advisory requires a genuinely patched copy, not a cosmetic lockfile edit.

    Leaving this open pending a patched upstream npm bundle or an explicit packaging-policy decision (for example maintaining/repacking a patched bundle). Replacing the unused npm release plugin with an unrelated alias or adding an ad-hoc privileged install-time patch would change the tooling contract and has not been done. No PR or release was created for this investigation.

  2. dborgards commented on Oct 27, 2026

    @dborgards
    OwnerAuthor

    Fresh recheck on 2026-10-27 after #487 merged (d80bf712), without repository dependency changes or a release:

    • The latest npm within the plugin's ^11.6.2 range is still 11.21.1. Fresh isolated npm ci --ignore-scripts from the actual main manifests installs node_modules/npm/node_modules/undici/package.json at 6.29.0.
    • Current latest npm 12.2.1, installed and then freshly reinstalled with npm ci in a second isolated project, also contains bundled undici 6.29.0. It is outside the allowed major range and still provides no repair.
    • Current @semantic-release/npm 13.2.0 still declares npm ^11.6.2; its version alone does not supply a patched npm bundle.
    • The main-manifest audit reports 1 high and 1 moderate finding, both inside the npm bundle. Besides the known undici advisories, bundled ip-address is affected by GHSA-rxp7-6hxx-x8q5. Both bundled copies must be genuinely repaired; this audit is not clean.

    The existing upstream-bundle/packaging prerequisite therefore remains. No ineffective overrides, cosmetic lock edit, privileged install patch, major tooling migration or real NuGet publication was introduced. Recommendation remains an actually patched upstream bundle; a maintained repack/replacement policy needs an explicit contract and maintenance decision. Evidence, install logs and full audit JSON are retained under /private/tmp/cankit-460-recheck-20261027-n0w_5fu3/ in this workspace.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions