Wysoka

js-yaml: Exponential parsing time in flow collections leads to denial of service

  • Ujawniono: 24.07.2026
  • Aktualizacja: 11.10.2026 10:22

Summary

Parsing a small YAML document can take exponential time. An application that calls load() or loadAll() on untrusted input can be hung by a payload under 200 bytes.

Details

When an entry in a flow sequence turns out to be a key: value pair, the parser rewinds and parses that entry a second time as the key. If the key is itself a nested flow sequence of the same shape, every level is parsed twice, so the total work is O(2^n) in the nesting depth. The default maxDepth of 100 does not help, because the time is already unmanageable at about 30 to 40 levels.

Root cause, potentially the: readFlowCollection in parser.ts, the restoreState followed by a second parseNode further down.

PoC

js
const yaml = require('js-yaml')
const n = 30
yaml.load('[ '.repeat(n) + '1' + ' ]: 0'.repeat(n))

With default options: 22 levels takes about 1 second, 26 levels about 17 seconds, 30 levels over 2 minutes. The input stays under 200 bytes and grows linearly with n.

Impact

Denial of service. A single small request can keep one CPU busy for minutes or longer and blocks the Node event loop, so one request can stall the whole process. No anchors, aliases, merges, tags, or non default options are required, and it reproduces on the default schema.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm js-yaml >= 5.0.0, < 5.2.2 5.2.2

Odnośniki

Ocena CVSS 7.5/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Słabość (CWE)
CWE-407
Platforma
npm
Paczka
js-yaml
Ujawniono
24.07.2026
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-pm4m-ph32-ghv5 - CC BY 4.0

Historia podatności: js-yaml

Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (12) w archiwum
Wszystkich wpisów
12
Pierwsza → ostatnia
10.2017 09.2026
Bez poprawki
0
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 1
  • Wysoka 5
  • Średnia 6

Ujawnienia w latach

  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
Istotność:
  1. Wysoka · 7.5 CVE-2026-84375 >= 4.0.0, < 4.3.2, >= 3.0.0, < 3.15.2 4.3.2, 3.15.2
  2. Wysoka · 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. js-yaml: Exponential parsing time in flow collections leads to denial of service ten wpis
    Wysoka · 7.5 CVE-2026-73643 >= 5.0.0, < 5.2.2 5.2.2
  4. Wysoka · 7.5 CVE-2026-59869 >= 3.0.0, < 3.15.0, >= 4.0.0, < 4.3.0 3.15.0, 4.3.0
  5. Wysoka ghsa-8j8c-7jfh-h6hx < 3.13.1 3.13.1
  6. Krytyczna CVE-2013-4660 < 2.0.5 2.0.5

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.