В ядре FreeBSD 6.x — 7.x обнаружена критическая уязвимость

BSDКак сообщает Przemyslaw Frasunek, известный специалист в сфере безопасности, в ядре FreeBSD 6.x обнаружена уязвимость, позволяющая получить права root любому непревлилгированному процесу.
Уязвимость была найдена в интерфейсе уведомлений о событиях kqueue, которая приводит к разыменованию null-указателя в в ядре. Рабочий эксплойт позволяет запускать любой процесс с привилегиями root, разместив его в странице памяти с указателем на этот адрес — 0×0.

Информация об уязвимости поступила в сообщество FreeBSD 29 Августа 2009 года, но была проигнорирована.

К сожалению неясно, в каких точно версиях имеется эта уязвимость. Изначально были затронуты версии 6.0-6.4, но мне удалось успешно запустить эксплоит на версии 7.2.

Учитывая, что в nginx недавно была обнаружена уязвимость, позволяющая удаленно выполнять запуск кода с правами nginx, комбинация этих двух уязвимостей может привести к тому, что на FreeBSD с работающим nginx будет скомпроментирован root.

Источник информации.

P.S. По этическим причинам ссылка на рабочий эксплоит убрана с блога.

P.P.S. По просьбам посетителей опубликован патч ядра FreeBSD:

/*
Patch for this vulnerability, as in CVS:

--- src/sys/kern/kern_descrip.c	2006/09/04 10:30:09	1.279.2.8
+++ src/sys/kern/kern_descrip.c	2006/09/29 18:30:48	1.279.2.9
@@ -35,7 +35,7 @@
  */

 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/kern/kern_descrip.c,v 1.279.2.8 2006/09/04 10:30:09 pjd Exp $");
+__FBSDID("$FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/kern/kern_descrip.c,v 1.279.2.9 2006/09/29 18:30:48 jmg Exp $");

 #include "opt_compat.h"
 #include "opt_ddb.h"
@@ -2602,7 +2602,7 @@ static int
 badfo_kqfilter(struct file *fp, struct knote *kn)
 {

-	return (0);
+	return (EBADF);
 }
 static int
*/


Вы можете отслеживать комментарии к этой записи с помощью RSS 2.0. Комментарии и эхо-тестирование не разрешены.

Комментарии: 7 »

 
  • John Lepikhin пишет:

    Посмотрел на нескольких машинах в исходниках разной старости. Везде EBADF возвращается. Отсюда мораль: либо это совсем свежая дыра, либо её никогда не было. Эксплойт не сработал.

  • taleks пишет:

    > но мне удалось успешно запустить эксплоит на

    > версии 7.2.

    что тогда исправляет приведённый в вашем сообщении патч, если эти изменения были внесены ещё в 2006 году?

  • neko пишет:

    > uname -rs

    FreeBSD 7.2-STABLE

    > cat /usr/src/sys/kern/kern_descrip.c | grep FBSDID

    __FBSDID («$FreeBSD: src/sys/kern/kern_descrip.c,v 1.313.2.19 2009/07/14 19:48:31 jhb Exp $»);

    > less /usr/src/sys/kern/kern_descrip.c | /kqfilter

    badfo_kqfilter (struct file *fp, struct knote *kn)

    {

    return (EBADF);

    }

    Поздравляем с удачной криоразморозкой.

  • unscrubber пишет:

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

    в исходниках версии 7.0 нет никакого return (0) в функции badfo_kqfilter в строке 2638, там как и в патче return (EBADF);

    вероятно речь идет о очень старых версиях, старее чем @38

    __FBSDID («$FreeBSD: src/sys/kern/kern_descrip.c,v 1.313.4.1 2008/02/14 11:45:41 simon Exp $»);

  • Elight пишет:

    В новости сказано — «Versions 7.1 and and beyond are not vulnerable.», так что непонятно как у вас мог сработать эксплоит на 7.2.

    kern_descrip.c в 7.1 имеет версию «$FreeBSD: src/sys/kern/kern_descrip.c,v 1.313.2.10.2.2 2008/12/06 20:36:46 peter Exp $», патч бесполезен — там и так «EBADREF» в возврате прописан.

  • Dorlas пишет:

    Посмотрел исходники от FreeBSD 6.3...в файле kern_descrip.c везде стоит return (EBADF);

    Новость попахивает бульварной прессой...

  • TeesejoiliRef пишет:

    Привет, что-то я иничего не понял. Как именно это действует

 
 
шторы для спальни. Афиша театр станиславского. репертуар театра станиславского москва. Заказ в театры Москвы..