Опубликованы внеплановые корректирующие выпуски распределенной системы управления исходными текстами Git 1.8.5.6, 1.9.5, 2.0.5, 2.1.4 и 2.2.1, в которых устранена критическая уязвимость (CVE-2014-9390), способная привести к выполнению кода при обращении к репозиторию, в который злоумышленником совершён специально оформленный коммит. Одновременно выпущено обновление MSysGit 1.9.5 (порт Git для Windows), а также библиотек libgit2 0.21.3 и JGit 3.5.3.201412180710-r, которые подвержены уязвимости. Наличие уязвимости также подтверждено в системе управления версиями Mercurial (hg) и исправлено в выпуске 3.2.3.

Проблема проявляется в Git, Mercurial и Git/Mercurial-совместимых клиентах только на платформах с файловыми системами, не различающими регистр символов или проводящими нормализацию регистра в именах файлов. В частности, проблема проявляется в Windows (NTFS, FAT) и OS X (HFS+), использующих регистронезависимые пути. Unix-подобные системы уязвимости не подвержены. Разработчики GitHub добавили защиту от создания проблемных имён файлов и до публичного обнародования информации об уязвимости выполнили проверку имеющихся репозиториев, которая не выявила попыток эксплуатации уязвимости.

Суть проблемы сводится к тому, что атакующий, имеющий возможность внесения изменений в репозиторий, может произвести коммит, включающий директорию с названием наподобие ".Git", которая при записи в файловую систему не чувствительную к регистру будет эквивалентна директории ".git", содержащей конфигурационные данные Git. Это позволяет атакующему заменить конфигурацию git (".git/config") на произвольные данные и организовать выполнение произвольного кода. Кроме того, отмечается, что к маппингу в строку ".git" в случае Windows и OS X могут приводить и некоторые иные последовательности символов (например, "git~1/config" или ".g\u200cit/config"), которые в результате выполнения нормализации имени будут автоматически преобразованы файловой системой (в ".git/config").

Источник: http://www.opennet.ru/opennews/art.shtml?num=41300