Skip to content

fix(deps): bump qs to ^6.15.2 (CVE-2026-8723)#107

Merged
mschile merged 2 commits into
masterfrom
mschile/qs-6.15.2
May 28, 2026
Merged

fix(deps): bump qs to ^6.15.2 (CVE-2026-8723)#107
mschile merged 2 commits into
masterfrom
mschile/qs-6.15.2

Conversation

@mschile

@mschile mschile commented May 27, 2026

Copy link
Copy Markdown

Summary

Bumps the qs dependency range from ~6.14.1 to ^6.15.2 so it resolves to the patched 6.15.2 release.

The tilde range previously capped resolution at 6.14.x, which does not include the fix for GHSA-q8mj-m7cp-5q26 / CVE-2026-8723 (qs.stringify throws a TypeError when called with arrayFormat: "comma" and encodeValuesOnly: true on arrays containing null/undefined, enabling a remotely triggerable DoS).

After this change yarn.lock resolves qs@^6.15.2 to 6.15.2.

Closes #106

Additional fix: form-data boundary regex in tests

While verifying CI, the test-form.js and test-form-data.js boundary assertions were failing:

/multipart\/form-data; boundary=--------------------------\d+/.test(...)

[email protected] generates boundaries from crypto.randomBytes, producing hex strings (e.g. --------------------------10a3756468ba6207f9c8a83e). The \d+ class only matches digits, so the assertion failed any time the random hex contained a–f (effectively almost always). The class is widened to [0-9a-f]+.

This is unrelated to the qs bump — the breakage was pre-existing and surfaces here only because CI happened to re-run. Bundling the one-line fix to keep CI green for the qs change.

References


Note

Low Risk
Dependency-only security patch with small test regex updates; no application logic changes in the request library itself.

Overview
Bumps qs from ~6.14.1 to ^6.15.2 so installs resolve to 6.15.2, addressing CVE-2026-8723 (DoS via qs.stringify with certain arrayFormat / encodeValuesOnly options). The tilde range previously blocked picking up the patched release.

yarn.lock is updated accordingly. Multipart tests in test-form-data.js and test-form.js now expect hex multipart boundaries ([0-9a-f]+ instead of \d+), matching behavior from the upgraded dependency chain.

Reviewed by Cursor Bugbot for commit a7ed1bc. Bugbot is set up for automated code reviews on this repo. Configure here.

Bumps the qs range from ~6.14.1 to ^6.15.2 so resolution includes the
fix for GHSA-q8mj-m7cp-5q26 (qs.stringify TypeError DoS with
arrayFormat: "comma" + encodeValuesOnly: true on arrays containing
null/undefined). The tilde range previously capped resolution at 6.14.x,
which does not include the patched 6.15.2.

Closes #106
@mschile mschile self-assigned this May 27, 2026
@mschile mschile requested review from AtofStryker and cacieprins May 27, 2026 19:18
[email protected] generates multipart boundaries from `crypto.randomBytes`,
which produces hex strings (0-9, a-f). The boundary assertions in
test-form.js and test-form-data.js required digits only (`\d+`), so they
failed almost any time the random hex contained a letter. Widen the
class to `[0-9a-f]+`.
@mschile mschile merged commit c1d4c52 into master May 28, 2026
4 checks passed
@cypress-app-bot

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 4.0.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Security: Bump qs dependency from ~6.14.1 to ^6.15.2 (CVE-2026-8723)

3 participants