ljharb qs hasta 6.14.1 lib/parse.js denegación de servicio

CVSS Puntuación meta temporalPrecio actual del exploit (≈)Puntuación de interés CTI
4.9$0-$5k0.00

Resumeninformación

Una vulnerabilidad clasificada como problemática ha sido encontrada en ljharb qs hasta 6.14.1. Está afectada una función desconocida en la librería lib/parse.js. Mediante la manipulación de un input desconocido se causa una vulnerabilidad de clase denegación de servicio. Esta vulnerabilidad está identificada como CVE-2026-2391. El ataque puede realizarse a distancia. Ningún exploit está disponible. Es recomendable actualizar el componente afectado.

Detallesinformación

Una vulnerabilidad ha sido encontrada en ljharb qs hasta 6.14.1 y clasificada como problemática. Una función desconocida en la biblioteca lib/parse.js es afectada por esta vulnerabilidad. A través de la manipulación de un input desconocido se causa una vulnerabilidad de clase denegación de servicio. Esto tiene repercusión sobre la la disponibilidad. CVE resume:

### Resumen La opción `arrayLimit` en qs no aplica límites para valores separados por comas cuando `comma: true` está habilitado, permitiendo a los atacantes causar denegación de servicio a través del agotamiento de memoria. Esto es un bypass de la aplicación del límite de array, similar al bypass de notación de corchetes abordado en GHSA-6rw7-vpxm-498p (CVE-2025-15284). ### Detalles Cuando la opción `comma` se establece en `true` (no es el valor predeterminado, pero es configurable en las aplicaciones), qs permite analizar cadenas separadas por comas como arrays (por ejemplo, `?param=a,b,c` se convierte en `['a', 'b', 'c']`). Sin embargo, la verificación de límite para `arrayLimit` (predeterminado: 20) y la opción throwOnLimitExceeded ocurren después de la lógica de manejo de comas en `parseArrayValue`, lo que permite un bypass. Esto permite la creación de arrays arbitrariamente grandes a partir de un solo parámetro, lo que lleva a una asignación excesiva de memoria. Código vulnerable (lib/parse.js: líneas ~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; ``` El `split(',')` devuelve el array inmediatamente, omitiendo la verificación de límite subsiguiente. La fusión posterior a través de `utils.combine` no evita la asignación, incluso si marca desbordamientos para arrays dispersos. Esta discrepancia permite a los atacantes enviar un solo parámetro con millones de comas (por ejemplo, `?param=,,,,,,,,...`), asignando arrays masivos en memoria sin activar los límites. Bypassea la intención de `arrayLimit`, que se aplica correctamente para las notaciones indexadas (`a[0]=`) y de corchetes (`a[]=`) (esta última corregida en v6.14.1 según GHSA-6rw7-vpxm-498p). ### PoC Prueba 1 - Bypass básico: ``` 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 } ``` Configuración: - `comma: true` - `arrayLimit: 5` - `throwOnLimitExceeded: true` Esperado: Lanza el error 'Array limit exceeded'. Real: Analiza con éxito, creando un array de longitud 26. ### Impacto Denegación de Servicio (DoS) a través del agotamiento de memoria.

El advisory puede ser descargado de github.com. La vulnerabilidad es identificada como CVE-2026-2391. Se considera difícil de explotar. El ataque puede ser realizado a través de la red. La explotación no requiere ninguna forma de autentificación. Hay detalles técnicos conocidos, pero no se dispone de un exploit.

Para el scanner Nessus se dispone de un plugin ID 298899 (Linux Distros Unpatched Vulnerability : CVE-2026-2391), que puede ayudar a determinar la existencia del riesgo analizado.

Una actualización a la versión 6.14.1 elimina esta vulnerabilidad.

La vulnerabilidad también está documentado en las bases de datos CNNVD (CNNVD-202602-2144) y Tenable (298899). If you want to get best quality of vulnerability data, you may have to visit VulDB.

Productoinformación

Proveedor

Nombre

Versión

Sitio web

CPE 2.3información

CPE 2.2información

CVSSv4información

VulDB Vector: 🔒
VulDB Confiabilidad: 🔍

CNA CVSS-B Score: 🔒
CNA CVSS-BT Score: 🔒
CNA Vector: 🔒

CVSSv3información

VulDB Puntuación meta base: 5.0
VulDB Puntuación meta temporal: 4.9

VulDB Puntuación base: 3.7
VulDB Puntuación temporal: 3.6
VulDB Vector: 🔒
VulDB Confiabilidad: 🔍

NVD Puntuación base: 7.5
NVD Vector: 🔒

CNA Puntuación base: 3.7
CNA Vector (harborist): 🔒

CVSSv2información

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VectorComplejidadAutenticaciónConfidencialidadIntegridadDisponibilidad
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear

VulDB Puntuación base: 🔒
VulDB Puntuación temporal: 🔒
VulDB Confiabilidad: 🔍

Explotacióninformación

Clase: Denegación de servicio
CWE: CWE-404
CAPEC: 🔒
ATT&CK: 🔒

Físico: No
Local: No
Remoto: Sí

Disponibilidad: 🔒
Estado: No está definido

EPSS Score: 🔒
EPSS Percentile: 🔒

Predicción de precios: 🔍
Estimación del precio actual: 🔒

0-DayDesbloquearDesbloquearDesbloquearDesbloquear
HoyDesbloquearDesbloquearDesbloquearDesbloquear

Nessus ID: 298899
Nessus Nombre: Linux Distros Unpatched Vulnerability : CVE-2026-2391

Inteligencia de amenazasinformación

Interés: 🔍
Actores activos: 🔍
Grupos APT activos: 🔍

Contramedidasinformación

Recomendación: Actualización
Estado: 🔍

Hora de 0 días: 🔒

Actualización: qs 6.14.1

Línea de tiempoinformación

2026-02-12 Aviso publicado
2026-02-12 +0 días CVE asignado
2026-02-12 +0 días Entrada de VulDB creada
2026-02-26 +14 días Última actualización de VulDB

Fuentesinformación

Producto: github.com

Aviso: github.com
Estado: Confirmado

CVE: CVE-2026-2391 (🔒)
GCVE (CVE): GCVE-0-2026-2391
GCVE (VulDB): GCVE-100-345666
CNNVD: CNNVD-202602-2144 - qs 安全漏洞

Artículoinformación

Fecha de creación: 2026-02-12 06:20
Actualizado: 2026-02-26 20:21
Cambios: 2026-02-12 06:20 (76), 2026-02-13 15:54 (7), 2026-02-15 03:16 (2), 2026-02-26 20:21 (12)
Completo: 🔍
Cache ID: 216::103

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Discusión

Sin comentarios aún. Idiomas: es + pt + en.

Por favor, inicie sesión para comentar.

Want to know what is going to be exploited?

We predict KEV entries!