CVE-2026-47734
ŚrednieCVSS 5.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 9 - wyżej niż 9% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący z uprawnieniami do pusha może spowodować denial of service (DoS) poprzez nadmierne zużycie pamięci, potencjalnie destabilizując lub wyłączając serwer Git oparty na Dulwich.
Rekomendacja
Należy niezwłocznie zaktualizować Dulwich do wersji 1.2.5 lub nowszej oraz skonfigurować parametr receive.maxInputSize w repozytorium serwera, aby ograniczyć maksymalny rozmiar przesyłanego pakietu.
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-47712Niskie
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.
- 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.1.0 and prior to version 1.2.5, a client with push access could push a tiny crafted thin pack (~174 bytes) whose delta header declares a huge dest_size. When dulwich ingested it via add_thin_pack / apply_delta, it would allocate hundreds of MB of memory based on that attacker-controlled size, with no relationship to the actual bytes received. Operators running a Dulwich-based Git server that exposes git-receive-pack (i.e. accepts pushes) - for example via dulwich.server functionality, the HTTP smart server, or anything built on ReceivePackHandler - are impacted. The issue is patched in 1.2.5. add_thin_pack now accepts a max_input_size keyword (bytes; 0/None = unlimited, matching git's semantics), and ReceivePackHandler reads receive.maxInputSize from the repository config and passes it through. Wire reads are counted and a PackInputTooLarge exception is raised once the cap is exceeded - equivalent to git index-pack --max-input-size. Users should upgrade to Dulwich 1.2.5 or later and set receive.maxInputSize in their server's repository config to a sane bound for their environment. On unpatched versions, receive.maxInputSize has no effect, so it cannot be used as a workaround. Until upgrading, operators should restrict dulwich-receive-pack (push) access to trusted, authenticated clients only, or disable it entirely on servers that only need to serve fetches and/or run the server under an OS-level memory limit (e.g. ulimit, cgroups/MemoryMax, or a container memory limit) so a malicious push is killed rather than taking down the host.

