Уязвимость в dhcp клиенте Red Hat Enterprise Linux и Fedora
В скрипте интеграции с NetworkManager, входящем в состав пакета dhcp-client, предлагаемого в Red Hat Enterprise Linux и Fedora, выявлена критическая уязвимость (CVE-2018-1111), которая позволяет удалённо выполнить код с правами root. Проблема может быть эксплуатирована при обработке специально оформленного DHCP-ответа в системах c NetworkManager, настроенных на получение конфигурации сети через протокол DHCP. Проблеме присвоен наивысший уровень опасности.
В скрипте интеграции с NetworkManager, входящем в состав пакета dhcp-client, предлагаемого в Red Hat Enterprise Linux и Fedora, выявлена критическая уязвимость (CVE-2018-1111), которая позволяет удалённо выполнить код с правами root. Проблема может быть эксплуатирована при обработке специально оформленного DHCP-ответа в системах c NetworkManager, настроенных на получение конфигурации сети через протокол DHCP. Проблеме присвоен наивысший уровень опасности.

Для атаки злоумышленникам необходимо разместить в локальной сети собственный DHCP-сервер, получить контроль за штатным DHCP-сервером или выполнить спуфинг отправляемых клиенту DHCP-пакетов. Пользователь также может быть атакован при попытке подключения к незаслуживающей полного доверия беспроводной сети. Уязвимость присутствует в скрипте /etc/NetworkManager/dispatcher.d/11-dhclient (или 10-dhclient в RHEL 6), который вызывается при получении каждого ответа от DHCP-сервера. Через манипуляции с содержимым ответа можно выполнить с любую shell-команду с правами NetworkManager (root).

Наличие проблемы подтверждено в RHEL 6/7 и Fedora, для которых уже выпущены экстренные обновления (в Fedora исправления включены в пакеты dhcp-4.3.5-11.fc26, dhcp-4.3.6-10.fc27, dhcp-4.3.6-20.fc28 и dhcp-4.3.6-21.fc29). Другие дистрибутивы проблема не затрагивает, за исключением продуктов, производных от RHEL и Fedora. Патч сводится к замене "read opt" на "read -r opt", т.е. отключению возможности экранирования спецсимволов с использованием обратного слэша.

Код с уязвимостью:
eval "$(
   declare | LC_ALL=C grep '^DHCP4_[A-Z_]*=' | while read opt; do
       optname=${opt%%=*}
       optname=${optname,,}
       optname=new_${optname#dhcp4_}
       optvalue=${opt#*=}
       echo "export $optname=$optvalue"
   done
   )"
Джерело: www.opennet.ru
Ви маєте увійти під своїм обліковим записом

loading