CVE-2026-63376
WysokieCVSS 8.2Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 32 - wyżej niż 32% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ryzyko obejmuje możliwość zanieczyszczenia prototypów obiektów, co może prowadzić do odmowy usługi, obejścia zabezpieczeń lub zdalnego wykonania kodu w aplikacjach przetwarzających niezaufane dokumenty TOML.
Rekomendacja
Zaleca się natychmiastową aktualizację toml-node do wersji 4.1.2 lub nowszej, która naprawia problem z trawersacją __proto__.
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-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.
Oryginalny opis (angielski, źródło NVD)
toml-node is a TOML parser for Node.js and the browser. Prior to 4.1.2, toml.parse() in lib/compiler.js can be tricked by a table path such as a.b.y.__proto__.__proto__, allowing traversal from a scalar value into Number.prototype and Object.prototype. The currentPath tracking value uses both arrays and strings, so valueAssignments records a comma-joined path such as a,b.y while deepRef checks the dot-joined path a.b.y, allowing the duplicate-key guard to miss and attacker-controlled keys to be written to Object.prototype. A table-array prefix-clearing path in addTableArray can also erase guard state before the same __proto__ traversal. Injected properties become visible throughout the Node.js process and can cause denial of service, logic or authorization bypass, or code execution when an application contains a suitable gadget. This issue is fixed in version 4.1.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

