CVE-2026-114102
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 21 - wyżej niż 21% wszystkich znanych CVE
Streszczenie
adm-zip w wersjach przed 0.6.1 zawiera podatność typu denial of service, która pozwala nieuwierzytelnionym atakującym na zawieszenie procesu Node.js poprzez złośliwy plik ZIP, ponieważ inflateAsync w methods/inflater.js nie ma nasłuchiwacza błędów strumienia zlib. Atakujący może dostarczyć ZIP z uszkodzonymi danymi DEFLATE przetwarzanymi przez readFileAsync, readAsTextAsync, extractAllToAsync lub getDataAsync, wywołując nieprzechwytywany wyjątek, który kończy wszystkie żądania w toku.
Ocena ryzyka
Atakujący może zdalnie wywołać awarię aplikacji Node.js, powodując niedostępność usługi i przerwanie bieżących operacji. Może to prowadzić do utraty danych i zakłóceń w działalności.
Rekomendacja
Zaktualizuj bibliotekę adm-zip do wersji 0.6.1 lub nowszej. Rozważ dodanie mechanizmów walidacji plików ZIP przed przetwarzaniem.
Inne podatności w adm-zip
Zobacz wszystkie- CVE-2026-114105Średnie
W bibliotece adm-zip przed wersją 0.6.1 występuje podatność nieprawidłowego przypisania uprawnień, umożliwiająca ustawienie bitów setuid, setgid lub sticky na rozpakowywanych plikach, gdy włączona jest opcja keepOriginalPermission. Złośliwe atrybuty zewnętrzne zip są przekazywane bez maskowania do chmod.
- CVE-2026-114104Średnie
W bibliotece adm-zip przed wersją 0.6.1 występuje podatność niespójnego rozwiązywania wpisów, umożliwiająca obejście walidacji zawartości poprzez dostarczenie archiwów ZIP z zduplikowanymi nazwami wpisów. getEntry() zwraca ostatni duplikat, podczas gdy extractAllTo() zapisuje pierwszy.
- CVE-2026-114103Średnie
Biblioteka adm-zip w wersji 0.6.0 zawiera obejście zabezpieczenia przed bombą dekompresyjną. Atakujący mogą ominąć limit maxOutputLength, wykorzystując asynchroniczną ścieżkę getDataAsync() w methods/inflater.js i tworząc wpisy ZIP ze zafałszowanymi małymi rozmiarami oraz wysoce skompresowanymi danymi DEFLATE.
- CVE-2026-102282Wysokie
Biblioteka adm-zip przed wersją 0.6.1 stosuje uniksowe bity uprawnień z wpisu ZIP bezpośrednio do rozpakowanego pliku przez fs.chmodSync(), gdy keepOriginalPermission=true jest przekazane do extractAllTo()/extractEntryTo() — i nigdy nie filtruje bitów setuid/setgid/sticky. Złośliwy ZIP może utworzyć plik wykonywalny z mode 04755, co przy rozpakowywaniu jako root prowadzi do wykonania kodu atakującego z uprawnieniami roota.
- CVE-2026-77301Wysokie
Podatność w bibliotece adm-zip (JavaScript) przed wersją 0.6.1 dotyczy funkcji getData() w zipEntry.js, która ufa rozmiarowi nieskompresowanemu z centralnego katalogu i alokuje pamięć przed walidacją. Mały spreparowany plik ZIP może deklarować wielogigabajtowy rozmiar, powodując nadmierne zużycie pamięci przed zgłoszeniem błędu CRC. Aplikacje czytające wpisy z niezaufanych archiwów mogą zostać przerwane przez system lub doświadczyć wyczerpania pamięci.
- CVE-2026-92000Wysokie
adm-zip w wersjach od 0.5.14 do 0.6.0 nie stosuje limitów wyjścia dekompresji zlib, gdy wpisy ZIP deklarują zerowy rozmiar nieskompresowany. Atakujący mogą stworzyć złośliwe archiwa ZIP z wysoce kompresowalnymi wpisami deklarującymi zerowy rozmiar, co prowadzi do wyczerpania pamięci i odmowy usługi.
- CVE-2026-76845Średnie
adm-zip w wersjach 0.5.9 do 0.6.0 podąża za dowiązaniami symbolicznymi w miejscu wyodrębniania. Funkcja Utils.sanitize sprawdza tylko formę stringową nazwy wpisu archiwum, a Utils.writeFileTo otwiera ścieżkę docelową bez użycia O_NOFOLLOW ani wcześniejszego sprawdzenia fs.lstatSync. Jeśli składnik ścieżki w miejscu docelowym istnieje jako dowiązanie symboliczne wskazujące poza katalog wyodrębniania, extractAllTo, extractAllToAsync i extractEntryTo zapisują zawartość wpisu przez to dowiązanie, a następnie zmieniają jego cel, umieszczając zawartość kontrolowaną przez atakującego w pliku poza katalogiem. Osiągnięcie zapisu wymaga włączenia opcji overwrite, ponieważ poprzednie sprawdzenie fs.existsSync również rozwiązuje dowiązanie i w przeciwnym razie odmawia.
- CVE-2026-39244Wysokie
Biblioteka adm-zip przed wersją 0.5.18 jest podatna na atak typu odmowa usługi (DoS) poprzez spreparowany plik ZIP z manipulowanym polem rozmiaru nieskompresowanego. Atakujący może utworzyć mały plik ZIP (ok. 120 bajtów) deklarujący rozmiar nieskompresowany na poziomie 4 GB, co prowadzi do alokacji pamięci o amplifikacji ponad 33 milionów do 1, powodując awarię procesu.
Oryginalny opis (angielski, źródło NVD)
adm-zip before 0.6.1 contains a denial of service vulnerability that allows unauthenticated attackers to crash the Node.js process via a malformed ZIP file, because inflateAsync in methods/inflater.js lacks a zlib stream error listener. Attackers can supply a ZIP with corrupted DEFLATE data processed by readFileAsync, readAsTextAsync, extractAllToAsync, or getDataAsync, triggering an uncatchable exception that terminates all in-flight requests.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

