CVE-2026-114142
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 23 - wyżej niż 23% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wstrzyknąć właściwości do prototypu obiektów, co może prowadzić do zatrucia prototypu i nieprzewidzianego zachowania aplikacji, w tym potencjalnego wykonania kodu.
Rekomendacja
Zaktualizuj toml-node do wersji 5.0.1 lub nowszej i unikaj parsowania niezaufanych danych TOML w kontekstach o wysokich uprawnieniach.
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-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() can write attacker-controlled properties to Object.prototype because quoteDottedString() in lib/compiler.js produces the same bookkeeping string for distinct quoted key paths, allowing addTableArray() to clear another key's guard. The assign() path then descends through an unowned Date value without applying the owned-container check and can reach the prototype chain. Objects created elsewhere in the process can inherit the injected property. This issue is fixed in version 5.0.1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

