Boli publikované opravy distribuovaného systému správy zdrojového kódu Git vo verziách 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 a 2.30.7, ktoré opravujú dve zraniteľnosti umožňujúce vykonanie vlastného kódu na systéme používateľa pri použití príkazu «git archive» a práci s nedôveryhodnými externými repozitármi. Zraniteľnosti sú spôsobené chybami v kóde formátovania commitov a v analýze súboru «.gitattributes», ktoré môžu pri spracovaní externých repozitárov viesť k zápisu do oblasti pamäte mimo haldy a ku čítaniu ľubovoľných dát z pamäte.
Obe zraniteľnosti boli odhalené počas auditu bezpečnosti kódu Git, ktorý vykonala spoločnosť X41 na objednávku fondu OSTIF (Open Source Technology Improvement Fund), založeného na posilnenie bezpečnosti otvorených projektov. Okrem dvoch kritických problémov, o ktorých sa hovorí nižšie, bol počas auditu odhalený aj jeden nebezpečný zraniteľnosť, jedna zraniteľnosť strednej úrovne a štyri nebezpečné problémy. Bolo poskytnutých aj 27 odporúčaní na zlepšenie bezpečnosti kódu.
- CVE-2022-41903: Pretečenie celej číslice v kóde formátovania informácií o commitoch, ktoré sa vyskytuje pri spracovaní veľkých hodnôt ofsetu v operačných výrazoch na vyplnenie, ako sú «%<(«, «%<|(«, «%>(«, «%>>(» a «%><( )». Pretečenie celej číslice nastáva vo funkcii format_and_pad_commit() z dôvodu použitia typu int pre premennú size_t, ktorá sa pri volaní memcpy() podieľa na určení veľkosti ofsetu kopírovaného bloku.
Zraniteľnosť sa prejavuje ako pri priamom zavolaní so špeciálne formátovanými parametrami (napríklad pri spustení «git log —format=…»), tak aj pri nepriamom použití formátovania počas vykonávania príkazu «git archive» v repozitári ovládanom útočníkom. V druhom prípade sú formátovacie modifikátory definované cez parameter export-subst v súbore «.gitattributes», ktorý môže byť umiestnený útočníkom vo svojom repozitári. Problém môže byť využitý na čítanie a zápis do ľubovoľných oblastí v heap a viesť k vykonaniu kódu útočníka pri práci s neoverenými repozitármi.
- CVE-2022-23521: pretekanie celých čísel pri spracovaní obsahu súborov „.gitattributes“ v repozitári, ktoré sa prejavujú pri spracovaní veľmi veľkého počtu šablón súborových ciest alebo veľkého počtu atribútov s jednou šablónou, ako aj pri spracovaní veľmi veľkých názvov atribútov. Problém môže byť zneužitý na čítanie a zápis ľubovoľných oblastí v pamäti a viesť k vykonaniu kódu útočníka pri práci s neovereným repozitárom, v ktorom útočník môže umiestniť špeciálne upravený súbor .gitattributes a zabezpečiť jeho zaradenie do indexu.
Publikáciu aktualizácií balíkov v distribúciách je možné sledovať na stránkach: Debian, Ubuntu, Gentoo, RHEL, SUSE, Arch, FreeBSD, NetBSD. Na zníženie rizika útoku pri nemožnosti včas nainštalovať aktualizáciu sa odporúča vyhnúť sa práci s nedôveryhodnými repozitármi a používaniu príkazu „git archive“. Je dôležité si uvedomiť, že príkaz „git archive“ sa môže spustiť neexplicitne, napríklad z git daemon. Na deaktiváciu spustenia „git archive“ v git daemone je potrebné zmeniť parameter daemon.uploadArch príkazom „git config —global daemon.uploadArch false“.
Dodatočne možno spomenúť ďalšiu zraniteľnosť (CVE-2022-41953) v produkte Git for Windows, ktorá umožňuje vykonávanie kódu pri klonovaní cez grafické rozhranie neoverených externých repozitárov. Problém spôsobuje to, že Git GUI pre Windows po operácii „checkout“ automaticky spúšťa niektoré príkazy post-spracovania, ako napríklad vykonanie programu spell-check na kontrolu pravopisu, pričom cesty vyhľadávania súboru spell-check zahŕňajú aj sklonovaný pracovný strom (útok spočíva v pridaní spell-check do pracovného stromu repozitára).
Zdroj: opennet.ru
