Обновите клиент Git, чтобы избежать уязвимости


Если вы используете Git или GitHub, вам необходимо обновить клиент Git, чтобы избежать потенциального нарушения безопасности.

Вчера было объявлено о проблеме, затрагивающей все версии клиента Git. Уязвимость тривиальна — злоумышленник может создать дерево Git, которое заставит Git перезаписать свой собственный файл .git / config при клонировании или извлечении репозитория. Затем это заставляет файл конфигурации выполнять любой код, предоставленный вредоносным репозиторием. Файл конфигурации может содержать псевдонимы для команд Git, и, следовательно, вредоносный файл конфигурации может перенаправлять команды Git практически для всего, что он хочет. В этом смысле злоумышленник может выполнить практически любой код, который захочет.

Причина проблемы в том, что вполне нормально иметь .Git / config или любой другой заглавные буквы .git / config как файл и как часть репозитория, и он рассматривается как стандартная папка, отличная от .git / config, который находится за пределами репозитория. Однако OSX и Windows используют файловые системы, нечувствительные к регистру, и в результате .Git / config совпадает с .git / config, поэтому его копирование перезаписывает исходный .git / config. Если вы работаете с Linux или Unix, или с любой операционной системой, чувствительной к регистру, то клиент Git работает, как и планировалось.

То есть в любой операционной системе клиент Git достаточно «умен», чтобы избежать копирования .git / config в репозиторий поверх реального файла .git / config, но он позволяет копировать такие файлы, как .Git / config, и на тех, кто работает. системы, в которых регистр не имеет значения для имен файлов, результат копируется поверх .git / config.

Если вы немного удивлены, что такая глупая ошибка сохранилась так долго, то, возможно, стоит указать на то, что в Linux / Unix мышление состоит в том, что разные заглавные буквы — это разные символы, а Windows / OSX вторичны по отношению к Linux.

В целом риск не так велик, потому что любой, кто хочет использовать дефект, должен иметь права на фиксацию для создания вредоносного репозитория, и, следовательно, вам, вероятно, придется работать с общедоступным репозиторием.

Решение — установить последние версии клиента Git. Также существует проблема со сторонним программным обеспечением, которое использует библиотеки libgit2 и JGit, и для них есть обновления.

GitHub также подвержен этой проблеме, и, помимо рекомендаций людям установить последнюю версию клиента, он ввел процедуру проверки, которая гарантирует, что они не размещают какие-либо деревья, содержащие папки, которые являются просто рекапитализацией .git / config. Таким образом, на GitHub не может быть вредоносных публичных репозиториев.

Мораль в том, что если вы пишете программы, которые предполагают чувствительность к регистру, убедитесь, что вы разрешаете операционные системы, которые этого не делают.


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