В скрипте интеграции с 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
)"
Ви маєте увійти під своїм обліковим записом