Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en minimatch (CVE-2026-27903)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
26/02/2026
Última modificación:
27/02/2026

Descripción

minimatch es una utilidad de coincidencia mínima para convertir expresiones glob en objetos RegExp de JavaScript. Antes de las versiones 10.2.3, 9.0.7, 8.0.6, 7.4.8, 6.2.2, 5.1.8, 4.2.5 y 3.1.3, 'matchOne()' realiza un retroceso recursivo ilimitado cuando un patrón glob contiene múltiples segmentos '**' (GLOBSTAR) no adyacentes y la ruta de entrada no coincide. La complejidad temporal es O(C(n, k)) -- binomial -- donde 'n' es el número de segmentos de ruta y 'k' es el número de globstars. Con k=11 y n=30, una llamada a la API predeterminada de 'minimatch()' se detiene durante aproximadamente 5 segundos. Con k=13, supera los 15 segundos. No existe memoización ni presupuesto de llamadas para limitar este comportamiento. Cualquier aplicación donde un atacante pueda influir en el patrón glob pasado a 'minimatch()' es vulnerable. La superficie de ataque realista incluye herramientas de compilación y ejecutores de tareas que aceptan argumentos glob proporcionados por el usuario (configuración de ESLint, Webpack, Rollup), sistemas multi-inquilino donde un inquilino configura reglas basadas en glob que se ejecutan en un proceso compartido, interfaces de administrador o desarrollador que aceptan configuración de reglas de ignorar o de filtro como globs, y pipelines de CI/CD que evalúan archivos de configuración enviados por el usuario que contienen patrones glob. Un atacante que pueda colocar un patrón diseñado en cualquiera de estas rutas puede detener el bucle de eventos de Node.js durante decenas de segundos por invocación. El patrón es de 56 bytes para una detención de 5 segundos y no requiere autenticación en contextos donde la entrada del patrón es parte de la característica. Las versiones 10.2.3, 9.0.7, 8.0.6, 7.4.8, 6.2.2, 5.1.8, 4.2.5 y 3.1.3 solucionan el problema.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:* 3.1.3 (excluyendo)
cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:* 4.0.0 (incluyendo) 4.2.5 (excluyendo)
cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:* 5.0.0 (incluyendo) 5.1.8 (excluyendo)
cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:* 6.0.0 (incluyendo) 6.2.2 (excluyendo)
cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:* 7.0.0 (incluyendo) 7.4.8 (excluyendo)
cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:* 8.0.0 (incluyendo) 8.0.6 (excluyendo)
cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:* 9.0.0 (incluyendo) 9.0.7 (excluyendo)
cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:* 10.0.0 (incluyendo) 10.2.3 (excluyendo)


Referencias a soluciones, herramientas e información