Skip to content

[dependabot-agent] Fix smol-toml denial-of-service advisory (GHSA-7w5x-hrqm-74c2) via npm override #8380

Description

Caution

Protected files were modified in this change.
This pull request is in request-review mode and requires explicit human scrutiny before merge.

Protected files: package-lock.json, package.json

Dependency Release Train Summary

What changed

  • Package/ecosystem: npm (root workspace)
  • Manifest(s): package.json, package-lock.json
  • Old version: smol-toml@1.7.0 (transitive, via markdownlint-cli2@0.23.2)
  • New version: smol-toml@1.8.0 (via added overrides.smol-toml)
  • Update type: security (transitive override)

Why now

  • GHSA-7w5x-hrqm-74c2: smol-toml denial-of-service via malformed TOML documents, affecting versions <=1.7.0. npm audit reports this as a high-severity finding against markdownlint-cli2 (root devDependency), whose only current release (0.23.2) still pins the vulnerable smol-toml@1.7.0 with no newer release available upstream.

Risk assessment

  • Runtime/dev/build/CI scope: dev-only (markdownlint-cli2 / lint:md script); not part of the runtime firewall/agent/proxy code paths.
  • Direct/transitive: transitive (forced via npm overrides).
  • Reachability: only reachable through the lint:md npm script (TOML config parsing for markdownlint-cli2); no application/runtime code imports smol-toml.

Validation

  • Commands run:
    • npm audit --registry=https://registry.npmjs.org/ --json (before): 2 high findings (markdownlint-cli2 via smol-toml).
    • npm install --registry=https://registry.npmjs.org/ --package-lock-only --ignore-scripts to regenerate the lockfile against the public registry (the repo's default private mirror is unreachable from this sandbox).
    • npm audit --registry=https://registry.npmjs.org/ --json (after): 0 vulnerabilities.
    • npm ci --registry=https://registry.npmjs.org/ --ignore-scripts --dry-run: clean resolution, 652 packages.
    • Verified package.json and package-lock.json are valid JSON.
  • Result: audit findings for smol-toml/markdownlint-cli2 fully resolved; lockfile diff is scoped to exactly the smol-toml entry (version/resolved/integrity) plus the 1-line overrides addition.
  • Remaining gaps: a full npm ci (with lifecycle scripts, against the org's default private registry mirror) could not be exercised in this sandbox (private registry mirror unreachable; full non---ignore-scripts install triggers an unrelated npm CLI crash in this sandbox environment unrelated to this change). CI should confirm a full install/build/test succeeds.

Control Plane

Sensitive surface area: none (dev-only lint tooling dependency, not a runtime/auth/crypto/network path).

Breaking-change notes: none; smol-toml 1.8.0 is a patch-level fix release from 1.7.0.

Risk: low
Confidence: high
Rollback steps: revert this commit (or remove the overrides.smol-toml entry and regenerate package-lock.json) to return to the prior resolved versions.

Smart-Dependabot-Merge-Candidate: yes

Reviewer checklist

  • CI passes
  • CODEOWNERS or service owners reviewed
  • Security-sensitive areas approved, if applicable
  • Deployment/canary owner confirms runtime health, if needed

Rollback guidance

  • Revert this PR to restore the previous smol-toml@1.7.0 resolution.
  • package.json and package-lock.json must be reverted together (the override and the lockfile entry are paired).

Note

This was originally intended as a pull request, but the git push operation failed.

Original error: The process '/usr/bin/git' failed with exit code 128

Workflow Run: View run details and download bundle artifact

The bundle file is available in the agent artifact in the workflow run linked above.

Create the pull request manually
# Download the artifact from the workflow run
gh run download '34450720270' -n agent -D '/tmp/agent-34450720270'

# Resolve the bundle source ref, fetch it into a temporary ref, then create the local branch
bundle_path='/tmp/agent-34450720270/aw-github-gh-aw-firewall-dependabot-agent-smol-toml-security-fix-20260910074024.bundle'
temp_ref='refs/bundles/create-pr-dependabot-agent-smol-toml-security-fix-20260910074024-7a929021'
target_ref='refs/heads/dependabot-agent/smol-toml-security-fix-20260910074024'
bundle_source_ref=$(git bundle list-heads "$bundle_path" | awk '$2 ~ /^refs\/heads\// { print $2 }')
if [ -z "$bundle_source_ref" ]; then
  bundle_source_ref=$(git bundle list-heads "$bundle_path" | awk '$2 == "HEAD" { print $2 }')
fi
if [ "$(printf '%s\n' "$bundle_source_ref" | sed '/^$/d' | wc -l | tr -d ' ')" != "1" ]; then
  echo "Expected exactly one bundle source ref, found: $bundle_source_ref" >&2
  exit 1
fi
git fetch "$bundle_path" "${bundle_source_ref}:${temp_ref}"
git update-ref "$target_ref" "$temp_ref"
git checkout 'dependabot-agent/smol-toml-security-fix-20260910074024'
# Ensure the working tree matches the updated branch
git reset --hard
# Remove the temporary bundle ref
git update-ref -d "$temp_ref"

# Push the branch to the target remote
git push 'origin' 'dependabot-agent/smol-toml-security-fix-20260910074024'

# Create the pull request
gh pr create --title '[dependabot-agent] Fix smol-toml denial-of-service advisory (GHSA-7w5x-hrqm-74c2) via npm override' --base 'main' --head 'dependabot-agent/smol-toml-security-fix-20260910074024' --repo 'github/gh-aw-firewall'

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • msfeed25.pkgs.visualstudio.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "msfeed25.pkgs.visualstudio.com"

See Network Configuration for more information.

Generated by :dependabot: Dependabot / Release Trains · copilot · auto · 93.3 AIC · ⌖ 18.6 AIC · ⊞ 18.6K ·

Add this agentic workflow to your repo

To install this agentic workflow, run

gh aw add githubnext/gh-aw-cao/.github/workflows/dependabot-release-train-updater.md@main

Activity

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions