Дата публикации: | 15.04.2004 |
Дата изменения: | 17.10.2006 |
Всего просмотров: | 1305 |
Опасность: | Низкая |
Наличие исправления: | |
Количество уязвимостей: | 1 |
CVE ID: | Нет данных |
Вектор эксплуатации: | |
Воздействие: | |
CWE ID: | Нет данных |
Наличие эксплоита: | Нет данных |
Уязвимые продукты: | |
Уязвимые версии: Linux Kernel 2.4, 2.6
Описание: Уязвимость обнаружена в Linux ядре в механизме работы нитей (linuxthreads). Локальный пользователь может вызвать отказ в обслуживании. При завершении одной из нитей другая нить того же процесса получает сигнал 33 (SIGRT_1), что свидетельствует о завершении соседней нити при этом завершившаяся нить находится в статусе "zombie". В случае генерации сигнала, соответствующий код ядра размещается в объекте, который называется "struct sigqueue", который держит информацию о сигнале до момента доставки другой нити. Однако в этой структуре может быть одновременно размещено ограниченное количество информации. Для сигналов с идентификаторами меньше 32 в коде ядра есть механизм, позволяющий доставить сигнал независимо от состояния объекта "struct sigqueue". В случае же описываемого сигнала 33 в случае невозможности помещения информации в "struct sigqueue" просто возвращается значение -EAGAIN. В результате процесс не будет оповещён о завершении нити и закончившаяся нить останется в состоянии "zombie". Для long-living процессов, порождающих много short-living нитей (например, mysqld), переполнение таблицы процессов происходит за несколько минут. В результате возникает типичная ситуация DoS. Автором написан исходный код эксплоита. В ядрах 2.6, использующих NPTL, механизм оповещения процессов несколько другой, однако и там существует возможность DoS. Пример/Эксплоит: #include <signal.h> #include <unistd.h> #include <stdlib.h> int main() { sigset_t set; int i; pid_t pid; sigemptyset(&set); sigaddset(&set, 40); sigprocmask(SIG_BLOCK, &set, 0); pid = getpid(); for (i = 0; i < 1024; i++) kill(pid, 40); while (1) sleep(1); } URL производителя: http://www.Kernel.org Решение:Способов устранения обнаруженной уязвимости не существует в настоящее время. |
|
Ссылки: | Possible DoS on Linux kernel 2.4 and 2.6 using sigqueue overflow. |