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

Как сообщает 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
*/