Nimbuspwn, уязвимост в мрежовия диспечер, която позволява командите да се изпълняват като root

Лос Изследователи по сигурността на Microsoft пуснаха новината, че са идентифицирали две уязвимости (CVE-2022-29799, CVE-2022-29800) в мрежовата диспечерска услуга с кодово име Nimbuspwn, които позволяват на непривилегирован потребител да изпълнява произволни команди като root.

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

Microsoft откри няколко уязвимости, общо наречени Nimbuspwn, които биха могли да позволят на нападателя да повиши привилегиите за root на много крайни точки на Linux настолни компютри. Уязвимостите могат да бъдат свързани, за да получат root привилегии в Linux системи, позволявайки на нападателите да разгръщат полезни натоварвания като root backdoor и да извършват други злонамерени действия чрез произволно изпълнение на root код. Освен това, уязвимостите на Nimbuspwn биха могли потенциално да бъдат използвани като вектор за root достъп от по-сложни заплахи, като злонамерен софтуер или ransomware, за допълнително въздействие върху уязвимите устройства.

Открихме уязвимостите, като слушахме за съобщения на системната шина, докато извършвахме прегледи на код и динамичен анализ на услуги, работещи като root, и забелязахме странен модел в системна единица, наречена networkd-dispatcher.

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

systemd-networkd е проектиран да изпълнява само скриптове системен контролер, разположен в директорията /etc/networkd-dispatcher и не може да бъде заменяем от потребителя, но поради уязвимост (CVE-2022-29799) възможно е кодът за обработка на пътя на файла да е изключен от основната директория на ограничения и изпълнява произволни скриптове.

По-специално, при формиране на пътя на файла към скрипта бяха използвани стойностите OperationalState и AdministrationState, предадени през D-Bus, в които специалните символи не бяха премахнати. Нападателят може да генерира собствено състояние със знаците "../" в името и да пренасочи повикването на мрежовия диспечер към друга директория.

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

Създава се директорията "/tmp/nimbuspwn" и се създава символна връзка "/tmp/nimbuspwn/poc.d", сочеща към директорията "/sbin", която се използва за преминаване на проверка за изпълними файлове, собственост на root.

За изпълними файлове „/sbin“, файлове със същото име се създават в директорията „/tmp/nimbuspwn“, например за „/sbin/vgs“ файл се създава изпълним файл „/tmp/nimbuspwn/ vgs“ , собственост на потребител без привилегии, в който е поставен кодът, който нападателят иска да изпълни.

Сигнал D-Bus се изпраща към процеса на мрежовия диспечер с 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 ще се изпълни като корен. скрипт, поставен от нападателя.

Проблемът фиксирано в изданието networkd-dispatcher 2.2, въпреки че няма информация за пускане на актуализации по дистрибуции.

Накрая ако се интересувате да научите повече за това, можете да проверите подробностите В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   луикс каза той

    Казано е хиляда и един път: systemd е боклук. Излишни, лошо проектирани, претоварени, податливи на грешки. Жалко, че беше вграден в любимата ми дистрибуция (debian)