- PVSM.RU - https://www.pvsm.ru -

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

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

Исследователь информационной безопасности Лаел Целлье (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/