URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 76095
[ Назад ]

Исходное сообщение
"Локальная Root-уязвимость в X.Org"

Отправлено opennews , 06-Апр-11 02:11 
Разработчики проекта X.Org объявили (http://lists.freedesktop.org/archives/xorg-announce/2011-Apr...) об обнаружении критической уязвимости в утилите xrdb, позволяющей локальному злоумышленнику выполнить свой код с привилегиями суперпользователя. Организация запуска кода производится через передачу специально оформленного имени хоста, содержащего экранированные спецсимволы. Выполнение кода производится в момент запуска дисплейного менеджера, в котором  для загрузки базы ресурсов от имени суперпользователя используется утилита xrdb.

Проблемное имя хоста может быть передано двумя путями: через DHCP или xdmcp. В первом случае злоумышленник должен иметь административный доступ к DHCP-серверу или физический доступ к локальному сегменту сети. Во втором случае на атакуемой системе должна присутствовать возможность удаленного входа по xdmcp и злоумышленник должен иметь локальный аккаунт в системе.


Проблему обнаружил Себастьян Крамер (Sebastian Krahmer) из команды по обесп...

URL: http://lists.freedesktop.org/archives/xorg-announce/2011-Apr...
Новость: http://www.opennet.me/opennews/art.shtml?num=30142


Содержание

Сообщения в этом обсуждении
"Локальная Root-уязвимость в X.Org"
Отправлено px , 06-Апр-11 02:11 
вейландопейсатели зря стараются. У иксов даже с такими мелкими багами безупречная репутация в отличие от их поделки.

"Локальная Root-уязвимость в X.Org"
Отправлено bircoph , 06-Апр-11 02:48 
А их ещё не закопали?
Без ssh -X у wayland нет пути.

"Локальная Root-уязвимость в X.Org"
Отправлено crypt , 06-Апр-11 08:59 
от не поверишь, сколько лет в консоли, а ssh -X использовал всего пару раз.

"Локальная Root-уязвимость в X.Org"
Отправлено sHaggY_caT , 06-Апр-11 11:59 
Навскидку, халявная интеграция Skype и Asterisk настраивается только через ssh -X, если нет желания платить $ digium'у и Skype'у за каждый канал, и на сервере запускается по экзмепляру Skype-а.

"Локальная Root-уязвимость в X.Org"
Отправлено User294 , 06-Апр-11 12:17 
У любителей проприетарщины вечно какой-то геморрой на ровном месте :)

"Локальная Root-уязвимость в X.Org"
Отправлено ананим , 06-Апр-11 14:33 
а не любителям проприетарщины графика с сервера уже не нужна? :D

зыж
это может показаться сложным, но вообразите - для примера, есть слабая станция, на которой слегка геморно запустить майю/блэндер/... вместо этого они пускаются на сервере. а если удалённо, то и через ssh -CX[или Y]


"Локальная Root-уязвимость в X.Org"
Отправлено User294 , 06-Апр-11 18:27 
Просто роутинг звонков с участием иксов и ssh - cильно напоминает удаление гланд, через жопу, автогеном, но только применительно к компьютерам :).

"Локальная Root-уязвимость в X.Org"
Отправлено Michael Shigorin , 06-Апр-11 19:34 
Или когда "там" куча данных либо ресурсов для их обработки.

Регулярнейшим образом запускаю удалённо (ssh -Y) на домашней машинке recoll для поиска по почтовому архиву, nxclient для тестирования свежевыпеченых исошек на серверах и ещё по мелочи.


"Локальная Root-уязвимость в X.Org"
Отправлено ананим , 06-Апр-11 20:12 
или когда "да не хочу я вон ту шнягу себе ставить". ;)

вполне сукурно, быстро и удобно.


"Локальная Root-уязвимость в X.Org"
Отправлено аанноо , 06-Апр-11 20:56 
Вроде недавно была новость про то, что gtk уже через браузер умеет. ;)

"Локальная Root-уязвимость в X.Org"
Отправлено Nicknnn , 06-Апр-11 13:40 
легко заменяется на Xvnc например.

"Локальная Root-уязвимость в X.Org"
Отправлено ананим , 06-Апр-11 14:37 
это типа так:
>ssh -C -L 4961:localhost:5961 my.dns-name.com

