Skip to content

Clear all open Dependabot alerts - #3

Merged
jochen-testingbot merged 1 commit into
mainfrom
chore/dependabot-fixes
Sep 16, 2026
Merged

jochen-testingbot merged 1 commit into
mainfrom
chore/dependabot-fixes

Conversation

@jochen-testingbot

Copy link
Copy Markdown
Contributor

Clears the 8 open alerts on https://github.com/testingbot/automation-mcp/security/dependabot. npm audit goes from 20 vulnerabilities (14 moderate, 6 high) to 0.

What was flagged and what fixes it

Alert Package Scope Fix
GHSA-4mjr-xmp4-gh2g, GHSA-x5fp-wj9c-mxmx qs runtime override ^6.16.0
GHSA-jxfw-x594-9x9m morgan runtime override ^1.12.1
GHSA-7pqw-9j4j-h8q3, GHSA-jmr9-qjv8-65gv extract-zip runtime override @puppeteer/browsers ^3.2.2
GHSA-82fw-gwwq-j7x9 vitest, @vitest/mocker dev bump to ^4.1.11

All four are transitive except vitest; none are reachable by bumping a direct dependency, hence the overrides.

  • qs — DoS via attacker-controlled isBuffer plus an array-limit bypass. Reached at runtime through @modelcontextprotocol/sdk → express → body-parser.
  • morgan — log forging via unescaped Unicode line separators. Reached through appium-mcp → appium-webdriveragent → @appium/base-driver.
  • extract-zip — symlink path traversal / arbitrary file write, the source of all 6 high alerts, and it has no patched release. @puppeteer/browsers 3.x drops it in favour of modern-tar, so overriding the parent is the only available fix. The consumer is webdriver → @wdio/utils → @puppeteer/browsers; v3 still exports every symbol @wdio/utils imports (install, canDownload, resolveBuildId, detectBrowserPlatform, computeExecutablePath, Browser, ChromeReleaseChannel). Verified by importing webdriver and @wdio/utils against the overridden tree — startWebDriver resolves and the eager @puppeteer/browsers import inside @wdio/utils/node loads cleanly.
  • vitest — path traversal / arbitrary file read via the mocker's redirect mock. Dev-only, and the 3.x line has no fix, so this is a major bump to 4.1.11. Test suite and coverage run unchanged.

Verification

  • npm run build (lint + format:check + 109 tests + tsc) passes.
  • npm run test:coverage produces the same coverage numbers under vitest 4.
  • npm ci --allow-git=all resolves the lockfile under npm 10, which is what the test workflow uses on Node 20 and 22.

One local note: adding vitest 4 with npm install under npm 10 trips a known arborist bug (Cannot read properties of null (reading 'edgesOut')) on vitest 4's optional peer graph. The lockfile here was generated with npm 11. npm ci is unaffected, so CI and the release workflow (which installs npm@latest) are fine, but contributors regenerating the lockfile on npm 10 may need npx npm@11 install.

npm audit went from 20 vulnerabilities (14 moderate, 6 high) to 0.

- qs ^6.16.0 override — patches the DoS via attacker-controlled isBuffer
  and the array-limit bypass. Reached at runtime through
  @modelcontextprotocol/sdk -> express -> body-parser.
- morgan ^1.12.1 override — patches log forging via unescaped Unicode line
  separators. Reached through appium-mcp -> appium-webdriveragent ->
  @appium/base-driver.
- @puppeteer/browsers ^3.2.2 override — drops extract-zip (symlink path
  traversal / arbitrary file write, 6 high alerts, no patched release)
  in favour of modern-tar. v3 still exports every symbol @wdio/utils
  imports (install, canDownload, resolveBuildId, detectBrowserPlatform,
  computeExecutablePath, Browser, ChromeReleaseChannel), verified by
  importing webdriver and @wdio/utils against the overridden tree.
- vitest / @vitest/coverage-v8 ^4.1.11 — patches the @vitest/mocker path
  traversal. Dev-only; the 3.x line has no fix.

npm run build passes (109 tests) and npm ci resolves the lockfile under
npm 10, which is what CI uses.
@jochen-testingbot
jochen-testingbot merged commit 353d0c8 into main Sep 16, 2026
5 checks passed
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.

1 participant