CVE-2026-2391 | qs's arrayLimit bypass in comma parsing allows denial of service

Exp

### Summary The `arrayLimit` option in qs does not enforce limits for comma-separated values when `comma: true` is enabled, allowing attackers to cause denial-of-service via memory exhaustion. This is a bypass of the array limit enforcement, similar to the bracket notation bypass addressed in GHSA-6rw7-vpxm-498p (CVE-2025-15284). ### Details When the `comma` option is set to `true` (not the default, but configurable in applications), qs allows parsing comma-separated strings as arrays (e.g., `?param=a,b,c` becomes `['a', 'b', 'c']`). However, the limit check for `arrayLimit` (default: 20) and the optional throwOnLimitExceeded occur after the comma-handling logic in `parseArrayValue`, enabling a bypass. This permits creation of arbitrarily large arrays from a single parameter, leading to excessive memory allocation. **Vulnerable code** (lib/parse.js: lines ~40-50): ```js if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {     return val.split(','); } if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {     throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); } return val; ``` The `split(',')` returns the array immediately, skipping the subsequent limit check. Downstream merging via `utils.combine` does not prevent allocation, even if it marks overflows for sparse arrays.This discrepancy allows attackers to send a single parameter with millions of commas (e.g., `?param=,,,,,,,,...`), allocating massive arrays in memory without triggering limits. It bypasses the intent of `arrayLimit`, which is enforced correctly for indexed (`a[0]=`) and bracket (`a[]=`) notations (the latter fixed in v6.14.1 per GHSA-6rw7-vpxm-498p). ### PoC **Test 1 - Basic bypass:** ``` npm install qs ``` ```js const qs = require('qs'); const payload = 'a=' + ','.repeat(25); // 26 elements after split (bypasses arrayLimit: 5) const options = { comma: true, arrayLimit: 5, throwOnLimitExceeded: true }; try {   const result = qs.parse(payload, options);   console.log(result.a.length); // Outputs: 26 (bypass successful) } catch (e) {   console.log('Limit enforced:', e.message); // Not thrown } ``` **Configuration:** - `comma: true` - `arrayLimit: 5` - `throwOnLimitExceeded: true` Expected: Throws "Array limit exceeded" error. Actual: Parses successfully, creating an array of length 26. ### Impact Denial of Service (DoS) via memory exhaustion.

公開: 2026-02-12 最終更新: 2026-06-17 Assigner: 7ffcee3d-2c14-4c3e-b844-86c6a321a158 ソース: 7ffcee3d-2c14-4c3e-b844-86c6a321a158

総合評価: CVE-2026-2391 は公開エクスプロイトあり(53.7/100)。CVSS 深刻度は中。悪用される可能性が高い(EPSS 0.48%、37 パーセンタイル) 根拠: 公開エクスプロイトが 1 件参照されています(Exploit-DB)。 推奨対応: 公開エクスプロイトが確認されています。影響範囲の確認、緩和策の適用、パッチ適用を優先してください。

リスクは変動します。再評価に基づき、本ページの表示内容を更新しています。

CVE-2026-2391 に関する公開 exploit 参照(Exploit-DB)

EDB-ID ソース 種別 公開 リンク
nvd_ref exploit_tag Exploit-DB ↗

CVE-2026-2391 の EPSS(Exploit Prediction Scoring System)スコア

EPSS は日次で悪用されやすさの相対度合いを推定します。パーセンタイルは採点済み CVE の中での相対位置(高いほど相対的に深刻)を示します。

# 日付 旧 EPSS スコア 新 EPSS スコア Δ(新 − 旧)
1 2026-06-15 0.06% 0.48% +0.42%
2 2026-03-26 0.05% 0.06% +0.01%
3 2026-02-12 0.05%

EPSS の全履歴 (全 3 件)

CVE-2026-2391 の CVSS(Common Vulnerability Scoring System)指標

この CVE の CVSS 指標。

