W bibliotece go-git w wersjach poprzedzających v5.11 odkryto krytyczną podatność typu path traversal, która pozwala atakującemu tworzyć i modyfikować pliki poza dozwolonym katalogiem. W najgorszym scenariuszu możliwe jest zdalne wykonanie kodu (RCE).
▸ Pokaż oryginał (EN)
A path traversal vulnerability was discovered in go-git versions prior to v5.11. This vulnerability allows an attacker to create and amend files across the filesystem. In the worse case scenario, remote code execution could be achieved. Applications are only affected if they are using the ChrootOS https://pkg.go.dev/github.com/go-git/go-billy/v5/osfs#ChrootOS , which is the default when using "Plain" versions of Open and Clone funcs (e.g. PlainClone). Applications using BoundOS https://pkg.go.dev/github.com/go-git/go-billy/v5/osfs#BoundOS or in-memory filesystems are not affected by this issue. This is a go-git implementation issue and does not affect the upstream git cli.
Podatność dotyczy implementacji systemu plików ChrootOS w bibliotece go-git, który stanowi domyślny mechanizm izolacji katalogów przy korzystaniu z funkcji 'Plain' — takich jak PlainClone czy PlainOpen. Atakujący może skonstruować specjalnie spreparowane repozytorium Git zawierające ścieżki plików wychodzące poza wyznaczony katalog (chroot), co umożliwia zapis plików w dowolnym miejscu systemu plików. Jest to błąd w implementacji go-git i nie dotyczy natywnego klienta git CLI.
Atakujący może tworzyć i nadpisywać dowolne pliki na systemie plików serwera lub klienta, co w konsekwencji może prowadzić do zdalnego wykonania kodu (RCE). Zagrożone są poufność, integralność oraz dostępność systemu.
Należy zaktualizować bibliotekę go-git do wersji v5.11 lub nowszej. Jako tymczasowe obejście można zastąpić użycie ChrootOS implementacją BoundOS lub systemem plików in-memory, które nie są podatne na ten problem.
Go-Git (projekt go-git) we wszystkich wersjach poprzedzających v5.11. Podatność dotyczy wyłącznie aplikacji korzystających z ChrootOS (domyślnie przy funkcjach PlainClone, PlainOpen itp.). Aplikacje używające BoundOS lub systemów plików in-memory nie są podatne.
Podatność dotyczy wyłącznie warstwy biblioteki go-git i nie ma wpływu na natywny klient git CLI. Aplikacje korzystające z BoundOS lub in-memory filesystems są bezpieczne.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HGo Git Project Go Git
APPGo-Git Project4.0.0 – 5.11.0 (bez)
Powiązane podatności
Argument injection w bibliotece go-git — dowolne flagi git-upload-pack
go-git is an extensible git implementation library written in pure Go. Prior to 5.19.0 and 6.0.0-alpha.3, go-g...
go-git is a highly extensible git implementation library written in pure Go. A denial of service (DoS) vulnera...
A denial of service (DoS) vulnerability was discovered in go-git versions prior to v5.11. This vulnerability a...
go-git is an extensible git implementation library written in pure Go. Prior to 5.19.1 and 6.0.0-alpha.4, a pa...