LINUX.ORG.RU
ФорумTalks

В X.Org Server выявлена удалённая уязвимость, присутствующая с 1993 года

 facetable, ,


1

1

http://www.opennet.ru/opennews/art.shtml?num=38124

Разработчики проекта X.Org сообщили о выявлении уязвимости (CVE-2013-4396), которая может потенциально привести к выполнению кода злоумышленника, имеющего доступ к выводу через удалённый X-сервер. Проблема вызвана обращением к уже освобождённой области памяти (use-after-free) в коде функции «doImageText()» (dix/dixfonts.c) и может быть эксплуатирована через отправку аутентифицированным X-клиентом специально оформленного ImageText-запроса к X-серверу.

Исправление проблемы доступно в виде патча, который будет включён в состав выпусков X Sever 1.15.0 и 1.14.4. Примечательно, что проблема присутствовала в кода X-сервера с сентября 1993 года, начиная с выпуска X11R6.0.

Вот вам и «открытый» код…

★★★★★

Последнее исправление: AX (всего исправлений: 1)

Решето такое решето.

J ★★★★★
()

сетевая прозрачность такая прозрачная

и это после полного аудита который уже проводили.

ckotinko ☆☆☆
()
Ответ на: комментарий от FRCTLL

Нужны, просто в коде X11 никто не может отличить уязвимость от кода, обеспечивающего совместимость.

Darth_Revan ★★★★★
()

1993-й вообще так себе выдался годок.

sid350 ★★★★★
()

Разратчики

Довольно разратно написанный код приводит к ошибкам, да.

one_more_hokum ★★★
()

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

FRCTLL
()

Так практический смысл около ноля :/

ЗЫ: Хакер в столовой

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от MikeDM

еще один повод троллить тех кто логиниться в иксах под рутом =)

Не-а. Но это детектор школоты, да.

tailgunner ★★★★★
()
Ответ на: комментарий от FRCTLL

Не поверишь, поди никто и не использовал!

ncrmnt ★★★★★
()

Вот вам и «открытый» код…

Был бы закрытый, ещё бы лет 20 никто бы, кроме ботоводов, не знал.

redgremlin ★★★★★
()

В опен сорсе дыры выявляются и патчатся быстро, ага.

cipher ★★★★★
()

Но авторы Rust наверняка тихо ухмыляются.

tailgunner ★★★★★
()
Ответ на: комментарий от Polugnom

И тут нахлынула волна ностальжи: первый в жизни пенёк, свга ноунэйм 14", клава, мышь и 4х сидюк фирмы митсуми))

Deleted
()

которая может потенциально привести к выполнению кода злоумышленника

Переводчику переводить бабушку через дорогу.

Since the memory is accessed almost immediately afterwards, and the
X server is mostly single threaded, the odds of the free memory having
invalid contents are low with most malloc implementations when not using
memory debugging features, but some allocators will definitely overwrite
the memory there, leading to a likely crash. <=============== CRASH, MOTHERLOVER, CRASH

redgremlin ★★★★★
()

Кто-то говорил, что на иксы совсем забили, никто их не пилит?

unfo ★★★★★
()
Ответ на: комментарий от MikeDM

еще один повод троллить тех кто логиниться в иксах под рутом =)

Беда заключается в том, что как бы ты не логинился, сами иксы обычно работают от рута. Такие вот дела ))

vasily_pupkin ★★★★★
()

20 лет непрерывных побед(c)

yu-boot ★★★★★
()

В общем, расходимся - очередной хакер изнасиловал очередного журналиста.

Суть: если сервер не сможет выделить 510 байт, и если за время выполнения присваивания, goto и if другой тред Xorg'а (который практически однопоточный) перезапишет освобожденную память, то оно может упадёт. А может и не упадёт.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

может упадёт. А может и не упадёт.

Xorg Шрёдингера какой-то.

cipher ★★★★★
()
Последнее исправление: cipher (всего исправлений: 1)

кстати, на слешдоте вспомнили историю 10-летней давности со взломом cvs-сервера, на котором хранились исходники ядра

http://linux.slashdot.org/story/13/10/09/1551240/the-linux-backdoor-attempt-o...


