Opravy distribuovaného systému správy verzí Git 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 a 2.14.6, ve kterých byly odstraněny zranitelnosti umožňující útočníkovi přepsat libovolné cesty v souborovém systému, provést vzdálené spuštění kódu nebo přepsat soubory v adresáři „.git/“. Většina problémů byla identifikována zaměstnanci Microsoft Security Response Center.
Pět z osmi zranitelností je specifických pro platformu Windows.
- — příkazový proud „feature export-marks=path“ napsat značky do libovolných adresářů, což může být využito k přepsání libovolných cest v FS při provádění operace „git fast-import“ s neověřenými vstupy.
- — nesprávné escapování argumentů příkazového řádku k vzdálenému spuštění kódu útočníka při rekurzivním klonování pomocí URL ssh://. Konkrétně bylo nesprávně zpracováváno escapování argumentů končících zpětným lomítkem (například „test \“). V tomto případě, při obklopení argumentu dvojitými uvozovkami, poslední uvozovka byla escapována, což umožnilo podsunout vlastní volby do příkazového řádku.
- — při rekurzivním klonování submodulů („clone —recurse-submodules“) v prostředí Windows za určitých podmínek inicializovat použití jednoho git adresáře dvakrát (.git, git~1, git~2 a git~N jsou na NTFS rozpoznávány jako jeden adresář, ale tato situace byla kontrolována pouze pro git~1), což mohlo být využito k zapsání do adresáře „.git“. Aby útočník mohl spustit svůj kód, mohl například přiřadit svůj skript přes post-checkout handler do souboru .git/config.
- — zpracování písmen názvů disků v cestách Windows při převodu cest typu „C:\
- — při práci na platformě Windows umožňovalo použití alternativních datových toků v NTFS, vytvářených přidáním atributu „:stream-name:stream-type“ k názvu souboru, přepsat soubory v adresáři „.git/“ při klonování škodlivého repozitáře. Například název „.git::$INDEX_ALLOCATION“ v NTFS byl zpracován jako platný odkaz na adresář „.git“.
- — při používání Gitu v prostředí WSL (Windows Subsystem for Linux) při přístupu k pracovnímu adresáři ochrana proti manipulaci s názvy v NTFS (byly možné útoky prostřednictvím translace jmen FAT, například k „.git“ bylo možné přistupovat přes adresář „git~1“).
- —
zápisy do adresáře „.git/“ na platformě Windows při klonování škodlivých repozitářů obsahujících soubory s obráceným lomítkem v názvu (například „a\b“), které je přípustné v Unix/Linux, ale je vnímáno jako část cesty ve Windows. - — nedostatečná kontrola názvů submodulů mohla být použita k organizaci cílených útoků, které při rekurzivním klonování potenciálně k provedení kódu útočníka. Git nepovoloval vytváření adresáře submodulu v adresáři jiného submodulu, což ve většině případů může vést jen k zmatku, ale potenciálně nevylučuje přepsání obsahu jiného modulu během rekurzivního klonování (například adresáře submodulů „hippo“ a „hippo/hooks“ jsou umístěny jako „.git/modules/hippo/“ a „.git/modules/hippo/hooks/“, a adresář hooks v hippo může být samostatně použit pro umístění spustitelných zpracovatelů.
Uživatelům Windows se doporučuje naléhavě aktualizovat verzi Gitu, a do aktualizace se zdržet klonování neověřených repozitářů. Pokud není možné naléhavě aktualizovat verzi Gitu, doporučuje se pro snížení rizika útoku nespouštět „git clone —recurse-submodules“ a „git submodule update“ s neověřenými repozitáři, nepoužívat „git fast-import“ s neověřenými vstupními proudy a neklonovat repozitáře do oddílů na bázi NTFS.
Pro dodatečnou ochranu byly v nových verzích také zakázány konstrukce v .gitmodules ve formě „submodule.{name}.update=!command“. Pro distribuce lze sledovat vydání aktualizací balíčků na stránkách ,, , , , , , .
Zdroj: opennet.ru
