27.11.2020

Критическая уязвимость в Git LFS, проявляющаяся на платформе Windows


В 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.

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

Добавить комментарий