CVE-2025-15284 (CNNVD-202512-4908)

HIGH
中文标题:
ljharb qs 安全漏洞
英文标题:
arrayLimit bypass in bracket notation allows DoS via memory exhaustion
CVSS分数: 8.7
发布时间: 2025-12-29 22:56:45
漏洞类型: 其他
状态: PUBLISHED
数据质量分数: 0.40
数据版本: v3
漏洞描述
中文描述:

ljharb qs是美国Jordan Harband个人开发者的一个具有嵌套支持的查询字符串解析器。 ljharb qs 6.14.1之前版本存在安全漏洞,该漏洞源于输入验证不当,可能导致HTTP拒绝服务攻击。

英文描述:

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

CWE类型:
CWE-20
标签:
(暂无数据)
受影响产品
暂无受影响产品信息
解决方案
中文解决方案:
(暂无数据)
英文解决方案:
(暂无数据)
临时解决方案:
(暂无数据)
参考链接
无标题 vendor-advisory
cve.org
访问
无标题 patch
cve.org
访问
CVSS评分详情
4.0 (cna)
HIGH
8.7
CVSS向量: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
机密性
NONE
完整性
NONE
可用性
HIGH
后续系统影响 (Subsequent):
机密性
NONE
完整性
NONE
可用性
NONE
3.1 (cna)
HIGH
7.5
CVSS向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
机密性
NONE
完整性
NONE
可用性
HIGH
时间信息
发布时间:
2025-12-29 22:56:45
修改时间:
2025-12-30 15:57:41
创建时间:
2026-01-12 02:11:13
更新时间:
2026-01-20 03:10:44
利用信息
暂无可利用代码信息
数据源详情
数据源 记录ID 版本 提取时间
CVE cve_CVE-2025-15284 2025-12-31 03:16:23 2026-01-12 02:11:13
NVD nvd_CVE-2025-15284 2026-01-01 04:27:48 2026-01-12 02:27:33
CNNVD cnnvd_CNNVD-202512-4908 2026-01-11 06:15:06 2026-01-12 02:38:08
版本与语言
当前版本: v3
主要语言: EN
支持语言:
ZH EN
安全公告
暂无安全公告信息
变更历史
v3 CNNVD
2026-01-12 02:38:08
vulnerability_type: 未提取 → 其他; cnnvd_id: 未提取 → CNNVD-202512-4908; data_sources: ['cve', 'nvd'] → ['cnnvd', 'cve', 'nvd']
查看详细变更
  • vulnerability_type: 未提取 -> 其他
  • cnnvd_id: 未提取 -> CNNVD-202512-4908
  • data_sources: ['cve', 'nvd'] -> ['cnnvd', 'cve', 'nvd']
v2 NVD
2026-01-12 02:27:33
data_sources: ['cve'] → ['cve', 'nvd']
查看详细变更
  • data_sources: ['cve'] -> ['cve', 'nvd']