Команды просмотра и сравнения коммитов в Git оказались «слепы» к escape-последовательностям

Обнаруженные бреши в безопасности позволяют внедрять вредоносный код в коммиты, пряча его от системы контроля версий.

Новое исследование, проведённое TwistlockLabs, позволило найти несколько серьёзных уязвимостей в популярной системе контроля версий. Они касаются некоторых часто используемых команд, которые не умеют обнаруживать escape-последовательности. Это создаёт благоприятные условия для незаметного внедрения зловредного кода.

Проблемные места

В число «небезопасных» команд входит git-diff, предназначенная для сравнения двух коммитов. Найденная уязвимость позволяет внедрять любой код внутри последовательности «[8m» (режим невидимого текста). При сравнении файлов внесённые таким образом изменения отображаться не будут.Escape-последовательность [8m не обнаруживается git diff

От подобной проблемы страдает и git-log, обозревающий историю коммитов без отображения кода, заключённого в некоторые escape-последовательности.

Уязвимой также оказалась команда git-rm. При создании файла

touch `echo -e "\e[45mTest\e[0m"`

и добавлении его в репозиторий команда git rm * после произведения операции удаления выведет его полное название.

Аналогично escape-последовательности обрабатываются и git-branch при их подстановке в имена файлов в каталоге. Например:

touch `echo -e ".git/refs/heads/\e[45mTwistlock\e[0m"`

После запуска git branch в консоли выводится следующее сообщение:

warning: ignoring ref with broken name refs/heads/Twistlock

В этот же момент терминал обрабатывает escape-последовательность.

«Дело не в git»

По словам эксперта, проводившего исследование, письмо с задокументированными проблемами было сразу же отправлено в службу поддержки Git. Пока приходящие ответы скептические: в них говорится, что эти уязвимости не касаются функциональности системы контроля версий, так как встречаются и в других консольных командах, например, cat. Однако TwistlockLabs уверены в исправимости обнаруженных дыр в безопасности и заявляют, что намерены довести это дело до конца.

Источник: TwistlockLabs