CVE-2026-63386
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 27 - wyżej niż 27% wszystkich znanych CVE
Streszczenie
js-toml to parser TOML dla JavaScriptu. W wersjach przed 1.1.3 funkcja load() nie ogranicza głębokości zagnieżdżenia ani kluczy kropkowanych w parserze rekurencyjnym, przez co głęboko zagnieżdżone tablice, tabele inline lub długie klucze kropkowane mogą wyczerpać stos wywołań V8 i zgłosić surowy RangeError zamiast udokumentowanego SyntaxParseError. Aplikacje parsujące dane TOML kontrolowane przez atakującego i obsługujące tylko SyntaxParseError mogą przerzucić nieoczekiwany wyjątek, co może zakończyć proces roboczy i spowodować odmowę usługi. Problem nie wpływa na poufność ani integralność i został naprawiony w wersji 1.1.3.
Ocena ryzyka
Atakujący może dostarczyć spreparowany TOML, który wyczerpie stos i zakończy proces roboczy, powodując odmowę usługi. Ryzyko dotyczy aplikacji parsujących niezaufane dane TOML i obsługujących wyłącznie SyntaxParseError.
Rekomendacja
Zaktualizuj js-toml do wersji 1.1.3 lub nowszej oraz rozszerz obsługę wyjątków o RangeError i inne nieoczekiwane błędy.
Inne podatności w js-toml
Zobacz wszystkie- CVE-2026-50029Średnie
js-toml, parser TOML dla JavaScript, przed wersją 1.1.2 zawiera podatność polegającą na nieprawidłowym sprawdzaniu duplikatów kluczy. Zamiast sprawdzać `if (key in object)`, używa `if (object[key])`, co powoduje, że gdy poprzednia wartość jest fałszywa (np. `false`, `0`, `""`), duplikat klucza jest pomijany i wartość jest nadpisywana. Prowadzi to do pomieszania typów strukturalnych w zwracanym obiekcie.
- CVE-2026-49293Wysokie
Parser js-toml w wersjach do 1.1.1 włącznie przetwarza literały całkowite szesnastkowe/ósemkowe/binarnie w pętli o złożoności O(n²), bez limitu długości literału. Pojedynczy dokument TOML z ok. 500 kB literałem szesnastkowym zajmuje jeden rdzeń CPU na ok. 40 sekund, umożliwiając atak wyczerpania zasobów (DoS).
Oryginalny opis (angielski, źródło NVD)
js-toml is a TOML parser for JavaScript. Prior to 1.1.3, load() does not bound nesting or dotted-key depth in the recursive parser at src/load/parser.ts or the interpreter at src/load/interpreter.ts, so deeply nested arrays, deeply nested inline tables, or long dotted keys can exhaust the V8 call stack and throw a raw RangeError instead of the documented SyntaxParseError. Applications that parse attacker-controlled TOML and handle only SyntaxParseError can rethrow the unexpected exception, which can terminate a worker or process and cause denial of service. The exception is synchronous and catchable by consumers that handle all exceptions, and the issue does not affect confidentiality or integrity. This issue is fixed in version 1.1.3.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

