Критическая уязвимость в Git LFS, проявляющаяся на платформе Windows
5 ноября 2020 года
В Git LFS выявлена критическая уязвимость (CVE-2020-27955), позволяющая удалённому злоумышленнику выполнить свой код в системе жертвы, при клонировании жертвой специально оформленного репозитория. Проблема проявляется только на платформе Windows и устранена в предложенном несколько часов назад обновлении git-lfs 2.12.1. На Unix системах уязвимость не проявляется.
Проблема вызвана тем, что на платформе Windows для запуска нового процесса git используется вызов ExecCommand(), но не указывается полный путь к исполняемому файлу git. Если полный путь не указан, то функция ExecCommand() проверяет наличие исполняемого файла в текущем каталоге. Так как запуск осуществляется в контексте текущего репозитория, атакующий может разместить в своём репозитории файлы git.bat, git.exe или git.cmd. После клонирования репозитория подставленные злоумышленником файлы будут выполнены вместо исполняемого файла git при выполнении операций с git-lfs.
Для проверки своих систем подготовлен рабочий эксплоит. Возможность эксплуатации уязвимости протестирована в пакете Git с дополнением git-lfs, а также в Git-клиентах Git for Windows, GitHub CLI, GitHub Desktop, SourceTree, Visual Studio Code, GitKraken и SmartGit, использующих Git LFS в конфигурации по умолчанию. Проблема также потенциально затрагивает интегрированные среды разработки Eclipse, fork, tig, GitExtensions, Magit, TortoiseGit, gmaster, GitAhead, Sublime Merge, Visual Studio, GitAtomic, Tower и git-cola.
Напомним, что дополнение Git LFS (Git Large File Storage) развивается компанией GitHub и позволяет использовать Git для отслеживания версий больших файлов, содержащих наборы данных, звук, видео и графику. В штатном Git-репозитории большие файлы заменяются на текстовые ссылки, указывающие на контент в отдельном внешнем репозитории, что позволяет избежать повторного копирования файлов при клонировании и извлечении репозитория. При выполнении операций checkout большие файлы не загружаются вместе с остальными данными, а синхронизируются с сервера и хранятся в единственной копии. Код распространяется под лицензией MIT.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.