CVE-2026-47712
NiskieCVSS 3.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 4 - wyżej niż 4% wszystkich znanych CVE
Streszczenie
Podatność w bibliotece Dulwich (wersje 0.24.0 do 1.2.4) pozwala na zapis pliku łatki poza zamierzonym katalogiem poprzez złośliwy temat commita. Funkcja format_patch używa tematu commita do utworzenia nazwy pliku, a brak sanityzacji znaków takich jak /, \, .. czy : umożliwia ścieżkę traversal.
Ocena ryzyka
Atakujący może umieścić plik łatki w dowolnym miejscu systemu plików, co może prowadzić do nadpisania krytycznych plików lub eskalacji uprawnień w środowisku korzystającym z Dulwich do przetwarzania commitów z niezaufanych źródeł.
Rekomendacja
Należy natychmiast zaktualizować bibliotekę Dulwich do wersji 1.2.5 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy stosować walidację ścieżki wyjściowej lub używać strumienia stdout zamiast zapisu do pliku.
Inne podatności w Dulwich
Zobacz wszystkie- CVE-2015-0838Wysokie
Przepełnienie bufora w funkcji apply_delta w implementacji C w pliku _pack.c w Dulwich przed wersją 0.9.9 umożliwia zdalnym atakującym wykonanie dowolnego kodu za pomocą spreparowanego pliku pakietu.
- CVE-2014-9706Wysokie
Funkcja build_index_from_tree w pliku index.py w Dulwich przed wersją 0.9.9 umożliwia zdalnym atakującym wykonanie dowolnego kodu poprzez commit z ścieżką katalogu zaczynającą się od .git/, co nie jest prawidłowo obsługiwane podczas wypisywania drzewa roboczego.
- CVE-2017-16228Krytyczne
Dulwich przed wersją 0.18.5, przy użyciu podprocesu SSH, pozwala zdalnym atakującym na wykonywanie dowolnych poleceń poprzez URL SSH z początkowym znakiem minus w nazwie hosta.
- CVE-2026-38974Średnie
W bibliotece Dulwich w wersji do 1.1.0 w pliku contrib/paramiko_vendor.py brakuje weryfikacji klucza hosta SSH. Oznacza to, że podczas połączeń SSH nie jest sprawdzane, czy klucz publiczny serwera jest zaufany.
- CVE-2026-52726Wysokie
Dulwich w wersjach od 0.23.2 do 1.2.5 nie waliduje ścieżek submodułów podczas klonowania z rekurencją. Atakujący może umieścić złośliwy plik .gitmodules i drzewo gitlink ze ścieżką .git/hooks, co prowadzi do zapisu plików do katalogu .git/hooks ofiary. Wykonywalne pliki są następnie uruchamiane przy każdym wywołaniu haka, co umożliwia zdalne wykonanie kodu.
- CVE-2026-47734Średnie
Podatność w bibliotece Dulwich (wersje 0.1.0 do 1.2.4) pozwala klientowi z dostępem do pusha na wysłanie spreparowanego, małego pakietu (ok. 174 bajtów), który deklaruje ogromny rozmiar w nagłówku delty. Podczas przetwarzania przez funkcję add_thin_pack/apply_delta dochodzi do alokacji setek MB pamięci, co może prowadzić do wyczerpania zasobów serwera.
- CVE-2026-42563Wysokie
Podatność w bibliotece Dulwich (wersje od 0.24.0 do 1.2.4) pozwala na zdalne wykonanie dowolnego kodu. Atakujący może umieścić złośliwą ścieżkę pliku w gałęzi GIT, która po scaleniu przez ofiarę jest wstawiana do polecenia scalającego przez symbol zastępczy %P i wykonywana z użyciem shell=True.
- CVE-2026-42305Wysokie
Podatność w bibliotece Dulwich (wersje 0.10.0 do 1.2.4) umożliwia zdalne wykonanie kodu poprzez dowolny zapis pliku podczas klonowania lub pobierania złośliwego repozytorium Git na systemie Windows. Problem wynika z nieprawidłowej walidacji nazw plików w elementach ścieżki, które mogą zawierać znaki interpretowane przez Windows jako strukturalna składnia ścieżki. Dodatkowo, ustawienia zabezpieczeń core.protectNTFS i core.protectHFS były ignorowane z powodu błędów konfiguracji.
Oryginalny opis (angielski, źródło NVD)
Dulwich is a pure-Python implementation of the Git file formats and protocols. Starting in version 0.24.0 and prior to version 1.2.5, dulwich.porcelain.format_patch(outdir=...) derives each patch filename from the commit's subject line. Prior to this fix, get_summary only replaced spaces with dashes - path separators (/, \), parent-directory components (..), and other filename-hostile characters (e.g. :) were preserved verbatim and passed straight into os.path.join(outdir, f"{i:04d}-{summary}.patch"). A malicious commit subject could therefore direct the generated patch file outside the requested outdir. This is fixed in Dulwich 1.2.5. Users should upgrade to 1.2.5 or later. dulwich.patch.get_summary now mirrors git's format_sanitized_subject: only `[A-Za-z0-9._]` are kept, runs of other characters collapse to a single -, consecutive . collapse to a single ., trailing ./- are stripped, and the result is length-limited. This makes the returned string safe to embed as a filename component, so format_patch can no longer be steered out of outdir via the commit subject. Until upgrading, callers that pass untrusted commits to porcelain.format_patch can use stdout=True and write the patch to a destination they control, rather than letting format_patch choose the filename; validate the chosen path before opening - e.g. compare os.path.realpath(returned_path) against os.path.realpath(outdir) and reject any patch whose resolved path is not inside outdir; and/or pre-screen commits and refuse to format any whose subject's first line contains /, \, .., or other characters that are not safe on the target filesystem.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

