CVE-2026-63476
ŚrednieCVSS 4.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 21 - wyżej niż 21% wszystkich znanych CVE
Streszczenie
isomorphic-git to czysto javascriptowa implementacja Git dla Node.js i przeglądarek. W wersjach przed 1.38.6 isomorphic-git odczytuje kontrolowany przez serwer parametr targetSize podczas stosowania delty packfile w src/utils/applyDelta.js i przekazuje go bez ograniczenia do Buffer.alloc(targetSize). Złośliwy lub kontrolowany przez atakującego pośrednika zdalny serwer może wysłać jeden nagłówek delty, który spowoduje, że git.clone() lub git.fetch() przydzieli około 2 GB pamięci przed walidacją rzeczywistego wyniku delty. GitPackIndex.fromPack pomija późniejszy błąd niezgodności rozmiaru, więc host z wystarczającą pamięcią może zachować marnotrawstwo zasobów bez widocznego błędu, podczas gdy kontenery, funkcje serverless i małe maszyny wirtualne mogą zostać zakończone. Limity sterty Node.js nie łagodzą przydziału poza stertą (off-heap) przez Buffer. Problem naprawiono w wersji 1.38.6.
Ocena ryzyka
Złośliwy serwer zdalny może wymusić nadmierną alokację pamięci, powodując wyczerpanie zasobów lub zakończenie procesów w kontenerach i środowiskach serverless. Może to prowadzić do odmowy usługi i zakłócenia działania pipeline'ów.
Rekomendacja
Zaktualizuj isomorphic-git do wersji 1.38.6 lub nowszej. Unikaj operacji clone i fetch z niezaufanych zdalnych repozytoriów oraz ustaw limity zasobów dla procesów.
Inne podatności w isomorphic-git
Zobacz wszystkie- CVE-2026-63478Średnie
isomorphic-git to czysto javascriptowa implementacja Git dla Node.js i przeglądarek. W wersjach przed 1.38.6 parser drzew w src/models/GitTree.js akceptuje samodzielną nazwę wpisu drzewa "..", ponieważ odrzuca tylko separatory ścieżek. Podczas klonowania lub checkoutu ze złośliwego lub kontrolowanego przez atakującego pośrednika zdalnego repozytorium (nie GitHub) zagnieżdżone wpisy ".." mogą wyjść poza katalog roboczy i zapisać pliki w wybranych przez atakującego ścieżkach nadrzędnych w dowolnym dostawcy systemu plików opartym na hoście. Zapis dowolnych plików może nadpisać pliki startowe lub konfiguracyjne i doprowadzić do wykonania kodu. Repozytoria hostowane na GitHub nie są bezpośrednim źródłem, ponieważ GitHub odrzuca wpisy ".." podczas kontroli integralności repozytorium. Problem naprawiono w wersji 1.38.6.
- CVE-2026-63475Średnie
isomorphic-git przed wersją 1.38.6 zapisuje na dysku cykliczne referencje symboliczne (symref) dostarczone przez serwer i rozwiązuje je bez limitu głębokości ani wykrywania cykli. Po sklonowaniu złośliwego lub przechwyconego repozytorium operacje takie jak log, status, checkout czy branch nie kończą się, co trwale unieruchamia repozytorium.
- CVE-2026-63395Wysokie
W isomorphic-git przed wersją 1.38.6 funkcja git.checkout zapisuje nowe ścieżki potomne przez symlinkowane katalogi nadrzędne bez ich sprawdzania. Złośliwe repozytorium może najpierw umieścić symlink katalogu, a następnie podmienić stan drzewa na plik potomny pod tą ścieżką, co przy Node fs na Linux lub macOS pozwala zapisywać pliki poza drzewem roboczym.
- CVE-2026-89011Wysokie
isomorphic-git w wersjach przed 1.42.0 zawiera podatność prototype pollution w funkcji getRemoteInfo. Złośliwy operator serwera Git może zanieczyścić Object.prototype, ogłaszając spreparowane nazwy ref zawierające segmenty ścieżki '__proto__' podczas negocjacji ref.
Oryginalny opis (angielski, źródło NVD)
isomorphic-git is a pure JavaScript implementation of Git for Node.js and browsers. Prior to 1.38.6, isomorphic-git reads a server-controlled targetSize while applying a packfile delta in src/utils/applyDelta.js and passes it without a bound to Buffer.alloc(targetSize). A malicious or man-in-the-middle-controlled remote can send one delta header that causes git.clone() or git.fetch() to allocate approximately 2 GB before validating the actual delta output. GitPackIndex.fromPack swallows the later size-mismatch error, so a host with sufficient memory may retain the resource waste without a visible failure, while containers, serverless functions, and small virtual machines may terminate. Node.js heap limits do not mitigate the off-heap Buffer allocation. This issue is fixed in version 1.38.6.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

