Критичні уразливості в клієнтській і серверній частині Git дозволяють здійснювати віддалене виконання коду



Дослідник з інформаційної безпеки Лаел Целлье (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-серверів оновити версію використовуваного ними програмного забезпечення. Завантажити нову версію можна за посилання.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.