CVE-2026-114144
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 26 - wyżej niż 26% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Pojedynczy złośliwy dokument TOML może zablokować proces Node.js, uniemożliwiając obsługę współbieżnych żądań i powodując odmowę usługi.
Rekomendacja
Zaktualizuj bibliotekę toml-node do wersji 5.0.1 lub nowszej, która naprawia problem nadmiernego zużycia CPU przy konwersji długich liczb.
Inne podatności w toml-node
Zobacz wszystkie- 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-77465Wysokie
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.
- 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 5.0.1, toml.parse() passes unbounded hexadecimal, octal, binary, and decimal digit sequences from lib/parser.js to BigInt() before reduceInteger() in lib/compiler.js checks whether the resulting value fits the TOML 64-bit integer range. Converting a sufficiently long integer string consumes super-linear CPU time and synchronously blocks the Node.js event loop, allowing one attacker-supplied TOML document to deny service to concurrent work in the process. The later range check cannot prevent the conversion cost because it executes after BigInt(). This issue is fixed in version 5.0.1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

