Как стать автором
Обновить

Комментарии 56

круто, круто. Достойный ответ LNK от майкрософта.

PS А почему SELinux не спасёт?
Так мы ничего подозрительного не делаем, совершенно стандартный паттерн — выделить кусок разделяемой памяти под растровую картинку и отдать его X-серверу.
Имеется в виду после эксплоита. Как бы не характерно, чтобы X-сервер что-то постороннее читал/писал.
Ну в этом смысле да.
Вот я тоже не понял.
Если X'ы «завернуть» AppArmor'ом или SELinux'ом, то злоумышленник сможет только уронить X'ы или не только?
Писать им почти никуда не надо, запускать особо тоже ничего не надо, можно ограничить по полной программе.
Т.е. после получения контроля над процессом X-сервера не будет возможности что-то сломать кроме самих X'ов, т.е. просто грохнуть сессию пользователя.

Или все таки можно больше?
Ну, если теоретизировать, то можно посылать всякие мерзкие комбинации кнопок в окна и сниффить ввод (правда, отсылать не особо получится, но по характеру взлома — вполне можно через userspace). В принципе, для десктопа этого достаточно, чтобы сказать «ой, плохо-плохо».
Ну AppArmor/SELinux, я так понимаю, поднимает свои X'ы, которые общаются с системными. Если получить контроль над завернутыми X'ами, то можно атаковать реальные.
Быр-быр-быр…

Какие X'ы?
Ни один из них ничего не поднимает и ничего подобного не делает. Прочитайте про то что это.
>>Если X'ы «завернуть» AppArmor'ом или SELinux'ом, то злоумышленник сможет только уронить X'ы или не только?

Ну что собственно «заворачивается»? X-сервер. Нет?
Этому «завернутому» X-серверу все запрещено.
Но «на экран» он выводит через «системный» X-сервер.
И может его атаковать. Нет?
Видимо я зря употребил слово «заворачивается», хотя и поставил в кавычках.
Имел в виду что к X-серверу применяется профиль AppArmor («заворачивается» — «ограничивается»).
Т.е. есть один X сервер, который ограничен в своих действиях.

Мне кажется они ошибаются, говоря что она не спасает. От эксплойта самого по себе — наверняка нет, но последствий просто никаких не будет. По крайней мере я не вижу как в рамках этого эксплойта можно было бы обойти защиту.
Один способ:
Слушать пароли самое легкое в данной ситуации. Далее черная магия: найти окно браузера и послать туда ссылку с вашим паролем, может даже незаметно.
Ладно, лажу сказал. Правда возможно такими образом при удаленной атаке на браузер можно убежать из песочницы браузера и получить возможности обычного шела — найти открытый терминал и слать туда команды получая их от процесса браузера.
НЛО прилетело и опубликовало эту надпись здесь
Дефолтный ASLR на самом деле не спасает, нужен какой нибудь PaX, которого практически нигде нету кроме hardened gentoo.

вот например: lwn.net/Articles/330866/
НЛО прилетело и опубликовало эту надпись здесь
В 64 битах надо немного извратиться, чтобы забить все адресное пространство. В статье предлагают насоздавать на сервере пиксмапов максимального размера 32K*32K, а поскольку реально в x86-64 используется только 49 адресных бит, таких пиксмапов надо совсем немного — всего несколько десятков тысяч.
НЛО прилетело и опубликовало эту надпись здесь
Нет, оно только резервируется.
Автор в статье пишет, что ему потребовалось около 800 мб памяти.
Да, круто. С другой стороны везде есть дыры. Не зря же иксы перетаскивают под пользователя, а все уважающие себя серверы работают через chroot окружение от рута)))
хабр такой хабр. в статье об эскалации прав юзера до рута из иксов, человек важно замечает, что не зря иксы перетаскивают под пользователя. и главное скобочек побольше ставьте, здесь это любят.
C помощью данного эксплоита юзер выполняет свой код в контексте процесса иксов. Если иксы работают от рута — будет рут. Поэтому таки да,
не зря иксы перетаскивают под пользователя.
Я так понимаю с этим фиксом теперь вместо уязвимости будет падение иксов?
похоже на то. более того, я так понимаю, выполнение процедуры «нагромоздить обычными средствами X-протокола пирамиду из виджетов, а потом отправить команду, которая вызовет рекурсивный обход» в любом случае приведёт к падению иксов, дело лишь в глубине рекурсии
Изначально на стек отводится (на x86-32) участок памяти в верхней части адресного пространства, по умолчанию 128 Mбайт


