Захватываем ring 0 в Linux

Эльфы падают в дамп


Самой свежей дырой, которая только была найдена на момент написания этих строк, оказалась уязвимость в ELF-загрузчике, обнаженная 11мая 2005 года и поражающая целую серию ядер: 2.2.27-rc2, 2.4, 2.4.31-pr1, 2.6, 2.6.12-rc4 и т. д.

Ошибка сидит в функции elf_core_dump(), расположенной в файле binfmt_elf.c. Ключевой фрагмент уязвимого листинга выглядит так:

static int elf_core_dump(long signr, struct pt_regs * regs, struct file * file){         struct elf_prpsinfo psinfo; /* NT_PRPSINFO */          /* first copy the parameters from user space */         memset(&psinfo, 0, sizeof(psinfo));         {                 int i, len;               /* 1 */                 len = current->mm->arg_end - current->mm->arg_start;                 if (len >= ELF_PRARGSZ) / * 2 * /                          len = ELF_PRARGSZ-1;                 copy_from_user(&psinfo.pr_psargs,/* 1167 */                 (const char *)current->mm->arg_start, len);         …         }…}



Содержание раздела