http://linuxreviews.org/howtos/xvnc/#toc13

:D


"Локальная Root-уязвимость в X.Org"
Отправлено non anon , 06-Апр-11 18:13 
> легко заменяется на Xvnc например.

Настраивать xvnc - порядочный гемор. А иксы через ssh обычно работают "из коробки".


"Локальная Root-уязвимость в X.Org"
Отправлено ананим , 06-Апр-11 13:33 
>от не поверишь, сколько лет в консоли, а ssh -X использовал всего пару раз.

это типа такое доказательство того, что трафик вайланда в шифрации не нуждается?


"Локальная Root-уязвимость в X.Org"
Отправлено crypt , 06-Апр-11 14:03 
Это высказывание против использования X11 протокола по сети. А какой трафик в wayland требуется шифровать?

"Локальная Root-уязвимость в X.Org"
Отправлено ананим , 06-Апр-11 14:16 
весь.
зыж
>Это высказывание против использования X11 протокола по сети.

неа.
это описание своего не большого опыта и не более.


"Локальная Root-уязвимость в X.Org"
Отправлено non anon , 06-Апр-11 18:15 
> от не поверишь, сколько лет в консоли, а ssh -X использовал всего
> пару раз.

Если из этой фразы убрать "-X", ее значение не особо изменится. Что ж тогда, ssh на помойку волочь?
hint: личный опыт Васи Пупкина - это еще не истина в последней инстанции.


"Локальная Root-уязвимость в X.Org"
Отправлено Аноним , 06-Апр-11 13:38 
http://www.linux.org.ru/polls/polls/5937580

"Локальная Root-уязвимость в X.Org"
Отправлено Lain_13 , 06-Апр-11 03:51 
Сравнил систему которая энцать леть в разрабатывается и допиливается с наколеночным проектом, на который лишь относительно недавно обратили внимание и который возник так-же недавно.
Естественно у иксов и репктация, и всё такое. Но у Вэйленда есть свои плюсы. Посмотрим, что будет лет через пять-десять.

"Локальная Root-уязвимость в X.Org"
Отправлено Zenittur , 06-Апр-11 08:27 
Причём здесь они? И ещё, посмотрите в "похожих новостях" о том, что X-сервер можно запустить без root-прав.

"Локальная Root-уязвимость в X.Org"
Отправлено ascrzy , 06-Апр-11 10:48 
правильно, нахер нам нужен вообще новый софт, будем юзать всякую херню которая проектировалась лет эдак 20 назад, и не важно что работает там всё через жопу, главное что юниксвейно, на первый взгляд.

"Локальная Root-уязвимость в X.Org"
Отправлено хм , 06-Апр-11 11:21 
> главное что юниксвейно, на первый взгляд

Это иксы-то юниксвейны?
вяленд куда больший юниксвей


"Локальная Root-уязвимость в X.Org"
Отправлено ананим , 06-Апр-11 13:34 
с чего бы вдруг?

"Локальная Root-уязвимость в X.Org"
Отправлено Lain_13 , 06-Апр-11 15:32 
Вероятно потому, что пытается выполнять ровно одну задачу и больше ни куда не лезет и ни чего иного делать не пытается. Может он даже слишком минималистичен, но иксы — комбайн. Причём от рождения.

"Локальная Root-уязвимость в X.Org"
Отправлено ананим , 06-Апр-11 16:53 
одну?!!! акстись.
а вот типа так вот
$ wayland | tar -cz - | ssh host.name tar -xz - | wayland
сможет? не? :D

зыж
вы хоть диаграмму этого вайланда видели?
http://wayland.freedesktop.org/architecture.html
сказать что вайланд выполняет одну задачу, это всё равно что сказать что мой ноут тоже выполняет одну задачу - числа считает.


"Локальная Root-уязвимость в X.Org"
Отправлено non anon , 06-Апр-11 18:18 
> Это иксы-то юниксвейны?
> вяленд куда больший юниксвей

По-моему, вы путаете юниксвей (модульность и сетевая прозрачность - X) с виндовс-веем (мы такого нагородим в наш монолитный супер-комбайн, а на структуру пофиг - wayland).


