CVE-2026-77465
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 29 - wyżej niż 29% wszystkich znanych CVE
Streszczenie
toml-node to parser TOML dla Node.js i przeglądarki. Przed wersją 4.2.0 funkcja toml.parse() używa wygenerowanego przez Peggy 5.1.0 rekurencyjnego parsera w lib/parser.js, którego funkcje peg$parsevalue, peg$parsearray i peg$parseinline_table_entry rekurencyjnie przetwarzają zagnieżdżone tablice i tabele inline bez limitu głębokości. Zdalny nieuwierzytelniony atakujący, którego aplikacja parsuje kontrolowany dokument TOML zawierający kilka tysięcy zagnieżdżonych tablic lub tabel inline, może wyczerpać stos wywołań Node.js, wywołać nieoczekiwany błąd RangeError zamiast SyntaxError parsera i przerwać działanie niechronionego procesu roboczego lub procesu. Odpowiedni plik gramatyki to src/toml.pegjs, gdzie wygenerowany parser musi być ograniczony. Problem naprawiono w wersji 4.2.0.
Ocena ryzyka
Ryzyko obejmuje możliwość wyczerpania stosu wywołań, co może prowadzić do awarii procesu i odmowy usługi (DoS) w aplikacjach przetwarzających niezaufane dokumenty TOML.
Rekomendacja
Zaleca się natychmiastową aktualizację toml-node do wersji 4.2.0 lub nowszej, która wprowadza ograniczenia głębokości rekurencji.
Inne podatności w toml-node
Zobacz wszystkie- CVE-2026-114144Wysokie
toml-node to parser TOML dla Node.js i przeglądarek. W wersjach przed 5.0.1 funkcja toml.parse() przekazuje nieograniczone sekwencje cyfr szesnastkowych, ósemkowych, binarnych i dziesiętnych do BigInt() przed sprawdzeniem zakresu 64-bitowego, co pozwala na atak typu denial of service poprzez synchroniczne zablokowanie pętli zdarzeń Node.js.
- CVE-2026-114143Wysokie
toml-node to parser TOML dla Node.js i przeglądarki. Przed wersją 5.0.1 funkcja toml.parse() wielokrotnie dzieli i łączy każdy prefiks ścieżki w lib/compiler.js podczas przetwarzania długich kluczy kropkowych, nagłówków tabel, nagłówków tablic tabel i kluczy tabel inline w assign(), deepRef() i setNestedKey(). Powstała praca kwadratowa może zablokować pętlę zdarzeń Node.js na kilka sekund, a wystarczająco długie ścieżki mogą zakończyć proces z powodu wyczerpania pamięci.
- CVE-2026-114142Wysokie
toml-node to parser TOML dla Node.js i przeglądarki. Przed wersją 5.0.1 funkcja toml.parse() może zapisywać kontrolowane przez atakującego właściwości do Object.prototype, ponieważ quoteDottedString() w lib/compiler.js tworzy ten sam ciąg księgowania dla różnych ścieżek kluczy w cudzysłowach, co pozwala addTableArray() wyczyścić zabezpieczenie innego klucza. Ścieżka assign() schodzi następnie przez nieposiadaną wartość Date bez zastosowania sprawdzenia posiadanego kontenera i może dotrzeć do łańcucha prototypów. Obiekty utworzone w innym miejscu procesu mogą odziedziczyć wstrzykniętą właściwość. Podatność naprawiono w wersji 5.0.1.
- CVE-2026-114141Wysokie
toml-node to parser TOML dla Node.js i przeglądarki. Przed wersją 5.0.1 funkcja addTableArray() w lib/compiler.js ponownie skanuje kompletne zestawy księgowe assignedPaths i valueAssignments dla każdego nagłówka tablicy tabel. Różne ścieżki [[name]] nie są przycinane, więc dokument z wieloma takimi nagłówkami powoduje kwadratową pracę synchroniczną i może zablokować pętlę zdarzeń Node.js, odmawiając usługi innym operacjom w procesie.
- CVE-2026-63376Wysokie
toml-node to parser TOML dla Node.js i przeglądarki. Przed wersją 4.1.2 funkcja toml.parse() w lib/compiler.js może zostać oszukana przez ścieżkę tabeli taką jak a.b.y.__proto__.__proto__, umożliwiając przejście od wartości skalarnej do Number.prototype i Object.prototype. Wartość śledzenia currentPath używa zarówno tablic, jak i ciągów znaków, więc valueAssignments rejestruje ścieżkę połączoną przecinkami, taką jak a,b.y, podczas gdy deepRef sprawdza ścieżkę połączoną kropkami a.b.y, co pozwala na ominięcie zabezpieczenia przed duplikatami kluczy i zapisanie kluczy kontrolowanych przez atakującego do Object.prototype. Ścieżka czyszcząca prefiks tablicy w addTableArray może również wymazać stan zabezpieczeń przed tą samą trawersacją __proto__. Wstrzyknięte właściwości stają się widoczne w całym procesie Node.js i mogą powodować odmowę usługi, obejście logiki lub autoryzacji, lub wykonanie kodu, gdy aplikacja zawiera odpowiedni gadżet. Problem naprawiono w wersji 4.1.2.
Oryginalny opis (angielski, źródło NVD)
toml-node is a TOML parser for Node.js and the browser. Prior to 4.2.0, toml.parse() uses a Peggy 5.1.0 generated recursive-descent parser in lib/parser.js whose peg$parsevalue, peg$parsearray, and peg$parseinline_table_entry functions recurse through nested arrays and inline tables without a depth limit. A remote unauthenticated application parsing an attacker-controlled TOML document containing a few thousand nested arrays or inline tables can exhaust the Node.js call stack, raise an unexpected RangeError rather than the parser's SyntaxError, and terminate an unprotected request worker or process. The corresponding grammar source is src/toml.pegjs, where the generated parser must be bounded. This issue is fixed in version 4.2.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

