Repository navigation
Update dependency qs to v6 [SECURITY] - #13
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/npm-qs-vulnerability
branch
from
May 10, 2026 15:45
03adb40 to
fce73a3
Compare
renovate
Bot
force-pushed
the
renovate/npm-qs-vulnerability
branch
from
June 7, 2026 20:13
fce73a3 to
df2149b
Compare
renovate
Bot
force-pushed
the
renovate/npm-qs-vulnerability
branch
from
July 30, 2026 08:13
df2149b to
357b0d7
Compare
|
Tick the box to add this pull request to the merge queue (same as
|
renovate
Bot
force-pushed
the
renovate/npm-qs-vulnerability
branch
from
August 8, 2026 19:55
357b0d7 to
207ac06
Compare
|
Tick the box to add this pull request to the merge queue (same as
|
renovate
Bot
force-pushed
the
renovate/npm-qs-vulnerability
branch
from
October 4, 2026 00:04
207ac06 to
816090c
Compare
|
Tick the box to add this pull request to the merge queue (same as
|
renovate
Bot
force-pushed
the
renovate/npm-qs-vulnerability
branch
from
November 1, 2026 10:58
816090c to
3adfa66
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
~5.2.0→~6.17.0Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
qs vulnerable to Prototype Pollution
CVE-2022-24999 / GHSA-hrpp-h998-j3pp
More information
Details
qs before 6.10.3 allows attackers to cause a Node process hang because an
__ proto__key can be used. In many typical web framework use cases, an unauthenticated remote attacker can place the attack payload in the query string of the URL that is used to visit the application, such asa[__proto__]=b&a[__proto__]&a[length]=100000000. The fix was backported to qs 6.9.7, 6.8.3, 6.7.3, 6.6.1, 6.5.3, 6.4.1, 6.3.3, and 6.2.4.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Prototype Pollution Protection Bypass in qs
CVE-2017-1000048 / GHSA-gqgv-6jq5-jjj9
More information
Details
Affected version of
qsare vulnerable to Prototype Pollution because it is possible to bypass the protection. Theqs.parsefunction fails to properly prevent an object's prototype to be altered when parsing arbitrary input. Input containing[or]may bypass the prototype pollution protection and alter the Object prototype. This allows attackers to override properties that will exist in all objects, which may lead to Denial of Service or Remote Code Execution in specific circumstances.Recommendation
Upgrade to 6.0.4, 6.1.2, 6.2.3, 6.3.2 or later.
Severity
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
ljharb/qs (qs)
v6.17.1Compare Source
parse:interpretNumericEntities: decode code points above U+FFFF as surrogate pairs (#640)parse: respectplainObjectsfor[]withparseArrays: false(#639)utils:merge: count the elements of a sparse array againstarrayLimit, not its holesparse: guard bracket-wrapped prototype keys at depth 0 (#638)parse: extract wrapping-bracket stripping helperdepth: 0anddepth: falsekeep keys flatparse: pin depth-0 bracket stripping and prototype keys kept byallowPrototypes/plainObjectsv6.17.0Compare Source
stringify: addWHATWGformat (#623)stringify: do not sort the caller'sfilterarray in place (#637)parse: copy an own__proto__key as data (#636)parse: decode percent-encoded dots case-insensitively (#635)stringify: encode keys whenallowEmptyArraysis set (#561)parse: preserve comma arrays when interpreting numeric entities (#630)parse: allow scalar fields with a zero array limit (#627)parse: do not count an existing comma array towardarrayLimitwhenduplicatesdiscards or replaces itutils:encode: encode lone surrogates as U+FFFD instead of consuming the next code unit (#624)formatargumenteslint,evalmd,npmignorestringify: pinallowEmptyArraysoutput for keys that need no encodingstringify: pinsortorder for nested keys selected by an arrayfilterparse: coverinterpretNumericEntitiesacross value shapes, keys, and the charset sentinelparse: cover more input that builds no array at a zero or negativearrayLimitparse: covercommawith a zero or negativearrayLimit, and combining a full comma arrayparse: pin the behavior of a zero or negativearrayLimitutils/stringify: pin~,*, and parens encoding in RFC3986 and RFC1738v6.16.2Compare Source
stringify: encode keys whenallowEmptyArraysis set (#561)evalmd,npmignorestringify: pinallowEmptyArraysoutput for keys that need no encodingv6.16.1Compare Source
parse: do not mutate an object inputstringify: stop re-encoding structural separator dots whenencodeDotInKeysis set (#564)stringify:arrayFormat: 'comma': pass the full encoder arguments withencodeValuesOnlyutils: encode+as%2Bin iso-8859-1 mode so values round-trip (#565)stringify: ignore inherited array format names (#622)stringify:arrayFormat: 'comma': do not throw on elements with no callabletoStringutils:merge: seed an overflow container's index from its own keys, not just the sourceutils:merge: keep astrictMergeconflict container's index andarrayLimitcorrectparse: only treat[]as array syntax when it ends the keydecode: skip decoders when there is no percent sign (#583)utils:merge: applyarrayLimitto the two-element array built for colliding valuesparse: bound the nesting added by repeatedstrictMergeconflicts (credit @Yeaseen)qsand flat parsers disagree about parameter namesthrowOnLimitExceededlimits each array, not the total number of valuescache-modeutils:decode: add missing casesparse: characterize the]=split when an=precedes any bracket group (#620)parse:allowDots: cover stray close brackets before a dot@ljharb/eslint-config,eslint,tapev6.16.0Compare Source
stringify: add adepthoption to bound recursion depth (defaultInfinity)parse: enforcearrayLimiton comma groups under[]=whenthrowOnLimitExceededis setparse: flatten a collection appended to an overflowed array (#571)utils:isBuffer: do not invoke a non-callableconstructor.isBufferstringify: do not letallowEmptyArraysskip cycle detection (or drop own keys) on an empty array with own propertiesstringify: encode dots in a top-level key with a primitive value when encodeDotInKeys is set (#562)stringifydeep-nesting DoS is caller-boundedarrayLimitis a representation threshold, not an element-count capparse: remove a test that pinned[]=comma groups escapingarrayLimitstringify: pin currentencodeDotInKeysseparator-dot behavior@ljharb/eslint-config,eslinteslint,evalmdv6.15.4Compare Source
stringify: encode keys whenallowEmptyArraysis set (#561)@ljharb/eslint-config,evalmd,npmignore,tapestringify: pinallowEmptyArraysoutput for keys that need no encodingv6.15.3Compare Source
parse: enforcethrowOnLimitExceededfor cumulative array growth viacombine/mergeutils: respect encoding of surrogate pairs across chunks (#559)parse: throw thearrayLimiterror before splitting oversized comma valuesutils.merge/utils.assign: avoid invoking__proto__setter when copying own propertiesutils: enforcearrayLimitconsistently acrossmerge's array pathsutils: makecompactO(n) via a side-channel visited-set instead ofArray.indexOfside-channeleslint,mock-property,tapeparse: characterize current lenient handling of unbalanced bracket keys (#558)v6.15.2Compare Source
stringify: skip null/undefined entries inarrayFormat: 'comma'+encodeValuesOnlyinstead of crashing inencoderstringify: use configureddelimiteraftercharsetSentinel(#555)stringify: applyformatterto encoded key understrictNullHandling(#554)stringify: skip null/undefined filter-array entries instead of crashing inencoder(#551)parse: handle nested bracket groups and add regression tests (#530); changes output for some unbalanced bracket keys (see #558)@ljharb/eslint-configv6.15.1Compare Source
parse:parameterLimit: InfinitywiththrowOnLimitExceeded: truesilently drops all parameters@ljharb/eslint-config@ljharb/eslint-config,iconv-litev6.15.0Compare Source
parse: addstrictMergeoption to wrap object/primitive conflicts in an array (#425, #122)duplicatesoption should not apply to bracket notation keys (#514)v6.14.3Compare Source
stringify: encode keys whenallowEmptyArraysis set (#561)side-channel@ljharb/eslint-config,es-value-fixtures,eslint,evalmd,mock-property,npmignore,tapestringify: pinallowEmptyArraysoutput for keys that need no encodingv6.14.2Compare Source
parse: mark overflow objects for indexed notation exceedingarrayLimit(#546)arrayLimitmeans max count, not max index, incombine/merge/parseArrayValueparse: throw onarrayLimitexceeded with indexed notation whenthrowOnLimitExceededis true (#529)parse: enforcearrayLimitoncomma-parsed valuesparse: fix error message to reflect arrayLimit as max index; remove extraneous comments (#545).push, usevoidaddQueryPrefixdoes not add?to empty output (#418)parseArraysandarrayLimitdocumentation (#543)arrayLength→arrayLimit)v6.14.1Compare Source
arrayLimitapplies to[]notation as wellparse: when a custom decoder returnsnullfor a key, ignore that keyparse: extract key segment splitting helperstringify: increase coverageeslint,@ljharb/eslint-config,npmignore,es-value-fixtures,for-each,object-inspectv6.14.0Compare Source
parse: addthrowOnParameterLimitExceededoption (#517)parse: useutils.combinemoreparse: add explicitthrowOnLimitExceededdefaultside-channeles-value-fixtures,has-bigints,has-proto,has-symbolsv6.13.4Compare Source
stringify: encode keys whenallowEmptyArraysis set (#561)side-channel@ljharb/eslint-config,es-value-fixtures,eslint,evalmd,for-each,has-symbols,mock-property,npmignore,object-inspect,tapestringify: pinallowEmptyArraysoutput for keys that need no encodingv6.13.3Compare Source
[Fix] fix regressions from robustness refactor
[actions] update reusable workflows
v6.13.2Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.13.1Compare Source
stringify: avoid a crash when afilterkey isnullutils.merge: functions should not be stringified into keysparse: avoid a crash with interpretNumericEntities: true, comma: true, and iso charsetstringify: ensure a non-stringfilterdoes not crash__proto__syntax instead ofObject.createfor null objectsutils.merge: add some coveragees-value-fixtures,mock-property,object-inspect,tapev6.13.0Compare Source
parse: addstrictDepthoption (#511)npm auditinstead ofaudv6.12.6Compare Source
stringify: encode keys whenallowEmptyArraysis set (#561)npm auditinstead ofaudside-channel@ljharb/eslint-config,es-value-fixtures,eslint,evalmd,for-each,has-symbols,mock-property,npmignore,object-inspect,tapestringify: pinallowEmptyArraysoutput for keys that need no encodingv6.12.5Compare Source
v6.12.4Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.12.3Compare Source
parse: properly account forstrictNullHandlingwhenallowEmptyArraysv6.12.2Compare Source
parse: parse encoded square brackets (#506)v6.12.1Compare Source
parse: DisabledecodeDotInKeysby default to restore previous behavior (#501)utils: Optimize performance under large data volumes, reduce memory usage, and speed up processing (#502)utils: use+=v6.12.0Compare Source
parse/stringify: adddecodeDotInKeys/encodeDotKeysoptions (#488)parse: addduplicatesoptionparse/stringify: addallowEmptyArraysoption to allow [] in object values (#487)parse/stringify: move allowDots config logic to its own variablestringify: move option-handling code intonormalizeStringifyOptionsstringify: clarify defaultarrayFormatbehaviorside-channelsideEffectsflagparse: remove useless tests; add coveragestringify: increase coveragemock-propertystringify: improve coverage@ljharb/eslint-config,aud,has-override-mistake,has-property-descriptors,mock-property,npmignore,object-inspect,tapeglob, since v10.3.8+ requires a brokenjackspeakjackspeaksince 2.1.2+ depends on npm aliases, which kill the install process in npm < 6v6.11.4Compare Source
v6.11.3Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.11.2Compare Source
parse: Fix parsing when the global Object prototype is frozen (#473)v6.11.1Compare Source
stringify: encode comma values more consistently (#463)filteroption for injecting custom serialization, i.e. of custom types (#447)@ljharb/eslint-config,aud,object-inspect,tapev6.11.0Compare Source
stringify: revert0e903c0; addcommaRoundTripoption (#442)v6.10.7Compare Source
v6.10.6Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.10.5Compare Source
stringify: witharrayFormat: comma, properly include an explicit[]on a single-item array (#434)v6.10.4Compare Source
stringify: witharrayFormat: comma, include an explicit[]on a single-item array (#441)npmignoreto autogenerate an npmignore fileeslint,@ljharb/eslint-config,aud,has-symbol,object-inspect,tapev6.10.3Compare Source
parse: ignore__proto__keys (#428)stringify: avoid relying on a globalundefined(#427)eslint,@ljharb/eslint-config,object-inspect,tapev6.10.2Compare Source
stringify: actually fix cyclic references (#426)stringify: avoid encoding arrayformat comma whenencodeValuesOnly = true(#424)eslint,@ljharb/eslint-config,aud,object-inspect,safe-publish-latest,tapev6.10.1Compare Source
stringify: avoid exception on repeated object values (#402)v6.10.0Compare Source
stringify: throw on cycles, instead of an infinite loop (#395, #394, #393)parse: addallowSparseoption for collapsing arrays with missing indices (#312)npm run distin publish, not installeslint,@ljharb/eslint-config,aud,has-symbols,tapeljharb/actions/node/installinstead ofljharb/actions/node/runv6.9.9Compare Source
npmignoreto autogenerate an npmignore filev6.9.8Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.9.7Compare Source
parse: ignore__proto__keys (#428)stringify: avoid encoding arrayformat comma whenencodeValuesOnly = true(#424)stringify: avoid relying on a globalundefined(#427)v6.9.6Compare Source
distdir; mistakenly removed ind4f6c32v6.9.5Compare Source
stringify: do not encode parens for RFC1738stringify: fix arrayFormat comma with empty array/objects (#350)format: removeutil.assigncallpull_request_targeteventstringify: add tests for #378nycon all tests; usetaperunnereslint,@ljharb/eslint-config,browserify,mkdirp,object-inspect,tape; addaudv6.9.4Compare Source
stringify: whenarrayFormatiscomma, respectserializeDate(#364)stringify: reduce branching (part of #350)maybeMaptoutilsbrowserify,tapev6.9.3Compare Source
v6.9.2Compare Source
parse: Fix parsing array from object withcommatrue (#359)parse: throw a TypeError instead of an Error for bad charset (#349)eslint,@ljharb/eslint-config,object-inspect,has-symbols,tape,mkdirp,iconv-litev6.9.1Compare Source
parse: with comma true, handle field that holds an array of arrays (#335)parse: with comma true, do not split non-string values (#334)fundingfieldeslint,@ljharb/eslint-configv6.9.0Compare Source
parse/stringify: Pass extra key/value argument todecoder(#333)eslint,@ljharb/eslint-config,evalmdparse: add passingarrayFormattestsposttestusingnpx audto runnpm auditwithout a lockfilenodev12.10,v11.15,v10.16,v8.16Buffer.fromin node v5.0-v5.9 and v4.0-v4.4 requires a TypedArrayv6.8.5Compare Source
npmignoreto autogenerate an npmignore filev6.8.4Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.8.3Compare Source
parse: ignore__proto__keys (#428)stringify: avoid relying on a globalundefined(#427)stringify: avoid encoding arrayformat comma whenencodeValuesOnly = true(#424)stringify: reduce branchingv6.8.2Compare Source
v6.8.1Compare Source
parse: Fix parsing array from object withcommatrue (#359)parse: throw a TypeError instead of an Error for bad charset (#349)parse: with comma true, handle field that holds an array of arrays (#335)parse: with comma true, do not split non-string values (#334)fundingfieldeslint,@ljharb/eslint-config,tape,safe-publish-latest,evalmd,has-symbols,iconv-lite,mkdirp,object-inspectparse: add passingarrayFormattestsBuffer.fromin node v5.0-v5.9 and v4.0-v4.4 requires a TypedArrayv6.8.0Compare Source
depth=falseto preserve the original key; [Fix]depth=0should preserve the original key (#326)formats: tiny bit of cleanup.eslint,@ljharb/eslint-config,browserify,safe-publish-latest,iconv-lite,tapedepth=0anddepth=falsebehavior, both current and intuitive/intended (#326)eclintinstead ofeditorconfig-toolsv6.7.5Compare Source
npmignoreto autogenerate an npmignore filev6.7.4Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.7.3Compare Source
parse: ignore__proto__keys (#428)stringify: avoid encoding arrayformat comma whenencodeValuesOnly = true(#424)stringify: avoid relying on a globalundefined(#427)nycfor coveragev6.7.2Compare Source
v6.7.1Compare Source
parse: Fix parsing array from object withcommatrue (#359)parse: with comma true, handle field that holds an array of arrays (#335)parse: with comma true, do not split non-string values (#334)parse: throw a TypeError instead of an Error for bad charset (#349)formats: tiny bit of cleanup.fundingfieldeslint,@ljharb/eslint-config,tape,safe-publish-latest,evalmd,iconv-lite,mkdirp,object-inspect,browserifyparse: add passingarrayFormattestsBuffer.fromin node v5.0-v5.9 and v4.0-v4.4 requires a TypedArraydepth=0anddepth=falsebehavior, both current and intuitive/intendedeclintinstead ofeditorconfig-toolsv6.7.0Compare Source
stringify/parse: addcommaas anarrayFormatoption (#276, #219)utils.merge: avoid a crash with a null target and a truthy non-array source, also with an array sourcestringify: cacheObject.prototype.hasOwnPropertyutils:isBuffer: small tweak; add testsArray.isArrayparse/stringify: make a function to normalize the optionsutils: reduce observable [[Get]]sstringify/utils: cacheArray.isArrayString(x)overx.toString()v6.6.3Compare Source
npmignoreto autogenerate an npmignore filev6.6.2Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.6.1Compare Source
parse: ignore__proto__keys (#428)utils.merge: avoid a crash with a null target and an array sourceutils.merge: avoid a crash with a null target and a truthy non-array sourcestringify: avoid relying on a globalundefined(#427)stringify: cacheObject.prototype.hasOwnPropertyformats: tiny bit of cleanup.utils:isBuffer: small tweak; add testsstringify/utils: cacheArray.isArrayutils: reduce observable [[Get]]sArray.isArrayparse/stringify: make a function to normalize the optionsString(x)overx.toString()v6.6.0Compare Source
utilsfunction (#189)stringify: fix a crash withstrictNullHandlingand a customfilter/serializeDate(#279)parseArraysis false, properly handle keys ending in[](#260)stringify: do not crash in an obscure combo ofinterpretNumericEntities, a bad customdecoder, &iso-8859-1utils:merge: fix crash whensourceis a truthy primitive & no options are providedstringify: Avoid arr = arr.concat(...), push to the existing instance (#269)parse: only need to reassign the var onceparse/stringify: clean upcharsetoptions checking; fix defaultsparse: one lessconcatcallutils:compactQueue: make it explicitly side-effectingbrowserify,eslint,@ljharb/eslint-config,iconv-lite,safe-publish-latest,tapenodev10.10,v9.11,v8.12,v6.14,v4.9; pin included builds to LTSv6.5.5Compare Source
npmignoreto autogenerate an npmignore filev6.5.4Compare Source
.push, usevoidparseArraysandarrayLimitdocumentation (#543)addQueryPrefixdoes not add?to empty output (#418)v6.5.3Compare Source
parse: ignore__proto__keys (#428)utils.merge: avoid a crash with a null target and a truthy non-array sourcestringify: fix a crash withstrictNullHandlingand a customfilter/serializeDate(#279)utils:merge: fix crash whensourceis a truthy primitive & no options are providedparseArraysis false, properly handle keys ending in[]utils.merge: avoid a crash with a null target and an array sourceutils: reduce observable [[Get]]sArray.isArraystringify: Avoid arr = arr.concat(...), push to the existing instance (#269)parse: only need to reassign the var oncestringify: avoid relying on a globalundefined(#427)String(x)overx.toString()v6.5.2Compare Source
safer-bufferinstead ofBufferconstructormodule.exportsone thing, instead of mutatingexports(#230)browserify,eslint,iconv-lite,safer-buffer,tape,browserifyv6.5.1[Compare Source](http
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.