The OpenNET Project / Index page

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

Уязвимости в реализации сокетов AF_PACKET и UDP-стеке ядра Linux

11.08.2017 10:42

В сетевой подсистеме ядра Linux выявлены две опасные уязвимости, которые позволяют локальному пользователю повысить свои привилегии в системе:

  • Первая уязвимость (CVE-2017-1000112) вызвана состоянием гонки (race condition) в коде управления аппаратно акселерированным разбором фрагментированных UDP-пакетов - UFO (UDP Fragmentation Offload). Суть проблемы в том, что построение пакета для UFO осуществляется при помощи вызовов __ip_append_data() и ip_ufo_append_data(), а данные передаются через несколько вызовов send(), между которыми атакующий может подменить тип с UFO на не-UFO и вызвать наложение требующего фрагментации хвоста на область памяти вне границ выделенного буфера. Проблема присутствует в ядре с 18 октября 2005 года и проявляется как в стеке IPv4, так и при использовании IPv6.
  • Вторая уязвимость (CVE-2017-1000111) вызвана состоянием гонки при обработке сокетов AF_PACKET с опцией PACKET_RESERVE. Это третья уязвимость в реализации кольцевых буферов TPACKET_V3 сокетов AF_PACKET (функция packet_set_ring), которые включены по умолчанию ("CONFIG_PACKET=y") в большинстве дистрибутивов Linux. В отличие от прошлых проблем новая уязвимость проявляется при использовании опции PACKET_VERSION.

Для успешной эксплуатации обеих уязвимостей требуется наличие полномочий CAP_NET_RAW, которые обычно не предоставляются непривилегированным пользователям. С практической стороны уязвимости представляют интерес для организации атаки по выходу из изолированных контейнеров, так как проблема может быть эксплуатирована в системах с поддержкой пространств имён идентификаторов пользователей (user namespaces). В Debian, Red Hat Enterprise Linux и ALT Linux поддержка user namespaces по умолчанию не активирована, но она включена в Ubuntu и Fedora. В Android право создавать сокеты AF_PACKET имеет процесс mediaserver, через который может быть эксплуатирована уязвимость.

Уязвимости пока устранены только в Ubuntu, SUSE и openSUSE. Проблемы остаются неисправленными в Fedora, Debian и RHEL/CentOS. Для ядра Linux предложены патчи, в том числе предложено полностью удалить подсистему UFO из ядра 4.14.

  1. Главная ссылка к новости (http://openwall.com/lists/oss-...)
  2. OpenNews: Локальная root-уязвимость в реализации сокетов AF_PACKET в ядре Linux
  3. OpenNews: Локальная root-уязвимость в ядре Linux
  4. OpenNews: Раскрыты подробности о root-уязвимости в ядре Linux, атакованной на Pwn2Own
  5. OpenNews: В Android и старых ядрах Linux устранена уязвимость, эксплуатируемая через отправку UDP-пакетов
  6. OpenNews: Локальная root-уязвимость в подсистеме inotify ядра Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/47007-kernel
Ключевые слова: kernel, udp, linux
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (16) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:35, 11/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Такое впечатление, что user namespaces придумали специально, чтобы проще из контейнеров выходить.
     
     
  • 2.2, Michael Shigorin (ok), 11:40, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Такое впечатление, что user namespaces придумали специально,
    > чтобы проще из контейнеров выходить.

    Ну так в *nix традиционно "рут? -- проходи!" же.  Соответственно пока _все_ хотя бы уже существующие проверки перепроверят...

    В общем, у нас userns по умолчанию отключены, но можно вглючить на свой страх и риск.

     
     
  • 3.30, Аноним (-), 15:11, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А если они отключены, то это означает, что и в основной системе, и в контейнере один и тот же набор пользователей?
     
  • 3.87, grsec (ok), 00:59, 12/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В git у вас почти все версии с CONFIG_USER_NS=y
     
  • 2.3, Аноним (-), 11:46, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вот да. Такие-то дыры каждый раз~
     
  • 2.4, Аноним (-), 12:05, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В AF_PACKET и без user namespaces полно дыр.
     
     
  • 3.6, ваш К.О. (?), 12:09, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    af_packet без user namespaces доступен только руту.

    remote дыр в нем я что-то не припомню с того самого 2005го года

     
  • 2.7, Аноним (-), 12:19, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >  Такое впечатление, что user namespaces придумали специально, чтобы проще из контейнеров выходить.

    Нет, user namespaces придумали специально, чтобы контейнеры _были_.
    В данном случае, повышение CAP_NET_RAW -> root может быть проэксплуатировано и без userns.

     
     
  • 3.10, EHLO (?), 13:07, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >В данном случае, повышение CAP_NET_RAW -> root может быть проэксплуатировано и без userns

    речь о том что через user namespaces можно получить рута без CAP_NET_RAW, в смысле поставить CAP_NET_RAW, не будучи рутом.
    Это кроме очевидного выходе рута_в_контейнере из изоляции.

     
     
  • 4.31, Аноним (-), 15:14, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Потому, что CAP_NET_RAW, чаще всего, даётся контейнеру.
     

  • 1.11, Аноним (-), 13:12, 11/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> Уязвимости пока устранены только в Ubuntu, SUSE и openSUSE. Проблемы остаются неисправленными в Fedora, Debian и RHEL/CentOS.

    Что скажут хейтеры убунты? Не ребрендинг дебиана всё же?

     
     
  • 2.14, Аноним (-), 13:23, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >В Debian и Red Hat Enterprise Linux поддержка user namespaces по умолчанию не активирована, но она включена в Ubuntu и Fedora.

    Вопросы?

     

  • 1.47, Аноним (-), 16:27, 11/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > предложены патчи, в том числе предложено полностью удалить подсистему UFO из ядра 4.14.

    Наконец-то хороший патч.

     
     
  • 2.64, pda (?), 20:05, 11/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Почему удаление аппаратной обработки - хорошо? Или тут табличка "сарказм" потерялась?
     
     
  • 3.104, Мегазаычы (?), 00:59, 16/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    потому что читай cover message, вот почему. https://www.spinics.net/lists/netdev/msg443815.html

    не умеют работать с источниками, а туда же, в айти лезут.

     

  • 1.105, Аноним (-), 10:58, 16/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну почему автор этой статьи (и других аналогичных) не упоминает, кто уязвимость нашел и ответственно разгласил?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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