CVE-2026-73643
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 28 - wyżej niż 28% wszystkich znanych CVE
Streszczenie
js-yaml to parser i serializator YAML w JavaScript. Od wersji 5.0.0 do 5.2.2, parsowanie małego dokumentu YAML może zająć wykładniczy czas, gdy aplikacja wywołuje load() lub loadAll() na niezaufanych danych. W src/parser/parser.ts, readFlowCollection używa restoreState i wywołuje parseNode drugi raz, gdy wpis sekwencji przepływowej jest rozpoznawany jako para klucz: wartość. Jeśli klucz jest zagnieżdżoną sekwencją przepływową o tym samym kształcie, każdy poziom jest parsowany dwukrotnie, co powoduje pracę O(2^n) i pozwala wejściu poniżej 200 bajtów zająć jeden rdzeń CPU na minuty, blokować pętlę zdarzeń Node.js i zatrzymać proces. Nie są wymagane kotwice, aliasy, scalenia, tagi ani niestandardowe opcje. Problem naprawiono w wersji 5.2.2.
Ocena ryzyka
Atakujący może wysłać mały, specjalnie spreparowany dokument YAML, powodując przeciążenie CPU i zablokowanie aplikacji, co prowadzi do odmowy usługi.
Rekomendacja
Zaleca się aktualizację js-yaml do wersji 5.2.2 lub nowszej oraz ograniczenie przetwarzania niezaufanych danych YAML.
Inne podatności w js-yaml
Zobacz wszystkie- CVE-2026-84375Wysokie
js-yaml to parser i dumper YAML w JavaScript. Od wersji 3.0.0 do 3.15.2, 4.3.2 i 5.4.1, maxTotalMergeKeys w lib/js-yaml/loader.js i lib/loader.js nie liczy pustych źródeł map podczas przetwarzania klucza scalania <<. Atakujący może aliasować dużą sekwencję pustych map do wielu celów scalania, powodując przetwarzanie O(N * K), podczas gdy totalMergeKeys pozostaje niezmienione i skonfigurowany limit zasobów nigdy nie jest osiągany. Stosunkowo mały dokument YAML może powodować długotrwałe zużycie CPU w aplikacjach przetwarzających niezaufany YAML, a przetwarzanie scalania jest domyślnie włączone w tych liniach wydań. W wersjach v3 i v4 scalanie jest domyślnie włączone, więc wynik dotkliwości jest wyższy. Problem naprawiono w wersjach 3.15.2, 4.3.2 i 5.4.1.
- CVE-2026-59870Wysokie
js-yaml przed wersjami 3.15.1, 4.3.1 i 5.2.1 zawiera podatność na nadmierne zużycie procesora w obsłudze tagu !!omap w YAML11_SCHEMA. Funkcja omapTag.addItem() wykonuje liniowe skanowanie duplikatów kluczy przy każdej insercji, co powoduje zużycie CPU O(n^2) podczas parsowania spreparowanego dokumentu z mapą uporządkowaną. W wersjach 3 i 4 tag !!omap jest aktywny i domyślnie wykorzystywalny, w wersji 5 nie jest domyślnie używany.
- CVE-2026-59869Wysokie
Podatność w bibliotece js-yaml (JavaScript YAML parser i dumper) powoduje kwadratowy wzrost czasu CPU podczas przetwarzania dokumentów YAML zawierających łańcuch mapowań z kluczami scalania (merge keys). Problem występuje w wersjach od 3.0.0 do 3.14.0 oraz od 4.0.0 do 4.2.0.
- CVE-2026-59868Średnie
Podatność w bibliotece js-yaml (wersje od 5.0.0 do 5.2.0) powoduje kwadratowy wzrost czasu procesora podczas parsowania dokumentów YAML z włączonymi kluczami scalania. Łańcuch mapowań, gdzie każdy wpis scala poprzedni, prowadzi do nadmiernego obciążenia CPU.
- CVE-2026-53550Średnie
Podatność w bibliotece js-yaml (parser YAML dla JavaScript) przed wersjami 4.2.0 i 3.15.0 umożliwia atak DoS poprzez wysłanie spreparowanego dokumentu YAML, który powoduje kwadratową złożoność czasową podczas przetwarzania kluczy scalających (<<). Wielokrotne powtórzenie tego samego aliasu w sekwencji scalania prowadzi do wyczerpania mocy obliczeniowej procesora i zablokowania pętli zdarzeń Node.js na kilka sekund przy stosunkowo małym ładunku (kilkadziesiąt KB).
- CVE-2025-64718Średnie
js-yaml to parser i dumper YAML dla JavaScript. W js-yaml przed 4.1.1 i 3.14.2 atakujący może zmodyfikować prototyp wyniku parsowanego dokumentu YAML poprzez zanieczyszczenie prototypu (__proto__). Wszyscy użytkownicy parsujący niezaufane dokumenty YAML mogą być narażeni. Problem został naprawiony w js-yaml 4.1.1 i 3.14.2. Użytkownicy mogą chronić się przed tego typu atakiem na serwerze, używając node --disable-proto=delete lub deno (w Deno ochrona przed zanieczyszczeniem jest domyślnie włączona).
Oryginalny opis (angielski, źródło NVD)
js-yaml is a JavaScript YAML parser and dumper. From 5.0.0 until 5.2.2, parsing a small YAML document can take exponential time when an application calls load() or loadAll() on untrusted input. In src/parser/parser.ts, readFlowCollection uses restoreState and calls parseNode a second time when a flow-sequence entry is recognized as a key: value pair. If the key is a nested flow sequence of the same shape, every level is parsed twice, causing O(2^n) work and allowing an input under 200 bytes to keep one CPU busy for minutes, block the Node.js event loop, and stall the process. No anchors, aliases, merges, tags, or nondefault options are required. This issue is fixed in version 5.2.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