"Локальная Root-уязвимость в X.Org"
Отправлено px0 , 06-Апр-11 19:58 
> правильно, нахер нам нужен вообще новый софт, будем юзать всякую херню которая
> проектировалась лет эдак 20 назад

Ну так давайте сразу выкинем все что имеет отношение к UNIX т.к. он проектировался 60х. Нафиг вообще все это старье.

> и не важно что работает там
> всё через жопу, главное что юниксвейно, на первый взгляд.

Пруф или не было? Важно что там все действительно работает и работает не первый год, а вейланд пока неюзабелен и много чего не умеет (И крики такого школо-крикуна как ты при этом не учитывается.). А все что он умеет это предоставить якобы быстроту  взамен функционала.



"Локальная Root-уязвимость в X.Org"
Отправлено Аноним , 06-Апр-11 03:17 
Для Ubuntu Natty уже похоже есть обновление
https://launchpad.net/~xorg-edgers/+archive/ppa/+sourcepub/1...

"Локальная Root-уязвимость в X.Org"
Отправлено Lain_13 , 06-Апр-11 15:34 
Ты б ещё из гита собрать посоветовал. Эджерсов подключать — себя не любить. Это ж ветка для тестирования.

"Локальная Root-уязвимость в X.Org"
Отправлено pavlinux , 06-Апр-11 05:13 

-    if (!isalpha(c) && !isdigit(c) && c != '_')
+    if (!isalpha(c) && !isdigit(c) && c != '_' && c != '.' && c != ':' && c != '-')
        *s = '_';

Угу... =)


"Локальная Root-уязвимость в X.Org"
Отправлено cmp , 06-Апр-11 08:15 
а не проще?

if(!isalpha(c) && !isdigit(c) && !index("_-:", c))
  *s = '_';


"Локальная Root-уязвимость в X.Org"
Отправлено gegMOPO4 , 06-Апр-11 10:24 
Нестандарт.

"Локальная Root-уязвимость в X.Org"
Отправлено pavlinux , 06-Апр-11 13:06 
> Нестандарт.

strchr()

SVID 3, POSIX, BSD 4.3, ISO 9899


"Локальная Root-уязвимость в X.Org"
Отправлено gegMOPO4 , 06-Апр-11 13:31 
Именно.

"Локальная Root-уязвимость в X.Org"
Отправлено Lain_13 , 06-Апр-11 15:36 
Точку потерял. :)

"Локальная Root-уязвимость в X.Org"
Отправлено Аноним , 06-Апр-11 11:41 
и о чем "угу"? что смущает в старой или новой стоке?

"Локальная Root-уязвимость в X.Org"
Отправлено pavlinux , 06-Апр-11 13:11 
Да не, код нормальный, я про:

"Организация запуска кода производится через передачу специально
оформленного имени хоста, содержащего экранированные спецсимволы."

Собственно, вот они, спецсимволы - ".", ":", "-".


"Локальная Root-уязвимость в X.Org"
Отправлено gegMOPO4 , 06-Апр-11 13:29 
Наоборот, раньше эти символы были запрещены и заменялись на подчёркивание, теперь допустимы.

"Локальная Root-уязвимость в X.Org"
Отправлено pavlinux , 06-Апр-11 13:58 
> Наоборот, раньше эти символы были запрещены и заменялись на подчёркивание, теперь допустимы.

Ну да. :)

И как я понял, экранированные оно не понимало,  т.е '\:', '\.', '\- '  проскакивало.



"Локальная Root-уязвимость в X.Org"
Отправлено Аноним , 06-Апр-11 16:02 
какое экранирование куда проскакивало? ошибка-то не там была

"Локальная Root-уязвимость в X.Org"
Отправлено pavlinux , 06-Апр-11 16:12 
> ошибка-то не там была

Не там, это где? :)


x11-xserver-utils-7.6+2~edgers/xrdb/xrdb.c


