Skip to content

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

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: smol-toml (npm, transitive dev dependency)
  • Manifest(s): package.json / package-lock.json (root), docs-site/package.json / docs-site/package-lock.json
  • Old version: 1.7.0
  • New version: 1.8.0
  • Update type: security

Why now

GHSA-7w5x-hrqm-74c2 (CVE-2026-85730, high severity, GitHub-reviewed): parse() in smol-toml <=1.7.0 can be forced into an infinite loop by a malformed TOML document (an array/inline-table value followed by a comment with no trailing newline), causing a denial of service. Fixed upstream in 1.7.1; this PR pins the latest 1.8.0.

Risk assessment

  • Runtime/dev/build/CI scope: dev-only in both manifests (root: via markdownlint-cli2; docs-site: via astro / @astrojs/internal-helpers)
  • Direct/transitive: transitive (no direct smol-toml dependency in either manifest); pinned via npm overrides
  • Reachability: only used by dev tooling (markdown linting, Astro docs build), not by the runtime firewall CLI or containers; parses trusted repo-local files, not attacker-controlled input in production, so exploitability is low, but the fix is a trivial patch bump with no known breaking changes

Validation

  • Commands run: npm install --registry=https://registry.npmjs.org/ --package-lock-only --ignore-scripts (root and docs-site, isolated from the internal ms-feed mirror), npm audit (both)
  • Result: root goes from findings on smol-toml/markdownlint-cli2 to 0 vulnerabilities; docs-site's smol-toml finding is resolved (7 pre-existing unrelated moderate ajv/dompurify findings remain, intentionally out of scope)
  • Remaining gaps: full npm install (with lifecycle scripts) is not runnable in this sandbox due to a persistent, unrelated npm "Exit handler never called!" issue; validated via --package-lock-only instead. Lockfiles were hand-patched (rather than regenerated) to avoid unrelated libc metadata churn from a newer local npm version.

Control Plane

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, or pin smol-toml back to 1.7.0 in the four changed files together (both overrides entries and both lockfile entries must be reverted as a set).

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 '34437411321' -n agent -D '/tmp/agent-34437411321'

# Resolve the bundle source ref, fetch it into a temporary ref, then create the local branch
bundle_path='/tmp/agent-34437411321/aw-github-gh-aw-firewall-dependabot-agent-smol-toml-security-fix-20260910b.bundle'
temp_ref='refs/bundles/create-pr-dependabot-agent-smol-toml-security-fix-20260910b-707dd81f'
target_ref='refs/heads/dependabot-agent/smol-toml-security-fix-20260910b'
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-20260910b'
# 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-20260910b'

# 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-20260910b' --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 · 131.5 AIC · ⌖ 14.2 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