Katalog CVE

CVE-2026-71429

ŚrednieCVSS 6.2
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.11%

Percentyl 2 - wyżej niż 2% wszystkich znanych CVE

Streszczenie

stream-json to mikro-biblioteka komponentów strumieniowych do przetwarzania JSON i JSONC, która przed wersją 3.5.0 w filtrach ścieżek pick, ignore, filter i replace w src/core/filters/filter-base.js przelicza pełny ciąg ścieżki ze stosu zagnieżdżenia dla każdego tokena podlegającego sprawdzeniu. Ponieważ długość stosu równa się bieżącej głębokości zagnieżdżenia, a token sprawdzany jest emitowany na każdym poziomie, dokument o głębokości D kosztuje O(D²) zamiast O(D). Problem jest wywoływany przez głębokość zagnieżdżenia, a nie objętość bajtów, więc aplikacja przesyłająca niezaufany JSON przez filtr string lub RegExp może zablokować pętlę zdarzeń Node.js i spowodować denial of service przy użyciu małego, głęboko zagnieżdżonego dokumentu. Streamery streamArray, streamObject i streamValues nie są dotknięte, ponieważ używają stałoczasowego gettera asm.depth. Problem naprawiono w wersji 3.5.0.

Ocena ryzyka

Atakujący może spowodować denial of service (DoS) poprzez zablokowanie pętli zdarzeń Node.js, co prowadzi do niedostępności aplikacji.

Rekomendacja

Zaleca się aktualizację biblioteki stream-json do wersji 3.5.0 lub nowszej, która zawiera poprawkę.

Inne podatności w stream-json

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

stream-json is a micro-library of stream components for processing JSON and JSONC with a minimal memory footprint. Prior to 3.5.0, the path filters pick, ignore, filter, and replace in src/core/filters/filter-base.js recompute the full path string from the nesting stack for every checkable token. Because the stack length equals the current nesting depth and a checkable token is emitted at every level, a depth D document costs O(D²) rather than O(D) to process. The issue is triggered by nesting depth rather than byte volume, including the documented pick({filter: 'data'}) traversal-until-match path, so an application that sends untrusted JSON through a string or RegExp filter can block the Node.js event loop and cause denial of service with a small deeply nested document. The streamArray, streamObject, and streamValues streamers are not affected because they use the constant-time asm.depth getter. This issue is fixed in version 3.5.0.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS