Эльфы падают в дамп
Самой свежей дырой, которая только была найдена на момент написания этих строк, оказалась уязвимость в 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); … }…}