Уязвимость в сетевом протоколе CAN BCM позволила повысить привилегии в ядре Linux 

вчера появилась информация об уязвимости в ядре Linux и который уже внесен в каталог как CVE-2021-3609. Эта уязвимость позволяет локальному пользователю повысить свои привилегии в системе из-за состояния гонки в реализации протокола CAN BCM и проявляется в версиях с 2.6.25 по 5.13-rc6 ядра Linux.

Решение пользуется преимуществом поскольку Протокол CAN BCM позволяет зарегистрировать собственный менеджер сообщений локальной сети контроллера (CAN) и подключите его к определенному сетевому разъему. Когда приходит входящее сообщение, вызывается функция bcm_rx_handler () злоумышленник может воспользоваться состоянием гонки и принудительно закрыть сетевой сокет во время выполнения bcm_rx_handler ().

Проблема возникает при закрытии розетки и функция называется bcm_release (), в котором освобождается память, выделенная для структур bcm_op и bcm_sock, которые продолжают использоваться в обработчике bcm_rx_handler () который все еще работает, поэтому возникает ситуация, которая приводит к доступу к уже освобожденному блоку памяти (use-after-free).

Это объявление о недавно зарегистрированной ошибке (CVE-2021-3609) в сетевом протоколе CAN BCM в ядре Linux, начиная с версии 2.6.25 и заканчивая основной 5.13-rc6.
Уязвимость представляет собой состояние гонки в net / can / bcm.c, которое позволяет повысить привилегии до root. Первоначально о проблеме сообщил syzbot, и Норберт Слюсарек оказался уязвимым.

Атака сводится к открытию двух сокетов CAN BCM и привязке их к интерфейсу vcan.. В первом коннекторе вы вызываете sendmsg () с индикатором RX_SETUP для настройки контроллера для входящих CAN сообщений и на втором коннекторе вы звоните sendmsg () для отправки сообщения первому соединителю.

После того, как сообщение придет, запускается вызов bcm_rx_handler (), и злоумышленник в нужный момент закрывает первый сокет, что приводит к запуску bcm_release () и запуск структур bcm_op и bcm_sock, хотя работа bcm_rx_handler () он еще не завершен.

Манипулируя содержимым bcm_sock, злоумышленник может переопределить указатель на функцию sk-> sk_data_ready (sk), перенаправить выполнение и, используя методы ориентированного на возврат (ROP) программирования, переопределить параметр modprobe_path и запустить свой код от имени пользователя root. .

При использовании техники ROP злоумышленник не пытается поставить свой код в память о, но он действует на кусочки машинные инструкции уже доступны в загруженных библиотеках, оканчивающиеся оператором возврата управления (как правило, это конец библиотечных функций).

Разрешения, необходимые для проведения атаки, могут быть получены непривилегированным пользователем в контейнерах, созданных в системах с включенными пространствами имен пользователей. Например, пространства имен пользователей включены по умолчанию в Ubuntu и Fedora, но не включены в Debian и RHEL.

Моя попытка эксплойта сосредоточена на ядрах с версией> = 5.4-rc1 из коммита bf74aa86e111. Я не исследовал использование ядер старше 5.4-rc1 с помощью тасклетов, однако использование более старых ядер также представляется возможным. 

Упоминается, что исследователь, обнаруживший уязвимость, смог подготовить эксплойт для получения рут-прав на системах с ядрами от версии 5.4 и выше, включая возможность успешной атаки на Ubuntu 20.04.02 LTS.

Работа эксплойта сводится к построению цепочки обращений к однотипным блокам («гаджетам») для получения необходимого функционала. Атака требует доступа для создания сокетов CAN и настроенного сетевого интерфейса vcan.

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

Если вам интересно узнать об этом большевы можете проконсультироваться по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.