You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Open for the remaining bundled npm selector parser.#741, merged as d1884157, replaced Markdownlint with rumdl. Its verified lockfile and installed graph remove smol-toml@1.7.2 and katex@0.16.47, along with their former linter consumers. The repository no longer needs the paired Markdownlint/TOML-parser update described in the historical investigation.
node_modules/npm/node_modules/postcss-selector-parser@7.1.4 remains through semantic-release → @semantic-release/npm → npm → @npmcli/arborist → @npmcli/query. Continue the supported parent/bundled-package remediation for this exact instance. PR #741 does not resolve it.
The fresh installed-graph audit reports 21 affected development package entries (including propagated parent findings) and zero production findings. Additional development audit work remains in #740.
Observed after release 2.0.5
Three Dependabot security-update attempts on main bb369e4d8e58895b4c27fbd90a600895201bb533 ended with security_update_not_possible. The application tests, integrations, CodeQL and release passed; these separate update jobs did not change the dependency graph.
Dependency
Latest version the updater could resolve
Lowest nonvulnerable version reported by the updater
The completed updater logs show markdownlint-cli@0.49.1 reaching katex@^0.16.0 through micromark-extension-math@3.1.0, and requiring smol-toml@~1.7.0. The updater rejected candidate paths that downgraded markdownlint-cli. The postcss-selector-parser attempt still resolved the older version. These are the updater's recorded results; exploitability in this repository has not been assessed.
Required outcome
Trace the currently installed parent constraints and select supported dependency updates that produce a lockfile without the reported vulnerable resolutions. Verify the actual resolved versions and run the existing lint/type/test/build and package integration gates. A successful updater invocation alone does not establish that the affected versions have left the graph.
Exact issue/PR searches found no existing matching follow-up. At creation, dependency PRs #736–#738 addressed other packages; they have since merged. This work is separate from the completed review-fix merges #732–#735; their release changed only project-version fields in the manifests and generated release artifacts.
Rechecked on 2026-10-11: three updates remain blocked; a bare TOML override regresses configuration
Current main is e6b72c68992394022b1ceb11b93b8b95d6f24738 (release 2.0.6). Its resolved dependency graph matches tested commit 05ac0f262500678fb729b045967d9b44f8acc015, except for project-version fields. PRs #736–#738 are merged and do not remove these three affected versions.
Confirmed versions and blockers
Package
Installed / advisory severity
Required upstream change
postcss-selector-parser
7.1.4; Moderate
A supported npm release must actually bundle parser >=7.1.6. A parent update resolved @semantic-release/npm@13.2.0 and npm@11.21.0, but both the resulting lock and npm's actual registry tarball still contained parser7.1.4.
katex
0.16.47; Low
Published math/markdownlint parents must admit KaTeX >=0.18.2. Latest markdownlint0.41.1 pins math extension3.1.0, whose published range remains ^0.16.0.
smol-toml
1.7.2; Moderate
The linter must first preserve nested options from null-prototype TOML tables, then accept parser >=1.9.0. Latest published CLI0.49.1 requires ~1.7.0; overriding it to1.9.1 reproduced the regression below.
The CLI forwards its configuration parsers into markdownlint. Core markdownlint scans the document for multiline markdownlint-configure-file comments and sends their bodies through those same parsers. The repository's JSONC project configuration does not prevent that route.
A native Node24.19.0 probe using the actual CLI0.49.1/core0.41.1 and exact repository config observed one TOML parse for a directive containing100 harmless keys. Ordinary math Markdown and a JSON directive produced zero TOML calls. This establishes development/CI exposure when linting supplied Markdown, without running a large resource-exhaustion payload.
The initial ordinary-math probe did not exercise inline directives. The later independent probe corrected the overly broad inference from that first result.
smol-toml1.9.1: lint fails with MD013 ... Expected: 80; Actual: 149.
Equivalent JSON configuration with limit500 passes under both versions.
TOML and JSON limit80 controls both fail as expected.
Two independent consumer checks reproduced this. Parser1.9.1 returns null-prototype tables; markdownlint0.41.1's value instanceof Object check fails for the nested MD013 table and discards line_length. The fixed1.9.0 tarball also creates null-prototype tables.
Upstream CLI commit5cd5c9f widens smol-toml to1.9 without a consumer correction. Its green checks do not establish preservation of this behavior. A safe update needs the consumer correction together with the fixed parser. The local override was rejected and restored; no candidate PR or implementation change was published.
Other runtime boundaries
All three affected nodes are development-only dependencies.
Selector parsing belongs to semantic-release → @semantic-release/npm → npm → @npmcli/query. Inspected release paths invoke fixed npm version/pack/publish commands; no route from generator input into an npm query selector was established.
Markdownlint imports the math package but uses syntax/tokenization. The math fixture and inline-configuration probes made zero KaTeX renderer calls; explicit HTML-rendering controls activated the renderer. The KaTeX advisory requires additional prototype-pollution/options preconditions and affected rendering. No such generator path was established.
These are scoped runtime observations, not a claim that arbitrary local npm selectors, TOML input, or KaTeX applications are safe.
The rejected candidate did not proceed to a full application-suite/CI run because its direct consumer regression already made it unsuitable.
Keep #739open. Prioritize the paired TOML consumer/parser fix. Recheck the other parent releases when available. Any eventual update must remove the actual affected nested resolutions and pass the repository's lint/type/test/build/package integration gates before closure. Existing weekly npm Dependabot configuration has no ignore rule for these packages.
changed the title [-]Resolve three blocked Dependabot security updates[/-][+]Resolve remaining bundled npm selector-parser security update[/+]on Oct 11, 2026
I checked the current supported release-tool paths rather than assuming a parent bump would refresh npm's bundle.
@semantic-release/npm@13.2.0 still locks npm@11.19.1 with postcss-selector-parser@7.1.4.
npm 11.20.0 still bundles postcss-selector-parser@7.1.4.
npm 11.21.0's published dependency change is unrelated to this subtree.
npm 12.2.0 also still bundles postcss-selector-parser@7.1.4.
The same npm 12.2.0 lock also retains the affected bundled brace-expansion@5.0.9, http-cache-semantics@4.2.0, ip-address@10.5.0, and undici@6.28.0 versions tracked in #740.
So neither the current stable semantic-release npm plugin nor moving to npm 12 provides a remediation. Keep #739 upstream-blocked until npm's bundle (or its @npmcli/query path) actually resolves a patched selector parser; do not add an override solely to silence the alert.
Activity
Jamie-BitFlight commentedon Oct 11, 2026
Rechecked on 2026-10-11: three updates remain blocked; a bare TOML override regresses configuration
Current main is
e6b72c68992394022b1ceb11b93b8b95d6f24738(release 2.0.6). Its resolved dependency graph matches tested commit05ac0f262500678fb729b045967d9b44f8acc015, except for project-version fields. PRs #736–#738 are merged and do not remove these three affected versions.Confirmed versions and blockers
postcss-selector-parser7.1.4; Moderate>=7.1.6. A parent update resolved@semantic-release/npm@13.2.0andnpm@11.21.0, but both the resulting lock and npm's actual registry tarball still contained parser7.1.4.katex0.16.47; Low>=0.18.2. Latest markdownlint0.41.1 pins math extension3.1.0, whose published range remains^0.16.0.smol-toml1.7.2; Moderate>=1.9.0. Latest published CLI0.49.1 requires~1.7.0; overriding it to1.9.1 reproduced the regression below.Primary advisories: selector parser, KaTeX, smol-toml.
TOML is reachable from Markdown content
The CLI forwards its configuration parsers into markdownlint. Core markdownlint scans the document for multiline
markdownlint-configure-filecomments and sends their bodies through those same parsers. The repository's JSONC project configuration does not prevent that route.A native Node24.19.0 probe using the actual CLI0.49.1/core0.41.1 and exact repository config observed one TOML parse for a directive containing100 harmless keys. Ordinary math Markdown and a JSON directive produced zero TOML calls. This establishes development/CI exposure when linting supplied Markdown, without running a large resource-exhaustion payload.
The initial ordinary-math probe did not exercise inline directives. The later independent probe corrected the overly broad inference from that first result.
Sources: CLI forwarding, core inline configuration processing.
Tested override: not mergeable
A scoped npm override successfully installed smol-toml1.9.1, but this valid directive changed behavior:
Follow it with a149-character prose line:
MD013 ... Expected: 80; Actual: 149.Two independent consumer checks reproduced this. Parser1.9.1 returns null-prototype tables; markdownlint0.41.1's
value instanceof Objectcheck fails for the nestedMD013table and discardsline_length. The fixed1.9.0 tarball also creates null-prototype tables.Upstream CLI commit5cd5c9f widens smol-toml to1.9 without a consumer correction. Its green checks do not establish preservation of this behavior. A safe update needs the consumer correction together with the fixed parser. The local override was rejected and restored; no candidate PR or implementation change was published.
Other runtime boundaries
All three affected nodes are development-only dependencies.
semantic-release → @semantic-release/npm → npm → @npmcli/query. Inspected release paths invoke fixed npm version/pack/publish commands; no route from generator input into an npm query selector was established.These are scoped runtime observations, not a claim that arbitrary local npm selectors, TOML input, or KaTeX applications are safe.
Verification and disposition
Keep #739 open. Prioritize the paired TOML consumer/parser fix. Recheck the other parent releases when available. Any eventual update must remove the actual affected nested resolutions and pass the repository's lint/type/test/build/package integration gates before closure. Existing weekly npm Dependabot configuration has no ignore rule for these packages.
chore(lint): replace markdownlint-cli with rumdl (#741)
[-]Resolve three blocked Dependabot security updates[/-][+]Resolve remaining bundled npm selector-parser security update[/+]Jamie-BitFlight commentedon Oct 12, 2026
Follow-up after #742 / 2.0.7:
I checked the current supported release-tool paths rather than assuming a parent bump would refresh npm's bundle.
@semantic-release/npm@13.2.0still locksnpm@11.19.1withpostcss-selector-parser@7.1.4.postcss-selector-parser@7.1.4.postcss-selector-parser@7.1.4.The same npm 12.2.0 lock also retains the affected bundled
brace-expansion@5.0.9,http-cache-semantics@4.2.0,ip-address@10.5.0, andundici@6.28.0versions tracked in #740.So neither the current stable semantic-release npm plugin nor moving to npm 12 provides a remediation. Keep #739 upstream-blocked until npm's bundle (or its @npmcli/query path) actually resolves a patched selector parser; do not add an override solely to silence the alert.