# ulimit -a | grep stack
stack size (kbytes, -s) 10240
НЛО прилетело и опубликовало эту надпись здесь
> Линус Торвальдс (лично!) добавил патч

Почему-то сразу вспоминается Путин, лично тушащий пожар с самолёта-амбиции :)
НЛО прилетело и опубликовало эту надпись здесь
Это «оговорка по Фрейду»
— Папа, мне сегодня приснился Путин, ломающий X сервер!!!
— … А бывают просто сны, дочка!
Правильная версия:

— Папа, мне сегодня приснился Медведев, ломающий X сервер!!!
— … А бывают просто сны, дочка!
Не-не, именно амбиции
ООО спасибо, очень интересно и доступно. Спасибо за хорошую статью.
Спасибо. Надо будет обновить ядро. Хороший повод попиарить Qubes OS от автора эксплойта и Рутковской.
Радует поиск гуишных уязвимостей под linux.

P.S. Есть индекс будерброда и бикмака, почему бы не завести индекс эксплоитов? )))
нда а сколько было криков, что вынос GUI в userspace это великое преимущество linux над windows :)
так оно и есть
Х-сервер в юзерспейсе вроде как и не работал. Были какие-то патчи, но они толком неюзабельны были. Выносить гуй в юзерспейс, имхо, довольно накладно — там же огромное количество переключений контекста будет. Так что преимуществом довольно сложно это назвать, да.
А где же он тогда работает?
Иксы работают в юзерспейсе, но запускаются рутом :)
Исходя из того что перед рекурсивным обходом надо исчерпать память Xserver'a, то атаку достаточно легко заметить по общему торможению системы вызванным массовой отправкой процессов в своп.
Вообще-то исчерпывается не физическая память и своп, а адресное пространство. Но, конечно, подозреваю, что во время атаки Xserver вполне может немного сойти с ума от невозможности выделения памяти, и мы увидим какие-нибудь артефакты.
Адресное пространство должно быть к чему-то физическому привязано. Когда процесс пытается получить какой-то объем виртуальной памяти это приводит к явным операциям со страницами физической памяти. Иначе говоря у ядра требуют память и ее выдают за счет отправки в своп страниц других процессов. Рафаль упоминает 800 метров разделяемой памяти для х86_64, в этом случае дисковая активность будет уже заметной, хотя всегда возможны варианты.
Почему же? Нам же нужно просто резирвировать адресное пространтво, необязательно туда что-то писать. А насколько я знаю, чтобы пометить, что страница зарезервирована, нужно не очень много памяти (сколько-то там байт в одной из Page Directories).
Говоря о решения напишите про RLIMIT_AS.
RLIMIT_AS тривиально обходится порождением подпроцессов.
А если установит RLIMIT_AS на Xorg? Как в этом случае?
А почему это у вас иксы работают от рута? )
Потому же, почему и у Вас. SUID бит потому что.
НЛО прилетело и опубликовало эту надпись здесь
пока это возможно только с драйверами, поддерживающими kernel modesetting. но все равно есть некоторые шероховатости. каноникал что-то делает в этом направлении в новой убунте.
А разве от SUID не отказались в пользу PAMa?
X-серверу рутовый доступ не для аутентификации нужен. «Иксы» вообще не занимаются аутентификацией. Это задача всяких gdm и kdm'ов.
ссылочку [2] поправьте, а то opera:illegal-url
А сплоит дадите проверить?
Вот именно поэтому я предпочитаю использовать на серверах варианты установки без GUI… Кроме лишней нагрузки дает и такие возможности… К сожалению, мою точку зрения воспринимают не все :(
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации