CVE-2026-63478
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 22 - wyżej niż 22% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Złośliwe repozytorium może doprowadzić do zapisu dowolnych plików poza katalogiem roboczym, a w konsekwencji do wykonania kodu na hoście. Stanowi to poważne ryzyko dla procesów CI/CD i środowisk deweloperskich.
Rekomendacja
Zaktualizuj isomorphic-git do wersji 1.38.6 lub nowszej. Unikaj klonowania i checkoutu z niezaufanych zdalnych repozytoriów oraz weryfikuj integralność źródeł.
Inne podatności w isomorphic-git
Zobacz wszystkie- CVE-2026-63476Średnie
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.
- 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's tree parser in src/models/GitTree.js accepts a standalone .. tree-entry name because it rejects only path separators. During clone or checkout from a malicious or man-in-the-middle-controlled non-GitHub remote, nested .. entries can escape the working-tree root and write files at attacker-selected parent paths on any host-backed fs provider. The arbitrary file write can overwrite startup or configuration files and lead to code execution. GitHub-hosted trees are not a direct source because GitHub rejects .. entries during repository integrity checks. This issue is fixed in version 1.38.6.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