ベーススコア バージョン 深刻度 ベクトル 悪用しやすさ 影響 スコアの出典
6.3 4.0 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X クリックして展開
攻撃ベクター (AV:N)
インターネットや社内 WAN など、ルーティングされたネットワーク越しに遠隔から踏み台にしうる。
攻撃の複雑さ (AC:L)
手順が短く、再現性が高い。
攻撃要件 (AT:P)
特定のミドルウェア状態やデータ配置など、追加前提が揃わないと成立しない。
必要な権限 (PR:N)
昇格やログインなしで踏み台にしうる。
ユーザーの関与 (UI:N)
被害者の操作なしでも攻撃が完結しうる。
脆弱システムの機密性への影響 (VC:N)
脆弱な対象から機微情報が読まれうる余地はほとんどない。
脆弱システムの完全性への影響 (VI:N)
改ざん・なりすましで信頼が揺らぐ局面はほとんど想定されない。
脆弱システムの可用性への影響 (VA:L)
遅延や断続的障害、一部機能の停止など、運用で吸収しうる範囲。
後続システムの機密性への影響 (SC:N)
脆弱点を経由して下流の機微情報が読まれうる余地はほとんどない。
後続システムの完全性への影響 (SI:N)
下流の記録や設定が歪められる局面はほとんど想定されない。
後続システムの可用性への影響 (SA:N)
下流サービスが止まるほどの影響は想定しにくい。
悪用の成熟度(Threat) (E:X)
Threat 情報が未指定のとき、最悪側(実害報告あり)に寄せて採点する。
機密性に対するセキュリティ要件(環境) (CR:X)
未指定のときは情報不足とみなし、スコア上は高要求(保守的)として扱う。
完全性に対するセキュリティ要件(環境) (IR:X)
未指定のときは情報不足とみなし、スコア上は高要求(保守的)として扱う。
可用性に対するセキュリティ要件(環境) (AR:X)
未指定のときは情報不足とみなし、スコア上は高要求(保守的)として扱う。
変更後の攻撃ベクター (MAV:X)
環境側で上書きしない限り、ベースの AV を採用。
変更後の攻撃の複雑さ (MAC:X)
環境側で上書きしない限り、ベースの AC を採用。
変更後の攻撃要件 (MAT:X)
環境側で上書きしない限り、ベースの AT を採用。
変更後の必要な権限 (MPR:X)
環境側で上書きしない限り、ベースの PR を採用。
変更後のユーザーの関与 (MUI:X)
環境側で上書きしない限り、ベースの UI を採用。
変更後の脆弱システムの機密性への影響 (MVC:X)
環境側で上書きしない限り、ベースの VC を採用。
変更後の脆弱システムの完全性への影響 (MVI:X)
環境側で上書きしない限り、ベースの VI を採用。
変更後の脆弱システムの可用性への影響 (MVA:X)
環境側で上書きしない限り、ベースの VA を採用。
変更後の後続システムの機密性への影響 (MSC:X)
環境側で上書きしない限り、ベースの SC を採用。
変更後の後続システムの完全性への影響 (MSI:X)
環境側で上書きしない限り、ベースの SI を採用。
変更後の後続システムの可用性への影響 (MSA:X)
環境側で上書きしない限り、ベースの SA を採用。
安全性(補足、スコア非変更) (S:X)
人的安全への追加評価を行わない。
自動化可否(補足、スコア非変更) (AU:X)
キルチェーン自動化の評価を行わない。
復旧(補足、スコア非変更) (R:X)
サービス復元パスの評価を行わない。
価値密度(補足、スコア非変更) (V:X)
一撃で握れる資産規模の評価を行わない。
対応工数(補足、スコア非変更) (RE:X)
修復コストの評価を行わない。
提供元の緊急度(補足、スコア非変更) (U:X)
ベンダー色分けの緊急度を付さない。
7ffcee3d-2c14-4c3e-b844-86c6a321a158
3.7 3.1 LOW
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L クリックして展開
攻撃ベクター (AV:N)
インターネットなど、ルーティングされたネットワーク越しに遠隔から悪用しうる。端末の前にいる必要はない。
攻撃の複雑さ (AC:H)
到達できても、タイミング・負荷・周辺設定など、揃わないと成功しない局面が多い。
必要な権限 (PR:N)
事前のログインや昇格は不要で、匿名アクセスのまま踏み台にしうる。
ユーザーの関与 (UI:N)
メールのリンクを開く、マクロを有効にするなど、被害者の協力がなくても成立しうる。
スコープ (S:U)
影響は脆弱コンポーネントと同一のセキュリティ権限・信頼境界の内側に収まる。
機密性への影響 (C:N)
機微情報の漏えいは想定しにくい。
完全性への影響 (I:N)
改ざん・なりすましによる信頼毀損は軽微か、想定されない。
可用性への影響 (A:L)
遅延や一部機能の停止、断続的な障害など、運用で吸収しうる範囲。
2.2 1.4 7ffcee3d-2c14-4c3e-b844-86c6a321a158
7.5 3.1 HIGH
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H クリックして展開
攻撃ベクター (AV:N)
インターネットなど、ルーティングされたネットワーク越しに遠隔から悪用しうる。端末の前にいる必要はない。
攻撃の複雑さ (AC:L)
攻撃者が条件を満たせば、レース条件や珍しい構成に依存せずに再現しやすい。
必要な権限 (PR:N)
事前のログインや昇格は不要で、匿名アクセスのまま踏み台にしうる。
ユーザーの関与 (UI:N)
メールのリンクを開く、マクロを有効にするなど、被害者の協力がなくても成立しうる。
スコープ (S:U)
影響は脆弱コンポーネントと同一のセキュリティ権限・信頼境界の内側に収まる。
機密性への影響 (C:N)
機微情報の漏えいは想定しにくい。
完全性への影響 (I:N)
改ざん・なりすましによる信頼毀損は軽微か、想定されない。
可用性への影響 (A:H)
長時間のサービス停止、データ損壊による復旧不能に近い状態など、利用者に著しい不便を与えうる。
3.9 3.6 [email protected]

CVE-2026-2391 の弱点分類(列挙)

CVE-2026-2391 の GitHub Security Advisory

GHSA-w7fw-mjwx-w883 · 深刻度: low · エコシステム: npm — qs's arrayLimit bypass in comma parsing allows denial of service

CVE-2026-2391 の OS トラッカー

vendor priority summary link
debian not yet assigned CVE-2026-2391 not yet assigned priority: Debian including 1 source packages (node-qs), 5 status rows across 5 suites (bookworm, bullseye, forky, sid, trixie): open 3, resolved 2. https://security-tracker.debian.org/tracker/CVE-2026-2391
redhat medium https://access.redhat.com/security/cve/CVE-2026-2391
ubuntu medium CVE-2026-2391 medium priority: Ubuntu including 1 source packages (node-qs), 8 status rows across 8 suites (bionic, focal, jammy, noble, questing, trusty, upstream, xenial): needs-triage 8. https://ubuntu.com/security/CVE-2026-2391

CVE-2026-2391 の影響を受けるソフトウェア/構成

ベンダー 製品 バージョン 生の CPE
qs_project qs >= 6.7.0, < 6.14.2 cpe:2.3:a:qs_project:qs:*:*:*:*:*:node.js:*:*

CVE-2026-2391 の参考情報

cvelogic Threat Intelligence