Команды просмотра и сравнения коммитов в Git оказались «слепы» к escape-последовательностям
Новости Отредактировано
Обнаруженные бреши в безопасности позволяют внедрять вредоносный код в коммиты, пряча его от системы контроля версий.
2К открытий2К показов
Новое исследование, проведённое TwistlockLabs, позволило найти несколько серьёзных уязвимостей в популярной системе контроля версий. Они касаются некоторых часто используемых команд, которые не умеют обнаруживать escape-последовательности. Это создаёт благоприятные условия для незаметного внедрения зловредного кода.
Проблемные места
В число «небезопасных» команд входит git-diff, предназначенная для сравнения двух коммитов. Найденная уязвимость позволяет внедрять любой код внутри последовательности «[8m» (режим невидимого текста). При сравнении файлов внесённые таким образом изменения отображаться не будут.
От подобной проблемы страдает и git-log, обозревающий историю коммитов без отображения кода, заключённого в некоторые escape-последовательности.
Уязвимой также оказалась команда git-rm. При создании файла
и добавлении его в репозиторий команда git rm *
после произведения операции удаления выведет его полное название.
Аналогично escape-последовательности обрабатываются и git-branch при их подстановке в имена файлов в каталоге. Например:
После запуска git branch
в консоли выводится следующее сообщение:
В этот же момент терминал обрабатывает escape-последовательность.
«Дело не в git»
По словам эксперта, проводившего исследование, письмо с задокументированными проблемами было сразу же отправлено в службу поддержки Git. Пока приходящие ответы скептические: в них говорится, что эти уязвимости не касаются функциональности системы контроля версий, так как встречаются и в других консольных командах, например, cat
. Однако TwistlockLabs уверены в исправимости обнаруженных дыр в безопасности и заявляют, что намерены довести это дело до конца.
2К открытий2К показов