В плагине NetworkManager-libreswan, добавляющем в NetworkManager функциональность для подключения к VPN, совместимым с серверами на базе Libreswan и Cisco IPsec, выявлена уязвимость (CVE-2024-9050), которая может использоваться для повышения локальным пользователем своих привилегий. Уязвимость устранена в обновлении NetworkManager-libreswan 1.2.24.
Проследить за появлением обновлений в дистрибутивах можно на следующих страницах: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora.
Проблема вызвана некорректной проверкой конфигурации VPN, определяемой локальным непривилегированным пользователем и передаваемой напрямую в Libreswan при попытке активации соединения. В частности, в плагине не выполнялась проверка использования escape-символов, таких как перевод строки “\n”, которые могли применяться для разделения отдельных настроек, указанных в одной строке.
Соответственно, атакующий мог указать в составе одного из разрешённых параметров параметр “leftupdown”, запрещённый для непривилегированных пользователей и задающий скрипт, выполняемый с правами root в процессе установки соединения. Например, для запуска программы /bin/true к разрешённому параметру “hostaddrfamily” можно прикрепить следующие настойки:
hostaddrfamily=ipv4\n leftupdown=/bin/true\n ikev2=never\n
leftxauthclient=yes\n leftusername=username\n phase2alg=aes256-sha1\n
authby=secret\n left=%defaultroute\n leftmodecfgclient=yes\n
right=172.31.79.2\nconn ign
Ещё одна уязвимость выявлена в фоновом процессе guix-daemon, применяемом в дистрибутивах на базе пакетного менеджера GNU Guix. Уязвимость представляет опасность для многопользовательских систем и позволяет локальному пользователю получить привилегии любого пользователя, выполняющего сборку пакетов (build user), и внести изменения в результат сборки. Суть уязвимости в том, что атакующий может запустить производную сборку и если сборочный процесс будет прерван, уже созданные suid-файлы останутся доступны остальным пользователям системы. После этого атакующий может воспользоваться созданный suid-файлом для приостановки сборочного процесса, открытия любого файла через /proc/$PID/fd с правами выполняющего сборку пользователя и перезаписать файлы c результатами сборки).