The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Уязвимость в ядре Linux, позволяющая получить права root, opennews (??), 22-Фев-17, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


98. "Уязвимость в ядре Linux, позволяющая получить права root"  –1 +/
Сообщение от Анонимм (??), 23-Фев-17, 09:52 
> CONFIG_IP_DCCP=m
> lsmod | grep -i dccp
> <пусто>
> Сам себя он не включит, можно спать спокойно?

Включит.
Когда нужен какой символ ведру, и он есть в модуле - то модуль загрузится.
/sbin/insmod ядро очень даже запускает самостоятельно (как и /sbin/init)

Ответить | Правка | К родителю #66 | Наверх | Cообщить модератору

146. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Аноним (-), 23-Фев-17, 16:15 
>> CONFIG_IP_DCCP=m
>> lsmod | grep -i dccp
>> <пусто>
>> Сам себя он не включит, можно спать спокойно?
> Включит.
> Когда нужен какой символ ведру, и он есть в модуле - то
> модуль загрузится.
> /sbin/insmod ядро очень даже запускает самостоятельно (как и /sbin/init)

Пруф?

Ответить | Правка | Наверх | Cообщить модератору

149. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Анонимм (??), 23-Фев-17, 16:19 
Не дам. Некогда искать.
Может, это моё заблуждение, но мне пока и так нормально.

Сомневающимся - можно просто удалить dccp.ko

Ответить | Правка | Наверх | Cообщить модератору

159. "Уязвимость в ядре Linux, позволяющая получить права root"  +1 +/
Сообщение от Аноним (-), 23-Фев-17, 18:49 
Пустозвонить некрасиво :)
Ответить | Правка | Наверх | Cообщить модератору

174. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Анонимм (??), 23-Фев-17, 20:41 
> Пустозвонить некрасиво :)

Где пустозвонство? Пруфы, что модуль не может быть загружен автоматом?

Ответить | Правка | Наверх | Cообщить модератору

195. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Аноним (-), 24-Фев-17, 09:04 
> Где пустозвонство? Пруфы, что модуль не может быть загружен автоматом?

Что ядро может без моего ведома загрузить произвольный модуль. Это тогда не просто уязвимость была бы, это дырища.

Ответить | Правка | Наверх | Cообщить модератору

200. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Анонимм (??), 24-Фев-17, 12:19 
Ну что ж, руки дошли по такому поводу.
Демонстрирую "дырищу".

в сырцах ядра:
kernel/kmod.c
    * __request_module - try to load a kernel module
  int __request_module(bool wait, const char *fmt, ...)

Эта функция сама запускает бинарий /sbin/modprobe

include/linux/kmod.h - тут есть удобный макрос на неё:
  #define request_module(mod...) __request_module(true, mod)

А потом - просто грепаем по всия сырцам:

$ grep -r request_module |wc -l
534

