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

в 19:20, , рубрики: Git, github, gitlab, Блог компании Positive Technologies, информационная безопасность, удаленное выполнение кода, уязвимости

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

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

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

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

Вот так выглядел код revision.c для 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 за что получил 5000 очков в рамках bug bounty программы сервиса — подобные награды даются за обнаружение крайне серьезных уязвимостей.

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

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

Автор: Positive Technologies

Источник

Поделиться новостью

* - обязательные к заполнению поля