Представлены (https://lkml.org/lkml/2016/3/17/635) корректирующие выпуски всех поддерживаемых веток системы управления исходными текстами Git 2.4.11, 2.5.5 и 2.6.6 и 2.7.4, в которых устранены критические уязвимости (CVE-2016-2324 (https://security-tracker.debian.org/tracker/CVE-2016-2324) и CVE-2016‑2315 (https://security-tracker.debian.org/tracker/CVE-2016-2315)), потенциально позволяющие атакующему, имеющему доступ к Git-репозиторию, организовать выполнение своего кода на стороне клиента или сервера (рабочий эксплоит пока не зафиксирован).
Информация об уязвимостях была раскрыта (https://www.opennet.dev/opennews/art.shtml?num=44052) несколько дней назад, при этом выявивший уязвимость разработчик был уверен, что уязвимости были устранены в начале февраля в выпуске 2.7.1. На деле, оказалось (http://www.openwall.com/lists/oss-security/2016/03/16/9), что патчи (1 (http://thread.gmane.org/gmane.comp.version-control.git/286253), 2 (http://thread.gmane.org/gmane.comp.version-control.git/286008)) были приняты только в ветку master, на основе которой формируется выпуск 2.8, но исправления забыли (https://bugzilla.novell.com/show_bug.cgi?id=971328#c4) включить в релиз 2.7.1 и проблема осталась не исправленной, что поставило под угрозу Git-хостинги, такие как Github и Bitbucket, а также публичные Git-репозитории на базе Gerrit (https://www.gerritcodereview.com/) и Gitlab (https://gitlab.com). Около месяца исправления оставались на виду, что давало возможность злоумышленникам оценить связанную с ними угрозу безопасности и разработать рабочий эксплоит.
Сервер может быть атакован в случае доступа злоумышленников к выполнению команды push (например, публичные git-хостинги). Атака также может быть совершена на клиента, выполняющего операцию "clone" при обращении к ранее атакованному или подконтрольному злоумышленникам серверу. В GitHub проблема была устранена ещё в феврале. В GitLab для блокирования возможных атак был нацелен выпуск 8.5.7 (https://about.gitlab.com/2016/03/16/gitlab-8-dot-5-dot-7-rel.../), но он не устранил проблему, так как защита заключалась в запрещении использования версий Git младше 2.7.3 (на деле уязвимость оказалась исправлена только в Git 2.7.4).
Уязвимость вызвана ошибкой в реализации функции path_name(), позволяющей инициировать переполнение буфера при манипуляции с большим числом вложенных деревьев или слишком длинным именем файла. Размер имени файла сохраняется в знаковую целочисленную переменную, рассчитывается размер пути, выделяется память и имя файла копируется в хвост буфера при помощи незащищённой функции strcpy. В случае целочисленного переполнения переменной, содержащей размер строки, будет создан буфер заведомо меньшего размера и копирование будет осуществлено в область за пределами буфера.
<font color="#461b7e">
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;
}
</font>
URL: https://lkml.org/lkml/2016/3/17/635
Новость: http://www.opennet.dev/opennews/art.shtml?num=44068
В SourceForge Git ещё не пофиксили.
Есть мнение, что в SF надо фиксить не расположение кроватей.
Тысячи глаз..."Спи, глазок, спи, другой! А о третьем глазке и забыла"(С)
Вот третий глазок и высмотрел дырочку, такую, размерчиком с амбарные воротца. И пофиксил он её, дырочку эту. Тут и сказке конец, а кто слушал молодец!
Сорсфорж и так в блеклистах проходит как malware domain, за добавление троянов в инсталлеры. Им терять уже нечего.
> Сорсфорж и так в блеклистах проходит как malware domain, за добавление троянов
> в инсталлеры. Им терять уже нечего.Ты не понял, это не трояны, а помощники. Всё делается только для удобства пользователей.
Использование в Git strcpy и попытка исправления заменой на memcpy (https://github.com/git/git/commit/34fa79a6cde56d6d428ab0d316...) навивает на грустные мысли, что это только начало.
Это не попытка исправления, а в полне разумная оптимизация.
> Использование в Git strcpy и попытка исправления заменой на memcpy ... навивает на грустные мыслиНет. Старшеклассники над тобой подшутили.
В сизифе собранный вчера 2.6.6.
> В сизифе собранный вчера 2.6.6.Мишаня, это здорово, что уже вчера собрали! А дырочка-то с какого времени существует?
А на хабре есть мнение что слухи о критичности несколько преувеличены. Чтобы это проэксплуатировать, надо клиенту путь более 2 гигабайтов в размере влить. Удачи в эксплойтировании.
Вполне себе обычный размер для одностраничного жс ангулар веб приложения - сайта визитки.
2 миллиарда символов в полном имени файла это обычно для "одностраничного жс ангулар веб приложения" приложения?
> А на хабре есть мнение что слухи о критичности несколько преувеличены. Чтобы
> это проэксплуатировать, надо клиенту путь более 2 гигабайтов в размере влить.
> Удачи в эксплойтировании.На Хабре зря не скажут, да.
Там понимаешь эксперты, вот примерный кусок разговора с Хабра:
"... два ... мужика, стоявшие у дверей кабака против гостиницы, сделали кое-какие замечания, относившиеся, впрочем, более к экипажу, чем к сидевшему в нем.
"Вишь ты, - сказал один другому, - вон какое колесо! Что ты думаешь, доедет то колесо, если б случилось, в Москву или не доедет?" - "Доедет", - отвечал другой.
"А в Казань-то, я думаю, не доедет?" - "В Казань не доедет", - отвечал другой."(С)
Николай Васильевич Гоголь, "Мертвые души"