Debian Package Tracker
Register | Log in
Subscribe

node-qs

Parse, stringify query strings for Node.js

Choose email to subscribe with

general
  • source: node-qs (main)
  • version: 6.14.1+ds+~6.14.0-1
  • maintainer: Debian Javascript Maintainers (archive) (DMD)
  • uploaders: David Paleino [DMD] – Jérémy Lal [DMD]
  • arch: all
  • std-ver: 4.7.3
  • VCS: Git (Browse, QA)
versions [more versions can be listed by madison] [old versions available from snapshot.debian.org]
[pool directory]
  • o-o-stable: 6.9.4+ds-1+deb11u1
  • oldstable: 6.11.0+ds+~6.9.7-3
  • stable: 6.13.0+ds+~6.9.16-1
  • testing: 6.13.0+ds+~6.9.16-1
  • unstable: 6.14.1+ds+~6.14.0-1
versioned links
  • 6.9.4+ds-1+deb11u1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 6.11.0+ds+~6.9.7-3: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 6.13.0+ds+~6.9.16-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 6.14.1+ds+~6.14.0-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
binaries
  • node-qs
action needed
1 security issue in trixie high

There is 1 open security issue in trixie.

1 important issue:
  • CVE-2025-15284: Improper Input Validation vulnerability in qs (parse modules) allows HTTP DoS.This issue affects qs: < 6.14.1. SummaryThe arrayLimit option in qs does not enforce limits for bracket notation (a[]=1&a[]=2), allowing attackers to cause denial-of-service via memory exhaustion. Applications using arrayLimit for DoS protection are vulnerable. DetailsThe arrayLimit option only checks limits for indexed notation (a[0]=1&a[1]=2) but completely bypasses it for bracket notation (a[]=1&a[]=2). Vulnerable code (lib/parse.js:159-162): if (root === '[]' && options.parseArrays) { obj = utils.combine([], leaf); // No arrayLimit check } Working code (lib/parse.js:175): else if (index <= options.arrayLimit) { // Limit checked here obj = []; obj[index] = leaf; } The bracket notation handler at line 159 uses utils.combine([], leaf) without validating against options.arrayLimit, while indexed notation at line 175 checks index <= options.arrayLimit before creating arrays. PoCTest 1 - Basic bypass: npm install qs const qs = require('qs'); const result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4&a[]=5&a[]=6', { arrayLimit: 5 }); console.log(result.a.length); // Output: 6 (should be max 5) Test 2 - DoS demonstration: const qs = require('qs'); const attack = 'a[]=' + Array(10000).fill('x').join('&a[]='); const result = qs.parse(attack, { arrayLimit: 100 }); console.log(result.a.length); // Output: 10000 (should be max 100) Configuration: * arrayLimit: 5 (test 1) or arrayLimit: 100 (test 2) * Use bracket notation: a[]=value (not indexed a[0]=value) ImpactDenial of Service via memory exhaustion. Affects applications using qs.parse() with user-controlled input and arrayLimit for protection. Attack scenario: * Attacker sends HTTP request: GET /api/search?filters[]=x&filters[]=x&...&filters[]=x (100,000+ times) * Application parses with qs.parse(query, { arrayLimit: 100 }) * qs ignores limit, parses all 100,000 elements into array * Server memory exhausted → application crashes or becomes unresponsive * Service unavailable for all users Real-world impact: * Single malicious request can crash server * No authentication required * Easy to automate and scale * Affects any endpoint parsing query strings with bracket notation
Created: 2025-12-30 Last update: 2025-12-31 01:00
1 security issue in forky high

There is 1 open security issue in forky.

1 important issue:
  • CVE-2025-15284: Improper Input Validation vulnerability in qs (parse modules) allows HTTP DoS.This issue affects qs: < 6.14.1. SummaryThe arrayLimit option in qs does not enforce limits for bracket notation (a[]=1&a[]=2), allowing attackers to cause denial-of-service via memory exhaustion. Applications using arrayLimit for DoS protection are vulnerable. DetailsThe arrayLimit option only checks limits for indexed notation (a[0]=1&a[1]=2) but completely bypasses it for bracket notation (a[]=1&a[]=2). Vulnerable code (lib/parse.js:159-162): if (root === '[]' && options.parseArrays) { obj = utils.combine([], leaf); // No arrayLimit check } Working code (lib/parse.js:175): else if (index <= options.arrayLimit) { // Limit checked here obj = []; obj[index] = leaf; } The bracket notation handler at line 159 uses utils.combine([], leaf) without validating against options.arrayLimit, while indexed notation at line 175 checks index <= options.arrayLimit before creating arrays. PoCTest 1 - Basic bypass: npm install qs const qs = require('qs'); const result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4&a[]=5&a[]=6', { arrayLimit: 5 }); console.log(result.a.length); // Output: 6 (should be max 5) Test 2 - DoS demonstration: const qs = require('qs'); const attack = 'a[]=' + Array(10000).fill('x').join('&a[]='); const result = qs.parse(attack, { arrayLimit: 100 }); console.log(result.a.length); // Output: 10000 (should be max 100) Configuration: * arrayLimit: 5 (test 1) or arrayLimit: 100 (test 2) * Use bracket notation: a[]=value (not indexed a[0]=value) ImpactDenial of Service via memory exhaustion. Affects applications using qs.parse() with user-controlled input and arrayLimit for protection. Attack scenario: * Attacker sends HTTP request: GET /api/search?filters[]=x&filters[]=x&...&filters[]=x (100,000+ times) * Application parses with qs.parse(query, { arrayLimit: 100 }) * qs ignores limit, parses all 100,000 elements into array * Server memory exhausted → application crashes or becomes unresponsive * Service unavailable for all users Real-world impact: * Single malicious request can crash server * No authentication required * Easy to automate and scale * Affects any endpoint parsing query strings with bracket notation
Created: 2025-12-30 Last update: 2025-12-31 01:00
1 security issue in bullseye high

There is 1 open security issue in bullseye.

1 important issue:
  • CVE-2025-15284: Improper Input Validation vulnerability in qs (parse modules) allows HTTP DoS.This issue affects qs: < 6.14.1. SummaryThe arrayLimit option in qs does not enforce limits for bracket notation (a[]=1&a[]=2), allowing attackers to cause denial-of-service via memory exhaustion. Applications using arrayLimit for DoS protection are vulnerable. DetailsThe arrayLimit option only checks limits for indexed notation (a[0]=1&a[1]=2) but completely bypasses it for bracket notation (a[]=1&a[]=2). Vulnerable code (lib/parse.js:159-162): if (root === '[]' && options.parseArrays) { obj = utils.combine([], leaf); // No arrayLimit check } Working code (lib/parse.js:175): else if (index <= options.arrayLimit) { // Limit checked here obj = []; obj[index] = leaf; } The bracket notation handler at line 159 uses utils.combine([], leaf) without validating against options.arrayLimit, while indexed notation at line 175 checks index <= options.arrayLimit before creating arrays. PoCTest 1 - Basic bypass: npm install qs const qs = require('qs'); const result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4&a[]=5&a[]=6', { arrayLimit: 5 }); console.log(result.a.length); // Output: 6 (should be max 5) Test 2 - DoS demonstration: const qs = require('qs'); const attack = 'a[]=' + Array(10000).fill('x').join('&a[]='); const result = qs.parse(attack, { arrayLimit: 100 }); console.log(result.a.length); // Output: 10000 (should be max 100) Configuration: * arrayLimit: 5 (test 1) or arrayLimit: 100 (test 2) * Use bracket notation: a[]=value (not indexed a[0]=value) ImpactDenial of Service via memory exhaustion. Affects applications using qs.parse() with user-controlled input and arrayLimit for protection. Attack scenario: * Attacker sends HTTP request: GET /api/search?filters[]=x&filters[]=x&...&filters[]=x (100,000+ times) * Application parses with qs.parse(query, { arrayLimit: 100 }) * qs ignores limit, parses all 100,000 elements into array * Server memory exhausted → application crashes or becomes unresponsive * Service unavailable for all users Real-world impact: * Single malicious request can crash server * No authentication required * Easy to automate and scale * Affects any endpoint parsing query strings with bracket notation
Created: 2025-12-30 Last update: 2025-12-31 01:00
1 security issue in bookworm high

There is 1 open security issue in bookworm.

1 important issue:
  • CVE-2025-15284: Improper Input Validation vulnerability in qs (parse modules) allows HTTP DoS.This issue affects qs: < 6.14.1. SummaryThe arrayLimit option in qs does not enforce limits for bracket notation (a[]=1&a[]=2), allowing attackers to cause denial-of-service via memory exhaustion. Applications using arrayLimit for DoS protection are vulnerable. DetailsThe arrayLimit option only checks limits for indexed notation (a[0]=1&a[1]=2) but completely bypasses it for bracket notation (a[]=1&a[]=2). Vulnerable code (lib/parse.js:159-162): if (root === '[]' && options.parseArrays) { obj = utils.combine([], leaf); // No arrayLimit check } Working code (lib/parse.js:175): else if (index <= options.arrayLimit) { // Limit checked here obj = []; obj[index] = leaf; } The bracket notation handler at line 159 uses utils.combine([], leaf) without validating against options.arrayLimit, while indexed notation at line 175 checks index <= options.arrayLimit before creating arrays. PoCTest 1 - Basic bypass: npm install qs const qs = require('qs'); const result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4&a[]=5&a[]=6', { arrayLimit: 5 }); console.log(result.a.length); // Output: 6 (should be max 5) Test 2 - DoS demonstration: const qs = require('qs'); const attack = 'a[]=' + Array(10000).fill('x').join('&a[]='); const result = qs.parse(attack, { arrayLimit: 100 }); console.log(result.a.length); // Output: 10000 (should be max 100) Configuration: * arrayLimit: 5 (test 1) or arrayLimit: 100 (test 2) * Use bracket notation: a[]=value (not indexed a[0]=value) ImpactDenial of Service via memory exhaustion. Affects applications using qs.parse() with user-controlled input and arrayLimit for protection. Attack scenario: * Attacker sends HTTP request: GET /api/search?filters[]=x&filters[]=x&...&filters[]=x (100,000+ times) * Application parses with qs.parse(query, { arrayLimit: 100 }) * qs ignores limit, parses all 100,000 elements into array * Server memory exhausted → application crashes or becomes unresponsive * Service unavailable for all users Real-world impact: * Single malicious request can crash server * No authentication required * Easy to automate and scale * Affects any endpoint parsing query strings with bracket notation
Created: 2025-12-30 Last update: 2025-12-31 01:00
The VCS repository is not up to date, push the missing commits. high
vcswatch reports that the current version of the package is not in its VCS.
Either you need to push your commits and/or your tags, or the information about the package's VCS are out of date. A common cause of the latter issue when using the Git VCS is not specifying the correct branch when the packaging is not in the default one (remote HEAD branch), which is usually "master" but can be modified in salsa.debian.org in the project's general settings with the "Default Branch" field). Alternatively the Vcs-Git field in debian/control can contain a "-b <branch-name>" suffix to indicate what branch is used for the Debian packaging.
Created: 2025-12-30 Last update: 2025-12-30 22:00
lintian reports 4 warnings normal
Lintian reports 4 warnings about this package. You should make the package lintian clean getting rid of them.
Created: 2025-12-31 Last update: 2025-12-31 04:00
testing migrations
  • excuses:
    • Migration status for node-qs (6.13.0+ds+~6.9.16-1 to 6.14.1+ds+~6.14.0-1): BLOCKED: Rejected/violates migration policy/introduces a regression
    • Issues preventing migration:
    • ∙ ∙ Autopkgtest for node-body-parser/2.2.1+~1.19.6-1: amd64: Regression ♻ (reference ♻), arm64: Regression ♻ (reference ♻), i386: Regression ♻ (reference ♻), ppc64el: Regression ♻ (reference ♻), riscv64: Regression ♻ (reference ♻), s390x: Regression ♻ (reference ♻)
    • ∙ ∙ Autopkgtest for node-express/5.1.0+~cs12.3.3-1: amd64: Regression ♻ (reference ♻), arm64: Regression ♻ (reference ♻), i386: Regression ♻ (reference ♻), ppc64el: Regression ♻ (reference ♻), riscv64: Regression ♻ (reference ♻), s390x: Regression ♻ (reference ♻)
    • ∙ ∙ Autopkgtest for node-qs/6.14.1+ds+~6.14.0-1: amd64: Pass, arm64: Pass, i386: Pass, ppc64el: Pass, riscv64: Pass, s390x: Pass
    • ∙ ∙ Too young, only 1 of 5 days old
    • Additional info (not blocking):
    • ∙ ∙ Piuparts tested OK - https://piuparts.debian.org/sid/source/n/node-qs.html
    • ∙ ∙ Reproducible on amd64 - info ♻
    • ∙ ∙ Reproducible on arm64 - info ♻
    • Not considered
news
[rss feed]
  • [2025-12-30] Accepted node-qs 6.14.1+ds+~6.14.0-1 (source) into unstable (Yadd) (signed by: Xavier Guimard)
  • [2024-09-20] node-qs 6.13.0+ds+~6.9.16-1 MIGRATED to testing (Debian testing watch)
  • [2024-09-14] Accepted node-qs 6.13.0+ds+~6.9.16-1 (source) into unstable (Yadd) (signed by: Xavier Guimard)
  • [2023-12-10] node-qs 6.11.0+ds+~6.9.7-4 MIGRATED to testing (Debian testing watch)
  • [2023-12-10] node-qs 6.11.0+ds+~6.9.7-4 MIGRATED to testing (Debian testing watch)
  • [2023-12-07] Accepted node-qs 6.11.0+ds+~6.9.7-4 (source) into unstable (Yadd) (signed by: Xavier Guimard)
  • [2023-01-30] Accepted node-qs 6.5.2-1+deb10u1 (source) into oldstable (Guilhem Moulin)
  • [2022-12-10] Accepted node-qs 6.9.4+ds-1+deb11u1 (source) into proposed-updates (Debian FTP Masters) (signed by: Xavier Guimard)
  • [2022-12-09] node-qs 6.11.0+ds+~6.9.7-3 MIGRATED to testing (Debian testing watch)
  • [2022-12-09] node-qs 6.11.0+ds+~6.9.7-3 MIGRATED to testing (Debian testing watch)
  • [2022-12-04] Accepted node-qs 6.11.0+ds+~6.9.7-3 (source) into unstable (Yadd) (signed by: Xavier Guimard)
  • [2022-11-24] node-qs 6.11.0+ds+~6.9.7-2 MIGRATED to testing (Debian testing watch)
  • [2022-11-22] Accepted node-qs 6.11.0+ds+~6.9.7-2 (source) into unstable (Jelmer Vernooij) (signed by: Jelmer Vernooij)
  • [2022-07-13] node-qs 6.11.0+ds+~6.9.7-1 MIGRATED to testing (Debian testing watch)
  • [2022-07-09] Accepted node-qs 6.11.0+ds+~6.9.7-1 (source) into unstable (Yadd) (signed by: Xavier Guimard)
  • [2022-01-15] node-qs 6.10.3+ds+~6.9.7-1 MIGRATED to testing (Debian testing watch)
  • [2022-01-13] Accepted node-qs 6.10.3+ds+~6.9.7-1 (source) into unstable (Yadd) (signed by: Xavier Guimard)
  • [2021-12-11] node-qs 6.10.2+ds+~6.9.7-1 MIGRATED to testing (Debian testing watch)
  • [2021-12-08] Accepted node-qs 6.10.2+ds+~6.9.7-1 (source) into unstable (Yadd) (signed by: Xavier Guimard)
  • [2021-09-30] node-qs 6.10.1+ds-1 MIGRATED to testing (Debian testing watch)
  • [2021-09-27] Accepted node-qs 6.10.1+ds-1 (source) into unstable (Ayoyimika Ajibade) (signed by: Praveen Arimbrathodiyil)
  • [2020-11-19] node-qs 6.9.4+ds-1 MIGRATED to testing (Debian testing watch)
  • [2020-11-16] Accepted node-qs 6.9.4+ds-1 (source) into unstable (Xavier Guimard)
  • [2019-12-07] node-qs 6.9.1+ds-1 MIGRATED to testing (Debian testing watch)
  • [2019-12-05] Accepted node-qs 6.9.1+ds-1 (source) into unstable (Xavier Guimard)
  • [2019-10-23] node-qs 6.9.0+ds-1 MIGRATED to testing (Debian testing watch)
  • [2019-10-20] Accepted node-qs 6.9.0+ds-1 (source) into unstable (Xavier Guimard)
  • [2018-10-09] Accepted node-qs 6.5.2-1~bpo9+1 (source all) into stretch-backports, stretch-backports (Pirate Praveen) (signed by: Praveen Arimbrathodiyil)
  • [2018-09-21] node-qs 6.5.2-1 MIGRATED to testing (Debian testing watch)
  • [2018-09-19] Accepted node-qs 6.5.2-1 (source) into unstable (Pirate Praveen) (signed by: Praveen Arimbrathodiyil)
  • 1
  • 2
bugs [bug history graph]
  • all: 0
links
  • homepage
  • lintian (0, 4)
  • buildd: logs, reproducibility
  • popcon
  • browse source code
  • edit tags
  • other distros
  • security tracker
  • screenshots
  • debian patches
  • debci
ubuntu Ubuntu logo [Information about Ubuntu for Debian Developers]
  • version: 6.13.0+ds+~6.9.16-1

Debian Package Tracker — Copyright 2013-2025 The Distro Tracker Developers
Report problems to the tracker.debian.org pseudo-package in the Debian BTS.
Documentation — Bugs — Git Repository — Contributing