Biblioteka Immutable.js nieprawidłowo obsługuje indeksy i rozmiary z zakresu 2^30 do 2^31 w operacjach na strukturze List, co może doprowadzić do nieskończonej pętli lub nieograniczonej alokacji pamięci. Podatność jest groźna, ponieważ może zostać wywołana zdalnie bez uwierzytelnienia i prowadzi do niedostępności usługi (DoS).
▸ Pokaż oryginał (EN)
Immutable.js provides many Persistent Immutable data structures. Prior to 4.3.9 and 5.1.8, List#set, List#setSize, List#setIn, List#updateIn, and the functional set, setIn, and updateIn mishandle an index or size in the range 2 ** 30 to 2 ** 31 in setListBounds in src/List.js, causing an empty List to enter an uncatchable infinite loop, a populated List to allocate without bound until process abort, or setSize to silently wrap large values. This issue is fixed in versions 4.3.9 and 5.1.8.
Metody List#set, List#setSize, List#setIn, List#updateIn oraz ich funkcyjne odpowiedniki (set, setIn, updateIn) nieprawidłowo walidują wartości indeksów i rozmiarów w funkcji setListBounds w pliku src/List.js. Gdy przekazany indeks lub rozmiar mieści się w zakresie od 2^30 do 2^31, pusta lista (empty List) wchodzi w nieskończoną pętlę, której nie można przechwycić wyjątkiem (uncatchable infinite loop). W przypadku listy z danymi dochodzi do nieograniczonej alokacji pamięci aż do awaryjnego zakończenia procesu. Dodatkowo metoda setSize cicho zawija (wraps) duże wartości, co prowadzi do nieprzewidywalnego zachowania.
Atakujący może spowodować całkowite zawieszenie procesu Node.js lub innego środowiska uruchomieniowego przez wywołanie nieskończonej pętli albo wyczerpanie dostępnej pamięci, co skutkuje awaryjnym zakończeniem aplikacji (DoS). Poufność i integralność danych nie są bezpośrednio zagrożone.
Należy zaktualizować bibliotekę Immutable.js do wersji 4.3.9 (dla gałęzi 4.x) lub 5.1.8 (dla gałęzi 5.x), w których problem został naprawiony. Szczegóły dostępne w oficjalnych notach wydania na GitHub oraz w komunikacie bezpieczeństwa GHSA-v56q-mh7h-f735.
Immutable.js (pakiet immutable) w wersjach wcześniejszych niż 4.3.9 (gałąź 4.x) oraz wcześniejszych niż 5.1.8 (gałąź 5.x).
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XImmutable Js Immutable
APPImmutable-Js< 4.3.95.0.0 – 5.1.8 (bez)