static void
+AddSimpleDef(String *buff, char *title)
+{
+    AddDef(buff, title, (char *)NULL);
+}
+
+static void
AddDefQ(String *buff, char *title, char *value)
{
#ifdef PATHETICCPP
@@ -407,8 +457,9 @@
     else
#endif
     if (value && (value[0] != '\0')) {
-    AddDef(buff, title, "\"");
-    addstring(buff, value);
+    AddSimpleDef(buff, title);
+    addstring(buff, "=\"");
+    addescapedstring(buff, value);
    addstring(buff, "\"");
     } else
    AddDef(buff, title, NULL);
@@ -423,24 +474,28 @@
}

static void
-AddSimpleDef(String *buff, char *title)
+AddDefTok(String *buff, char *prefix, char *title)
{
-    AddDef(buff, title, (char *)NULL);
+    char name[512];
+
+    snprintf(name, sizeof(name), "%s%s", prefix, title);
+    AddSimpleDef(buff, name);
}

static void
-AddDefTok(String *buff, char *prefix, char *title)
+AddDefHostname(String *buff, char *title, char *value)
{
     char *s;
     char name[512];
     char c;

-    snprintf(name, sizeof(name), "%s%s", prefix, title);
+    strncpy (name, value, sizeof(name)-1);
+    name[sizeof(name)-1] = '\0';
     for (s = name; (c = *s); s++) {
-    if (!isalpha(c) && !isdigit(c) && c != '_')
+    if (!isalpha(c) && !isdigit(c) && c != '_' && c != '.' && c != ':' && c != '-')
        *s = '_';
     }
-    AddSimpleDef(buff, name);
+    AddDef(buff, title, name);
}

static void
@@ -460,7 +515,7 @@
        addstring(buff, " -U");
     } else
    addstring(buff, "-U");
-    addstring(buff, title);
+    addtokstring(buff, title);
}

static void
@@ -523,11 +578,11 @@
     }
     if (!*server || !strcmp(server, "unix") || !strcmp(server, "localhost"))
    strcpy(server, client);
-    AddDef(defs, "HOST", server); /* R3 compatibility */
-    AddDef(defs, "SERVERHOST", server);
+    AddDefHostname(defs, "HOST", server); /* R3 compatibility */
+    AddDefHostname(defs, "SERVERHOST", server);
     AddDefTok(defs, "SRVR_", server);
     AddNum(defs, "DISPLAY_NUM", n);
-    AddDef(defs, "CLIENTHOST", client); // Вот сюда и попадал гацкий хостнэйм
+    AddDefHostname(defs, "CLIENTHOST", client);
     AddDefTok(defs, "CLNT_", client);
     AddNum(defs, "VERSION", ProtocolVersion(display));
     AddNum(defs, "REVISION", ProtocolRevision(display));
@@ -570,7 +625,7 @@
     AddNum(defs, "Y_RESOLUTION", Resolution(screen->height,screen->mheight));
     AddNum(defs, "PLANES", DisplayPlanes(display, scrno));
     AddNum(defs, "BITS_PER_RGB", visual->bits_per_rgb);
-    AddDef(defs, "CLASS", ClassNames[visual->class]);
+    AddDefQ(defs, "CLASS", ClassNames[visual->class]);
     snprintf(name, sizeof(name), "CLASS_%s", ClassNames[visual->class]);
     AddNum(defs, name, (int)visual->visualid);
     switch(visual->class) {


"Локальная Root-уязвимость в X.Org"
Отправлено Аноним , 06-Апр-11 18:03 
да, здесь и выше, т.е. где добавляем def без проверки
к "if (!isalpha(c) && !isdigit(c) && c != '_' && c != '.' && c != ':' && c != '-')" отношения не имеет

"Локальная Root-уязвимость в X.Org"
Отправлено anonymous , 06-Апр-11 17:32 
а зачем нужен этот «дисплейный менеджер»? O_O

"Локальная Root-уязвимость в X.Org"
Отправлено Michael Shigorin , 06-Апр-11 20:12 
> а зачем нужен этот «дисплейный менеджер»? O_O

Для допуска мышиного менеджера к оконному.


"Локальная Root-уязвимость в X.Org"
Отправлено anonymous , 06-Апр-11 20:22 
>> а зачем нужен этот «дисплейный менеджер»? O_O
> Для допуска мышиного менеджера к оконному.

O_O

а я всегда думал, что это для тех дебилов, которые initlevel'ом сразу в иксы лезут. ну, дебилы на то и дебилы же.