$ grep -r request_module
net/sctp/probe.c:               if (request_module("sctp"))
net/can/af_can.c:               err = request_module("can-proto-%d", protocol);
net/can/af_can.c:                       printk_ratelimited(KERN_ERR "can: request_module "
net/core/dev_ioctl.c:           no_module = request_module("netdev-%s", name);
net/core/dev_ioctl.c:           request_module("%s", name);
net/core/rtnetlink.c:                           request_module("rtnl-link-%s", kind);
net/core/sock_diag.c:           request_module("net-pf-%d-proto-%d-type-%d", PF_NETLINK,
net/core/sock_diag.c:                   request_module("net-pf-%d-proto-%d-type-%d", PF_NETLINK,
net/core/sock_diag.c:                   request_module("net-pf-%d-proto-%d-type-%d", PF_NETLINK,
net/core/sock_diag.c:                   request_module("net-pf-%d-proto-%d-type-%d", PF_NETLINK,
net/dccp/probe.c:               ret = request_module("dccp");
net/ipv6/af_inet6.c:                            request_module("net-pf-%d-proto-%d-type-%d",
net/ipv6/af_inet6.c:                            request_module("net-pf-%d-proto-%d",
net/ipv6/netfilter/ip6_tables.c:        t = try_then_request_module(xt_find_table_lock(net, AF_INET6, name),
net/ipv6/netfilter/ip6_tables.c:        t = try_then_request_module(xt_find_table_lock(net, AF_INET6, name),
net/ipv6/netfilter/ip6_tables.c:                try_then_request_module(xt_find_revision(AF_INET6, rev.name,
net/netlink/genetlink.c:                        request_module("net-pf-%d-proto-%d-family-%s",
net/netlink/af_netlink.c:               request_module("net-pf-%d-proto-%d", PF_NETLINK, protocol);
.....

Насчёт этого:
net/dccp/probe.c:               ret = request_module("dccp");

Это тоже код модуля, зависимого от dccp, запрашивает собственно самого dccp при инициализации.


Ну и реальное доказательство. На примере conntrack:
убунта 16.04
кернель 4.4.0-62

Нет conntrack модуля

# lsmod|head -3
Module                  Size  Used by
uas                    24576  0
usb_storage            69632  1 uas

Дёрнули юзерлевелский conntrack
# conntrack -L >/dev/null
conntrack v1.4.3 (conntrack-tools): 346 flow entries have been shown.

И модуль уже загружен
# lsmod|head -3
Module                  Size  Used by
nf_conntrack_netlink    40960  0
uas                    24576  0

Ессьно, убеждаемся, что это не сама прога /usr/sbin/conntrack грузит модуль:

Удаляем модуль:
# rmmod nf_conntrack_netlink
# rmmod nf_conntrack_netlink
rmmod: ERROR: Module nf_conntrack_netlink is not currently loaded

Смотрим:
# lsmod|head -3
Module                  Size  Used by
uas                    24576  0
usb_storage            69632  1 uas

И пускаем conntrack под strace'ом, отслеживая execve():
# strace -s 300 -f -e execve conntrack -L >/dev/null
execve("/usr/sbin/conntrack", ["conntrack", "-L"], [/* 39 vars */]) = 0
conntrack v1.4.3 (conntrack-tools): 348 flow entries have been shown.
+++ exited with 0 +++

И как видим, сам бинарь ничего стороннего не вызывает.

А модуль - уже снова с нами:
# lsmod|head -3
Module                  Size  Used by
nf_conntrack_netlink    40960  0
uas                    24576  0

Да, бинарь мы пускали от рута конечно. Но факт автоматической загрузки модуля ядром - налицо. Кому интересно - в сырцах ядра можно порыться на предмет наличия загрузки при обращении за функциональносью и нерутового юзера.

Добро пожаловать в реальность.

Ответить | Правка | Наверх | Cообщить модератору

209. "Уязвимость в ядре Linux, позволяющая получить права root"  –1 +/
Сообщение от Аноним (-), 24-Фев-17, 13:41 
То есть без рута опять не работает? Фи.
Ответить | Правка | Наверх | Cообщить модератору

211. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Аноним (-), 24-Фев-17, 13:47 
Вообще насколько я понимаю, модуль должен находиться обязательно в /lib/modules/... ? Если так, то всё в порядке. Как туда заражённый модуль попадёт, в любом случае? dccp отключён по умолчанию везде и я не знаю ни одной программы которая бы его использовала. Поэтому панику отставить и спать спокойно.

З.Ы. Таки новость жёлтая донельзя. DCCP - модуль ядра. Почему уязвимость в ядре тогда? Непонятно. Ядро от него не зависит, его можно отключить, проверено. В чём проблема тогда?

Ответить | Правка | К родителю #200 | Наверх | Cообщить модератору

212. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Michael Shigorinemail (ok), 24-Фев-17, 13:57 
> Если так, то всё в порядке.

Нет.

> Как туда заражённый модуль попадёт, в любом случае?

Он не "заражённый", а дырявый; из штатного пакета в репозитории/исошке.

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

Пожалуйста, не спешите пока давать рекомендации -- кто-то может поверить и благодаря Вам вляпаться.

> DCCP - модуль ядра. Почему уязвимость в ядре тогда? Непонятно.

Потому что в модуле ядра, собирающемся из дерева исходников ядра и поставляемом с ним.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру