mem = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_ANONYMOUS | MAP_PRIVATE, 0, 0)
Этот код у меня в системе не работает... Начал смотреть дальше, и вот что выяснилось.
Здесь описывается тот факт, что для нужд wine (выполнения 16 битного кода) в ядре разрешается делать mmap на 0 адрес (/proc/sys/vm/mmap_min_addr). Самое интересное, что в статье утверждается, что в Ubuntu при установке wine эта возможность включается для системы в целом. Кроме того, в следствии особенностей архитектуры SELinux, по умолчанию, системы с включенным SELinux (как я понял) также разрешают пользователям делать mmap 0 адреса.
Интересно. :)
UPD: Кроме того, если в системе есть pulseaudio с установленным suid root, то эксплоит будет загружен через pulseaudio -L и mmap будет уже делаться от пользователя с euid == 0 (и выполнится успешно). Правда, в таком случае можно получить рута более простым способом -- так как мы и так уже получили привилегии администратора. Довольно нечестный прием. :)
Комментариев нет:
Отправить комментарий