В Git и Mercurial устранена критическая уязвимость, проявляющаяся в Windows и OS X
Опубликованы внеплановые корректирующие выпуски распределенной системы управления исходными текстами 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»).
© OpenNet