Обнаружена новая критическая уязвимость CVE-2014-9390 в Git, позволяющая выполнить произвольные команды на клиенте.
![](https://habrastorage.org/r/w1560/files/e94/8f4/9da/e948f49dadbb4dc8af8da57a8843a635.png)
Суть уязвимости заключается в возможности совершить коммит в .Git/config, что равносильно служебному пути .git/config на регистронезависимых файловых системах. Это дает возможность инициировать запуск произвольных команд на клиенте. В общем случае уязвимости подвержены рабочие станции на Windows и Mac OS X, Linux-системы будут подвержены в случае использования регистронезависимых файловых систем.
Согласно анонсу в рассылке linux-kernel
На Windows определенные пути также могут отображаться в .git, например, git~1/config дает доступ к .git/config. Файловая система HFS+ также может предоставить доступ к этому пути при использовании символов Юникода, например, .g\u200cit/config. Подобные пути отныне будут отклоняться Git на потенциально уязвимых системах. На других системах, таких как Linux, возможно намеренно включить подобное поведение системы для обеспечения кроссплатформенности и общего повышения уровня безопасности.
Проверить наличие проблем можно при помощи git fsck.
Уже вышли соответствующие исправления:
Интересно что на GitHub эксплуатация уязвимости невозможна. Сотрудники компании сразу после появления информации о баге запретили новые злонамеренные коммиты и выполнили проверку всех существующих репозиториев на предмет наличия в них CVE-2014-9390.
![](https://habrastorage.org/files/e94/8f4/9da/e948f49dadbb4dc8af8da57a8843a635.png)
Суть уязвимости заключается в возможности совершить коммит в .Git/config, что равносильно служебному пути .git/config на регистронезависимых файловых системах. Это дает возможность инициировать запуск произвольных команд на клиенте. В общем случае уязвимости подвержены рабочие станции на Windows и Mac OS X, Linux-системы будут подвержены в случае использования регистронезависимых файловых систем.
Согласно анонсу в рассылке linux-kernel
Ранее мы разрешали делать коммиты в ".Git/config", однако на регистронезависимых файловых системах это позволило бы писать в ".git/config", что определенно не является ожидаемым поведением программы. Отныне Git запрещает использование ".Git" (в любом регистре) в пути.
На Windows определенные пути также могут отображаться в .git, например, git~1/config дает доступ к .git/config. Файловая система HFS+ также может предоставить доступ к этому пути при использовании символов Юникода, например, .g\u200cit/config. Подобные пути отныне будут отклоняться Git на потенциально уязвимых системах. На других системах, таких как Linux, возможно намеренно включить подобное поведение системы для обеспечения кроссплатформенности и общего повышения уровня безопасности.
Проверить наличие проблем можно при помощи git fsck.
Уже вышли соответствующие исправления:
- GitHub for Windows и GitHub for Mac
- Git core team выпустила обновления для всех поддерживаемых версий Git (v1.8.5.6, v1.9.5, v2.0.5, v2.1.4, и v2.2.1).
- Git for Windows (aka MSysGit) обновился до 1.9.5.
- Популярные библиотеки libgit2 и JGit также были обновлены
Интересно что на GitHub эксплуатация уязвимости невозможна. Сотрудники компании сразу после появления информации о баге запретили новые злонамеренные коммиты и выполнили проверку всех существующих репозиториев на предмет наличия в них CVE-2014-9390.