При анализе исходных текстов XOrg автоматизированной системой Coverity, была выявлена (http://www.linuxelectrons.com/article.php/20060502101411582) одна из самых серьезных проблем безопасности X11 сервера, обнаруженных за последние 6 лет.
Используя найденную (http://secunia.com/advisories/19900/) в расширении XRender проблему, атакующий, имеющий локальный или удаленный доступ к X-серверу, может вызвать отказ в обслуживании или запустить код (в большинстве случаев X-сервер запущен из-под root).
Проблеме подвержены X11R6.8.x, X11R6.9.0 и X11R7.0 (xorg-server 1.0.x).URL: http://www.linuxelectrons.com/article.php/20060502101411582
Новость: http://www.opennet.me/opennews/art.shtml?num=7448
Везде говорится одно и тоже: НЕ ЗАПУСКАЙТЕ ИКСЫ ИЗ-ПОД ROOT'А. Да и ставить их на сервер - последнее дело...
>Везде говорится одно и тоже: НЕ ЗАПУСКАЙТЕ ИКСЫ ИЗ-ПОД ROOT'А.Инструкцию по запуску иксов без root в студию.
Готов поспорить, что у тебя иксы тоже под root работают. Иначе никак, разве что SELinux использовать.
точно, под рутом!
>>Везде говорится одно и тоже: НЕ ЗАПУСКАЙТЕ ИКСЫ ИЗ-ПОД ROOT'А.
>
>Инструкцию по запуску иксов без root в студию.
>Готов поспорить, что у тебя иксы тоже под root работают. Иначе никак,
>разве что SELinux использовать.
Уж не знаю, что у вас там из под линуксов без рута не запускается, а под FreeBSD прекрасно работает. echo "exec startkde" > ~/.xinitrc и вперёд, работать.
[...отмодерировано...]
но чтоб не отличать KDE от XWindow это перебор... :)
Нислабо :))))
Человек продемонстировал запуск KDE после запуска X Window (под root судя по его словам), что, очевидно, по его мнению, остроумно демонстирует запуск такого монстроида.[...отмодерировано...]
С тобой можно было бы согласиться, если бы не одно но. Что бы ни написал Dyr в .xinitrc, сам факт этого уже говорит о многом. Во-1х, о том, что он всё-таки отличает KDE от "XWindow". Во вторых, никаких xdm/gdm/и т.д. не запускается при старте системы (что исключает root'а), т.к. придётся редактировать немножко другие файлы (.xsession, etc). Ну и как следствие, иксы стартуют от пользователя командой startx.[...отмодерировано...]
Эх... Думать надо, прежде, чем постить. А после обдумывания - проверять.# id
uid=1001(userop) gid=0(wheel) groups=0(wheel), 5(operator)
# ps auxww | grep -I "X"
userop 667 0,0 0,1 1672 1148 v2 S+ вт15 0:00,01 /bin/sh /usr/X11R6/bin/startx
userop 685 0,0 0,1 1996 1168 v2 S+ вт15 0:00,00 /usr/X11R6/bin/xinit /home/userop/.xinitrc -- -auth /home/userop/.serverauth.667 -nolisten tcp
root 686 0,0 4,0 50724 41500 v2 R вт15 17:17,23 X :0 -auth /home/userop/.serverauth.667 -nolisten tcp (Xorg)
# pwd
/usr/X11R6/bin
# ls -l
lrwxr-xr-x 1 root wheel 4 20 апр 17:27 X -> Xorg
-rws--x--x 1 root wheel 1677193 20 апр 17:27 XorgЭтого достаточно, чтоб доказать, что иксы не-под рутом не запускаются?
А вы повнимательней посмотрите или запустите top на предмет X, он-то как раз из под рута.floyd@w451:~> ps aux | grep X
floyd 4682 0.0 0.4 3876 1084 tty1 S+ May03 0:00 /bin/sh /usr/X11R6/bin/startx
floyd 4683 0.0 0.2 2796 516 tty1 S+ May03 0:00 tee /home/floyd/.X.err
floyd 4707 0.0 0.2 2496 520 tty1 S+ May03 0:00 xinit /usr/X11R6/lib/X11/xinit/xinitrc -- /usr/X11R6/lib/X11/xinit/xserverrc -auth /home/floyd/.serverauth.4682 -nolisten tcproot 4708 0.2 18.9 53492 42484 tty7 Ss+ May03 2:56 X :0 -auth /home/floyd/.serverauth.4682 -nolisten tcp -nolisten tcp # Ой, а он и вправду из под рута ;)
floyd 4738 0.0 0.4 3876 992 tty1 S May03 0:00 /bin/bash /usr/X11R6/lib/X11/xinit/xinitrc
Ну да, ну да, - теперь не отличаем GID=0 и имя root или wheel
те же яйца только вид с боку.Если драйвера будут иметь UID != 0, и им ядро позволит запускатся,
то это будет жопа ещё большая, нежели явная ошибка в модуле Xrender.
>Ну да, ну да, - теперь не отличаем GID=0 и имя root или wheel
>те же яйца только вид с боку.ну да, ну да... теперь еще и не умеем распознать, что в выводе `ps auxww` первым полем идёт не GID, а UID...
Первые две строки показывались для того, чтоб показать, кто какой auth-cookie юзает, третья - показать, от какого пользователя идёт приём данного cookie.Далее вполне понятный, думаю, вывод `ls -l`. Или указать на arpopos или даже конкретные man'ы?
подтверждаю у меня под фрей X-ы запускаются startx-ом
и тоже из под юзера, настройка да только из под root-а
/usr/X11R6/bin/Xorg принадлежит root'у и имеет установленный suid-бит. Дальше объяснять?
> Везде говорится одно и тоже: НЕ ЗАПУСКАЙТЕ ИКСЫ ИЗ-ПОД ROOT'А. Да и ставить их на сервер - последнее дело...они всеравно частично под рутом работают, а сервера ведь разные бывают не только рутеры =)
а эксплоит будет?
Running rendertest from XCB xcb/xcb-demo, is known to trigger this
issue and results in a crash of the X server.
Это патчик, и где стоит "-" это нихт гуд.
---------------
if (npoint < 3)
return;
ntri = npoint - 2;
- tris = ALLOCATE_LOCAL (ntri & sizeof (xTriangle));
+ tris = ALLOCATE_LOCAL (ntri * sizeof (xTriangle));
if (!tris)
return;
for (tri = tris; npoint >= 3; npoint--, points++, tri++)
------------Ставим npoint = 3, в xTriangle = пихаем адрес чего нам надо,
где достать то что нам надо, это надолго... да и оффтопик тут.
В OpenBSD не из под рута. Если не верите читайте послейднее интервью Theo De Raadt'a, проскакивало здесь недавно...
Поддерживаю предыдущего оратора, традиционно для OpenBSD:
# ps aux | grep X | grep -v grep
_x11 29067 0.6 8.7 9384 28612 ?? S 27Apr06 98:44.73 X :0 (Xorg)
root 21611 0.0 0.0 1616 4 ?? I 27Apr06 0:00.02 X: [priv] (Xorg)
root 30848 0.0 0.0 632 4 C1 I+ 27Apr06 0:00.05 /bin/sh /usr/X11R6/bin/startx
FreeBSD не под рутом :){trubin@guru ~} uname -a
FreeBSD guru.kgfi.local 5.5-PRERELEASE FreeBSD 5.5-PRERELEASE #1: Thu Apr 6 18:18:20 MSD 2006 root@guru.kgfi.local:/usr/obj/usr/src/sys/guru.kgfi.local i386
{trubin@guru ~} top
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
703 trubin 96 0 43352K 26548K select 0:16 2.10% 2.10% Xorg
777 trubin 96 0 28920K 24196K select 0:05 0.59% 0.59% kdeinit
747 trubin 96 0 32008K 25424K RUN 0:05 0.05% 0.05% kdeinit
ls -l `which Xorg` в студию
вот вырезка из Makefile порта во FreeBSD x11-servers/xorg-server
------cut-------
.if !defined(NO_SUID_XSERVER) || ${NO_SUID_XSERVER} == NO
pre-everything::
@${ECHO_MSG} "By default, the X Server installs as a set-user-id root binary. When run by"
@${ECHO_MSG} "a normal user, it checks arguments and environment as done in the x11/wrapper"
@${ECHO_MSG} "port before handling them normally. If you are concerned about the security"
@${ECHO_MSG} "of this, but still want to run an X Server (for example using xdm/kdm/gdm,"
@${ECHO_MSG} "which will still run the server as root), you can cancel the build and set"
@${ECHO_MSG} "NO_SUID_XSERVER=YES in /etc/make.conf."SCRIPTS_ENV+= SUID_XSERVER=YES
.else
SCRIPTS_ENV+= SUID_XSERVER=NO
.endif
-----cut------
Да, что-то смысл спора не очень понятен. В FreeBSD Х можно запускать не из под рута. Даже в хендбуке описано давно для ленивых :)
А линух - и в африке со своими особенностями :)
То, что можно запускать не из под рута, еще не означает того, что работает он с пользовательскими привилегиями.