CVE-2026-8723CVE-2026-8723是广泛使用的Node.js查询字符串解析库`qs`中发现的一个拒绝服务漏洞。在受影响的版本范围(6.11.1至6.15.2之前)中,当应用程序调用`qs.stringify`方法,并同时配置`arrayFormat: 'comma'`和`encodeValuesOnly: true`这两个非默认选项时,如果处理的对象数组中包含`null`或`undefined`元素,将导致程序抛出同步的`TypeError`异常。这种异常未被捕获,会中断正常的请求处理流程,导致Web服务返回500错误或在特定场景下崩溃,从而造成拒绝服务攻击。
该漏洞的技术根源位于`lib/stringify.js`文件的第145行。在处理特定格式的数组时,代码逻辑调用了`utils.maybeMap(obj, encoder)`来对数组元素进行预处理。然而,底层的`utils.encode`函数(位于`lib/utils.js:195`)在尝试读取字符串长度属性`str.length`之前,未对输入参数进行空值校验。因此,当传入`null`或`undefined`时,JavaScript运行时会立即抛出类型错误。值得注意的是,库本应具备的`skipNulls`和`strictNullHandling`防御机制位于该映射操作之后的循环逻辑中,导致它们在此次攻击路径下完全失效。修复方案是在映射函数中增加空值判断,直接透传`null`和`undefined`。攻击者可以通过发送包含恶意构造的JSON数据的HTTP请求来触发此漏洞,致使服务端处理线程异常终止,影响服务的可用性。