ispravke distribuiranog sustava verzioniranja Gita 2.24.1, 2.23.1, 2.22.2, 2.21.1, 2.20.2, 2.19.3, 2.18.2, 2.17.3, 2.16.6, 2.15.4 i 2.14.6. U verzijama 2.24.1 ispravljene su ranjivosti koje omogućuju napadaču da prepisuje proizvoljne putanje u datotečnom sustavu, organizira daljinsko izvršavanje koda ili prepisuje datoteke u direktoriju „.git/”. Većinu problema otkrili su zaposlenici
Microsoftov centar za sigurnosne odgovore, pet od osam ranjivosti specifične su za Windows platformu.
- — komandna opcija „feature export-marks=path” snimanje oznaka u proizvoljne direktorije, što se može iskoristiti za prepisivanje proizvoljnih putanja u FS prilikom izvođenja operacije „git fast-import” s nepouzdanim ulaznim podacima.
- — neispravno escapiranje argumenata komandne linije do daljinskog izvršavanja koda napadača prilikom rekurzivnog kloniranja pomoću URL-a ssh://. Konkretno, neispravno je obrađeno escapiranje argumenata koji završavaju s obrnutim kosa crtom (primjerice, „test \”). U tom slučaju, prilikom obvijanja argumenta dvostrukim navodnicima, posljednji navodnik bio je escapiran, što je omogućilo uvođenje vlastitih opcija u komandnu liniju.
- — prilikom rekurzivnog kloniranja submodula („clone --recurse-submodules”) u Windows okruženju pod određenim uvjetima pokrenuti korištenje jednog git direktorija dvaput (.git, git~1, git~2 i git~N u NTFS prepoznaje se kao jedan direktorij, ali ova situacija provjeravana je samo za git~1), što se moglo iskoristiti za snimanje u direktorij „.git”. Da bi organizirao izvršavanje svog koda, napadač može, primjerice, umetnuti svoj skript putem obraditelja post-checkout u datoteci .git/config.
- — obrada alfanumeričkih oznaka diskova u putanjama Windows prilikom prevođenja putanja poput „C:\
- — prilikom rada na Windows platformi, korištenje alternativnih tokova podataka u NTFS- u, koji se stvaraju dodavanjem oznake „:stream-name:stream-type” imenu datoteke, prepisivanje datoteka u direktoriju „.git/” prilikom kloniranja zlonamjernog repozitorija. Na primjer, ime „.git::$INDEX_ALLOCATION” u NTFS se obrađivalo kao ispravna referenca na direktorij „.git”.
- — prilikom korištenja Gita u okruženju WSL (Windows Subsystem for Linux), pristup radnom direktoriju zaštita od manipulacije imenima u NTFS-u (mogle su se izvesti napadi kroz prevođenje imena FAT; na primjer, na „.git” se moglo pristupiti kroz direktorij „git~1”).
- —
upisa u direktorij „.git/” na Windows platformi prilikom kloniranja zlonamjernih repozitorija koji sadrže datoteke s obrnutim kosim crticama u imenu (na primjer, „a\b”), što je dozvoljeno u Unix/Linux-u, ali se percipira kao deo putanje u Windows-u. - — nedovoljna provjera imena podmodula mogla se koristiti za provođenje ciljanih napada koji su prilikom rekurzivnog kloniranja potencijalno do izvršavanja napadačkog koda. Git nije zabranio stvaranje direktorija podmodula unutar drugog podmodula, što u većini slučajeva može samo dovesti do zabune, ali potencijalno ne isključuje prepisivanje sadržaja drugog modula tijekom rekurzivnog kloniranja (na primjer, direktoriji podmodula „hippo” i „hippo/hooks” nalaze se kao „.git/modules/hippo/” i „.git/modules/hippo/hooks/”, a direktorij hooks u hippo može se odvojeno koristiti za smještaj izvršnih obrada).
Korisnicima sustava Windows se preporučuje hitno ažuriranje verzije Gita, a do ažuriranja se savjetuje suzdržavanje od kloniranja nepovjerenih repozitorija. Ako trenutno nije moguće hitno ažurirati verziju Gita, za smanjenje rizika od napada preporučuje se izbjegavanje pokretanja „git clone —recurse-submodules“ i „git submodule update“ s nepovjerenim repozitorijima, ne koristiti „git fast-import“ s nepovjerenim ulaznim tokovima i ne klonirati repozitorije na particije temeljene na NTFS-u.
Za dodatnu zaštitu u novim izdanjima također je zabranjena upotreba struktura u .gitmodules u obliku „submodule.{name}.update=!command“. Za distribucije je potrebno pratiti objavu ažuriranja paketa na stranicama ,, , , , , , .
Izvor: opennet.ru