нЕкто взломал этот сервак и вставил код:

if ((options == (__WCLONE|__WALL)) && (current->uid = 0))

где-то на лоре кстати должно быть обсуждение этой темы

а, вот : Найден люк в ядре Linux (комментарий)

kto_tama ★★★★★
()
Последнее исправление: kto_tama (всего исправлений: 1)
Ответ на: комментарий от Lavos

Ага, он вряд ли столько проживет, если конечно взлетит

goingUp ★★★★★
()
Ответ на: комментарий от cvs-255
#include <stdio.h>
#include <stdlib.h>

typedef struct _s {
  int a;
  int b;
  int c;
} mystr;
  
int main() {
  mystr *test;
  
  test = malloc(sizeof(mystr));
  test->a = -1;
  test->b = 1;
  test->c = 2;
  free(test);
  printf("%d %d %d\n", test->a, test->b, test->c);
}
./test
0 1 2
redgremlin ★★★★★
()

Если они эту уязвимость подробно документируют вместо исправления, то пройдет еще 20 лет до первого случая использования. И то в случае агрессивной рекламы по телевидению.

ilovewindows ★★★★★
()
Ответ на: комментарий от cvs-255

Собственно, «уязвимость» в том, что между free и Send теоретически может вклинится другой поток иксов, который успеет поменять значения в памяти. Тогда будет crash. Или не будет, надо код SendError'а смотреть, мне лень. С учётом того, что free находиться в if типа такого:

d = malloc(a*b); // a - BYTE, b - 1 или 2;
if (!d) {
  free(c);
  err=ecode;
  goto error;
}
случится это может (по крайней мере под линуксом, где malloc(0) возвращает валидный указатель) примерно никогда.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

Я к тому, что память освобождена, и никто не гарантирует, что она вообще принадлежит еще процессу. Мне непонятно, кем надо быть, чтобы использовать память после освобождения

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

Там по большому счёту вообще освобождать нельзя, c - параметр функции. Весь патч заключается в том, что они делают копию параметра и освобождают его до посинения.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

Там по большому счёту вообще освобождать нельзя, c - параметр функции.

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

Весь патч заключается в том, что они делают копию параметра и освобождают его до посинения.

а смысл делать копию, чтобы тут же ее освободить?

И, повторюсь, каким идиотом надо быть, чтобы использовать указатель сразу же после его освобождения? Т.е. списать на «не заметил, что освободил», никак не получается

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Освобождать то можно, если дальше, в том числе и после выхода из функции, он нигде не используется

Побочные эффекты - это плохо.

а смысл делать копию, чтобы тут же ее освободить?

Сделали копию, поработали с копией, удалили копию. Побочных эффектов нет - оригинальный параметр не трогали.

redgremlin ★★★★★
()
Ответ на: комментарий от Polugnom

только не современные иксы, а те самые из 1993 года :)

Reset ★★★★★
()
Ответ на: комментарий от KendovNorok

Вот если бы она не была выявлена - то решето. Иначе...

штопаное решето

wxw ★★★★★
()
Ответ на: комментарий от redgremlin

Побочные эффекты - это плохо.

Если это не функция free_something

Сделали копию, поработали с копией, удалили копию.

в коде, как я понял, удалили оригинал

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

в коде, как я понял, удалили оригинал

В том что было - да, потенциально удаляли оригинал. С вероятностью, близкой к нулевой.

redgremlin ★★★★★
()
Ответ на: комментарий от cvs-255

Если это не функция free_something

Для функции free_something это не побочный эффект. А вот для функции doImageText - очень даже эффект. Но, опять же, это ошибка, но не уязвимость.

redgremlin ★★★★★
()
Ответ на: комментарий от dikiy

и действительно, был бы код закрытый, проблему бы до сих пор не нашли.

Пытаюсь сравнить «20 лет» и «до сих пор». И размышляю над тем, что есть наша жизнь перед вечностью.

nihil ★★★★★
()
Ответ на: комментарий от dikiy

был бы код закрытый, проблему бы до сих пор не нашли.

И не опозорились бы.

cipher ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.