Критические уязвимости в клиенте и серверной части Git позволяют осуществлять удаленное выполнение кода

- КиТ :: Будь в СЕТИ!

Исследователь информационной безопасности Лаел Целлье (La?l Cellier) две критические уязвимости в клиенте и серверной части Git (CVE-2016-2324 и CVE-2016-2315)

Воспользовавшись ими, злоумышленники могут осуществлять удаленное выполнение кода. Для этого необходимо создать репозиторий с деревом файлов с очень длинными названиями, а затем отправить «пуш» на удаленный уязвимый сервер или позволить уязвимому клиенту осуществить «пулл».

Две ошибки, приводящие к проблемам, содержатся в функции под названием path_name(), которая используется для добавления имени файла к концу пути в дереве репозитория. Путь и название файла могут быть использованы злоумышленником для запуска зловредного кода — для осуществления успешной атаки необходимо преодолеть различные средства защиты, вроде ASLR, но сделать это .

Вот так выглядел код для Git версий до 2.7.0: Ошибки в коде приводят к возможности возникновения целочисленного переполнения и переполнения буфера.

Кроме того, исследователям Positive Technologies удалось создать действующий эксплоит. Уязвимость CVE-2016-1285 заключается в недостаточной проверки типов полей управляющего пакета RNDC. Специальным образом сформированный пакет может вызвать assertion failure в модулях sexpr.c или alist.c. Для проведения атаки неаутентифицированный злоумышленник должен находиться в сети, от которой named разрешено принимать управляющие пакеты (секция control файла named.conf).

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

Вот так выглядит код, отвечающий за проверку авторизации lib/isccc/cc.c:

Суть патча, закрывающего уязвимость, состоит в дополнительной проверке результата функции isccc_alist_lookup:

Например, diff по : Функция isccc_alist_alistp производит дополнительную проверку вложенных полей:

isccc_alist_alistp(isccc_sexpr_t *alist) Проблемы оставались незамеченными на протяжении нескольких лет — уязвимы версии Git до 2.7.0, включая ветки 1.9 и 1.7. Обе уязвимости были исправлены в версии 2.7.1, которая вышла в феврале 2016 года, однако разработчики Git не объявляли об устранении ошибок, поэтому многие пользователи и администраторы до сих пор не обновили свои системы.

Целлье передал информацию об обнаруженных им уязвимостях в компанию GitHub за что 5000 очков в рамках bug bounty программы сервиса — подобные награды даются за обнаружение крайне серьезных уязвимостей.

В дальнейшем сотрудник GitHub ошибки и опубликовала новую версию Git 2.7.1, которая была предоставлена корпоративным пользователям, однако отдельных объявлений об этом сделано не было. GitLab также свое программное обеспечение, реализовав поддержку Git , которая содержит исправления и других ошибок.

Эксперты Positive Technologies рекомендуют всем пользователям и администраторам Git-серверов обновить версию используемого ими программного обеспечения. Скачать новую версию можно по .

ПодпискаБудь в СЕТИ! Новости социальных сетей - всегда актуальное
 
Группы: ВК | OK | Tg