- PVSM.RU - https://www.pvsm.ru -
Исследователь информационной безопасности Лаел Целлье (Laël Cellier) обнаружил [2] две критические уязвимости в клиенте и серверной части Git (CVE-2016-2324 и CVE‑2016‑2315).
Воспользовавшись ими, злоумышленники могут осуществлять удаленное выполнение кода. Для этого необходимо создать репозиторий с деревом файлов с очень длинными названиями, а затем отправить «пуш» на удаленный уязвимый сервер или позволить уязвимому клиенту осуществить «пулл».
Две ошибки, приводящие к проблемам, содержатся в функции под названием path_name(), которая используется для добавления имени файла к концу пути в дереве репозитория. Путь и название файла могут быть использованы злоумышленником для запуска зловредного кода — для осуществления успешной атаки необходимо преодолеть различные средства защиты, вроде ASLR, но сделать это можно [3].
Вот так выглядел код revision.c [4] для Git версий до 2.7.0:
char *path_name(const struct name_path *path, const char *name)
{
const struct name_path *p;
char *n, *m;
int nlen = strlen(name);
int len = nlen + 1;
for (p = path; p; p = p->up) {
if (p->elem_len)
len += p->elem_len + 1;
}
n = xmalloc(len);
m = n + len - (nlen + 1);
strcpy(m, name);
for (p = path; p; p = p->up) {
if (p->elem_len) {
m -= p->elem_len + 1;
memcpy(m, p->elem, p->elem_len);
m[p->elem_len] = '/';
}
}
return n;
}
Ошибки в коде приводят к возможности возникновения целочисленного переполнения и переполнения буфера.
Проблемы оставались незамеченными на протяжении нескольких лет — уязвимы версии Git до 2.7.0, включая ветки 1.9 и 1.7. Обе уязвимости были исправлены в версии 2.7.1, которая вышла в феврале 2016 года, однако разработчики Git не объявляли об устранении ошибок, поэтому многие пользователи и администраторы до сих пор не обновили свои системы.
Целлье передал информацию об обнаруженных им уязвимостях в компанию GitHub за что получил [5] 5000 очков в рамках bug bounty программы сервиса — подобные награды даются за обнаружение крайне серьезных уязвимостей.
В дальнейшем сотрудник GitHub исправил [6] ошибки и опубликовала новую версию Git 2.7.1, которая была предоставлена корпоративным пользователям, однако отдельных объявлений об этом сделано не было. GitLab также обновил [7] свое программное обеспечение, реализовав поддержку Git 2.7.3 [8], которая содержит исправления и других ошибок.
Эксперты Positive Technologies рекомендуют всем пользователям и администраторам Git-серверов обновить версию используемого ими программного обеспечения. Скачать новую версию можно по ссылке [9].
Автор: Positive Technologies
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/git/115224
Ссылки в тексте:
[1] Image: https://habrahabr.ru/company/pt/blog/279483/
[2] обнаружил: http://seclists.org/oss-sec/2016/q1/645
[3] можно: http://security.stackexchange.com/questions/20497/stack-overflows-defeating-canaries-aslr-dep-nx/20502#20502
[4] revision.c: https://github.com/git/git/blob/v1.7.0/revision.c
[5] получил: https://bounty.github.com/researchers/ytrezq.html
[6] исправил: http://thread.gmane.org/gmane.comp.version-control.git/286008
[7] обновил: https://about.gitlab.com/2016/03/16/gitlab-8-dot-5-dot-7-released/
[8] 2.7.3: https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.3.txt
[9] ссылке: https://github.com/git/git
[10] Источник: https://habrahabr.ru/post/279483/
Нажмите здесь для печати.