Уязвимости в networkd-dispatcher, позволяващи получаване на права root.

Изследователи по сигурността от компанията Microsoft откриха две уязвимости (CVE-2022-29799, CVE-2022-29800) в услугата networkd-dispatcher, с кодово име Nimbuspwn, които позволяват на непривилегирован потребител да изпълнява произволни команди с права root. Проблемът е решен в версия networkd-dispatcher 2.2. Няма информация за публикуване на обновления от дистрибуциите (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Networkd-dispatcher се използва в много дистрибуции на Linux, включително Ubuntu, които за настройка на параметрите на мрежата използват фоновия процес systemd-networkd, и изпълнява функции, сходни на NetworkManager-dispatcher, т.е. управлява изпълнението на скриптове при промяна на състоянието на мрежовото свързване, например, се използва за стартиране VPN след установяване на основното мрежово свързване.

Свързаният с networkd-dispatcher фонов процес работи с права root и получава сигнали за събития чрез шина D-Bus. Информацията за събитията, свързани с промяна на състоянията на мрежовите свързвания, се изпраща от услугата systemd-networkd. Проблемът е, че непривилегированите потребители могат да генерират събитие с несъществуващо състояние и да инициират стартирането на свой скрипт, който ще бъде изпълнен с права root.

Systemd-networkd е проектиран да стартира само системни обработващи скриптове, разположени в директорията /etc/networkd-dispatcher и недостъпни за замяна от потребителя, но заради уязвимостта (CVE-2022-29799) в кода за обработка на файловия път е имало възможност за излизане извън основната директория и стартиране на произволни скриптове. В частност, при съставяне на файловия път към скрипта са били използвани стойностите OperationalState и AdministrativeState, предадени чрез D-Bus, които не са били подложени на почистване от специални символи. Атакуващият е могъл да генерира свое собствено състояние, в името на което се съдържат символи „..\/“ и да пренасочи заявката на networkd-dispatcher в друга директория.

Втората уязвимост (CVE-2022-29800) е свързана с състезателно състояние — между проверката на параметрите на скрипта (принадлежност root) и неговото стартиране е имало малък времеви интервал, достатъчен за замяна на файла и заобикаляне на проверката за принадлежност на скрипта на потребителя root. Освен това, в networkd-dispatcher липсваше проверка за символични линкове, включително при стартиране на скриптове чрез извикване на subprocess.Popen, което значително улесни организирането на атаката.

Експлоатационна техника:

  • Създава се каталог «/tmp/nimbuspwn» и символична връзка «/tmp/nimbuspwn/poc.d», указваща на каталога «/sbin», който се използва за проверка за изпълняеми файлове, принадлежащи на root.
  • За изпълняемите файлове от «/sbin» се създават файлове с аналогично име в каталога «/tmp/nimbuspwn», например, за файла «/sbin/vgs» се създава изпълняем файл «/tmp/nimbuspwn/vgs», принадлежащ на непривилигирован потребител, в който се поставя кодът, който атакуващият желае да стартира.
  • По D-Bus процесът networkd-dispatcher изпраща сигнал, указвайки в OperationalState стойността «../..../tmp/nimbuspwn/poc». За изпращане на сигнала в пространството на имената «org.freedesktop.network1» се използва възможността за свързване на свои обработвачи към systemd-networkd, например, чрез манипулации с gpgv или epmd, или може да се възползва от факта, че systemd-networkd не се стартира по подразбиране (например в Linux Mint).
  • След получаване на сигнала Networkd-dispatcher извършва изграждане на списък с изпълняеми файлове, принадлежащи на потребителя root и налични в каталога «/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d», който всъщност сочи към «/sbin».
  • В момента, в който списъкът от файлове е получен, но скриптът все още не е стартиран, символичната връзка се пренасочва от «/tmp/nimbuspwn/poc.d» към «/tmp/nimbuspwn» и networkd-dispatcher ще стартира с правата на root скрипта, разположен от атакуващия.

Уязвимости в networkd-dispatcher, позволяващи получаване на права root.


Източник: opennet.ru
Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster