Řešení
Aktualizace pro Microsoft Visual Studio 2013 (KB3023576)
Stáhněte si aktualizaci pro Microsoft Visual Studio 2013, která opraví problém v Gitu.
- Aktualizace pro Visual Studio 2013 Update 4 (KB3023577)
- Aktualizace pro Visual Studio TFS 2013 (KB3023302)
- Aktualizace pro Visual Studio TFS 2013 Update 4 (KB3023304)
Jak oprava funguje
U Team Foundation Serveru (TFS) oprava odmítne jakékoli nabízené oznámení (nahrání), které obsahuje soubor nebo součást cesty, která odpovídá řetězci ".git". Tím se zabrání zavedení chybných souborů do hostovaných úložišť.
U klienta sady Visual Studio oprava zabrání tomu, aby byl jakýkoli soubor rezervován do adresáře .git. To zase zabraňuje tomu, aby úložiště obsahující chybné soubory ovlivňovala místní počítač uživatele.
O problému v Gitu
Jedná se o problém, který se projevuje v celém ekosystému Git a který se netýká pouze podpory Microsoftu pro úložiště Git na našich vývojových platformách. Přesto jsme podnikli důležité proaktivní kroky, abychom zajistili, že zákazníci Microsoftu, kteří používají úložiště Git, jsou před tímto problémem chráněni.
Problém, který se týká všech klientů Git, byl objeven základními správci Gitu. Tento problém umožňuje zavedení souboru do úložiště Git. Soubor je pojmenován tak, že když uživatel stáhne změny ve vzdáleném úložišti, speciálně vytvořený soubor může tiše nahradit konfigurační soubor uživatele. Konfigurační soubor uživatele se nachází mimo úložiště. Nahrazením tohoto souboru špatným souborem lze příkazy gitu přemapovat tak, aby spouštěly libovolné příkazy, které běží pod přihlašovacími údaji uživatele.
Vliv na Visual Studio
Visual Studio 2013 a Visual Studio TFS 2013 nejsou tímto problémem přímo ovlivněny. Visual Studio a TFS nespouštějí libovolné příkazy z metadat .git. Rezervace úložiště, které obsahuje speciálně vytvořený soubor, by ale mohla způsobit, že Visual Studio přepíše části metadat .git a vystaví nástroje příkazového řádku Gitu pro Windows tomuto problému. TFS byl proaktivně opraven, aby se zabránilo šíření tohoto problému.
Příčina
Každá místní databáze Git se udržuje na disku v kořenové složce úložiště ve skrytém adresáři .git. Při rezervování souborů (například rozložení na místní disk po stažení), soubor pojmenovaný ". GIT/config" se vloží do databáze Git. Za tento problém je částečně zodpovědné porovnání s příponou ".git" bez rozlišování velkých a malých písmen. Automatické zpracování cest k souborům na platformách Windows navíc rozšiřuje ovlivněné vzorky souborů na mnohem více než explicitně pojmenovaný ". GIT/config".
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.