Objavljene su korektivne verzije distribuiranog sustava za upravljanje izvornih kodova Git 2.39.1, 2.38.3, 2.37.5, 2.36.4, 2.35.6, 2.34.6, 2.33.6, 2.32.5, 2.31.6 i 2.30.7, koje ispravljaju dvije ranjivosti koje omogućuju izvršavanje vlastitog koda na korisničkom sustavu prilikom korištenja naredbe „git archive“ i rada s nepouzdanim vanjskim repozitorijima. Ranjivosti su uzrokovane greškama u formatiranju commit poruka i analizi datoteke „.gitattributes“, koje prilikom obrade vanjskih repozitorija mogu dovesti do pisanja u područje memorije izvan hrpe i čitanja proizvoljnih podataka iz memorije.
Obje ranjivosti otkrivene su tijekom sigurnosnog audita izvornog koda Gita, koji je proveo tvrtka X41 po narudžbi fonda OSTIF (Open Source Technology Improvement Fund), osnovanog s ciljem jačanja sigurnosti otvorenih projekata. Osim dviju kritičnih problema obrađenih u nastavku, tijekom audita otkrivena je i jedna opasna ranjivost, jedna ranjivost srednje opasnosti i četiri neopasne probleme. Također je izdano 27 preporuka za poboljšanje sigurnosti izvornog koda.
- CVE-2022-41903: cjelobrojno prelivanje u kodu formatiranja informacija o commit-ima, koje nastaje prilikom obrade velikih vrijednosti pomaka u operatorima popunjavanja, kao što su „%&(“, „%)(“, „%>>(“ i „%><( )“. Cjelobrojno prelivanje nastaje u funkciji format_and_pad_commit() zbog korištenja tipa int za varijablu size_t, koja prilikom poziva memcpy() sudjeluje u određivanju veličine pomaka kopiranog bloka.
Ranjivost se manifestira kako pri izravnom pozivu sa posebno oblikovanim parametrima formatiranja (na primjer, prilikom pokretanja „git log —format=…“), tako i pri neizravnoj upotrebi formatiranja tijekom izvođenja naredbe „git archive“ u repozitoriju pod kontrolom napadača. U drugom slučaju, modifikatori formatiranja definiraju se putem parametra export-subst u datoteci „.gitattributes“, koju napadač može postaviti u svom repozitoriju. Problem može biti iskorišten za čitanje i pisanje proizvoljnih područja u hrpi i može dovesti do izvršavanja koda napadača prilikom rada s nepouzdanim repozitorijima.
- CVE-2022-23521: cijeli preljevi tijekom analize sadržaja datoteka «.gitattributes» u repozitoriju, što se manifestira prilikom obrade vrlo velikog broja obrazaca putanja datoteka ili velikog broja atributa s jednim obrascem, kao i tijekom analize vrlo velikih imena atributa. Problema se može iskoristiti za čitanje i pisanje proizvoljnih područja u hrpi i može dovesti do izvršavanja zlonamjernog koda prilikom rada s nepouzdanim repozitorijem, gdje napadač može postaviti posebno oblikovanu datoteku .gitattributes i osigurati da ona uđe u indeks.
Objave ažuriranja paketa u distribucijama mogu se pratiti na stranicama: Debian, Ubuntu, Gentoo, RHEL, SUSE, Arch, FreeBSD, NetBSD. Kako bi se smanjio rizik od napada kada nije moguće pravovremeno instalirati ažuriranje, preporučuje se izbjegavanje rada sa nepouzdanim repozitorijima i korištenje naredbe «git archive». Važno je napomenuti da se naredba «git archive» može pokretati implicitno, primjerice iz git daemona. Da biste onemogućili pokretanje «git archive» u git daemonu, potrebno je promijeniti postavku daemon.uploadArch naredbom «git config —global daemon.uploadArch false».
Dodatno se može napomenuti još jedna ranjivost (CVE-2022-41953) u proizvodu Git for Windows, koja omogućava izvršavanje koda prilikom kloniranja preko grafičkog sučelja nepouzdanih vanjskih repozitorija. Problema je uzrokovana time što Git GUI za Windows nakon operacije «checkout» automatski pokreće neke post-process naredbe, poput izvođenja programa za provjeru pravopisa, a da pritom putanje za pretraživanje datoteke za provjeru pravopisa obuhvaćaju i klonirano radno stablo (napad se svodi na dodavanje provjere pravopisa u radno stablo repozitorija).
Izvor: opennet.ru
