A Microsoft biztonsági kutatói két sebezhetőséget (CVE-2022-29799, CVE-2022-29800) azonosítottak a Nimbuspwn kódnevű networkd-dispatcher szolgáltatásban, amelyek lehetővé teszik a jogosulatlan felhasználók számára, hogy root jogosultságokkal tetszőleges parancsokat futtassanak. A problémát a networkd-dispatcher 2.2-es verziójában javították. Arról egyelőre nincs információ, hogy a disztribúciók közzétettek-e frissítéseket.Debian, RHEL, Fedora, SUSE, Ubuntu, Ív Linux).
A Networkd-dispatchert számos disztribúcióban használják. Linuxbeleértve Ubuntu, amely a systemd-networkd háttérfolyamatot használja a hálózati paraméterek konfigurálásához, és hasonló funkciókat lát el, mint a NetworkManager-dispatcher, azaz szkripteket futtat, amikor a hálózati kapcsolat állapota megváltozik, például a következő indítására szolgál: VPN miután létrehozta az alapvető hálózati kapcsolatot.
A networkd-dispatcherhez társított háttérfolyamat root jogosultságokkal fut, és a D-Bus buszon keresztül fogadja az eseményeket. A hálózati kapcsolat állapotváltozásairól a systemd-networkd szolgáltatás küld információkat. A probléma az, hogy a jogosultság nélküli felhasználók eseményt generálhatnak egy nem létező állapotról, és kezdeményezhetik saját szkriptjük végrehajtását, amely root jogosultságokkal lesz végrehajtva.
A Systemd-networkd csak a /etc/networkd-dispatcher könyvtárban található rendszerkezelő szkripteket futtatja, és a felhasználó nem cserélheti ki őket. A fájlútvonal-kezelő kódban található sebezhetőség (CVE-2022-29799) azonban lehetővé tette a könyvtárak bejárását és a szkriptek tetszőleges végrehajtását. Konkrétan a szkript fájlútvonalának kialakításakor a D-Bus-on keresztül átadott OperationalState és AdministrativeState értékeket használták, de nem távolították el azokat a speciális karakterektől. A támadó létrehozhatta a saját állapotát a "../" karakterekkel a névben, és átirányíthatta a networkd-dispatcher kéréseket egy másik könyvtárba.
A második sebezhetőség (CVE-2022-29800) egy versenyhelyzetet érintett: kis idő telt el a szkript paraméter-ellenőrzése (root tulajdonjog) és végrehajtása között, elegendő időt biztosítva egy fájl cseréjéhez és a root tulajdonjog-ellenőrzés megkerüléséhez. Továbbá a networkd-dispatcher nem ellenőrizte a szimbolikus linkeket, beleértve a szkriptek alprocess.Popen híváson keresztüli indításakor is, ami jelentősen leegyszerűsítette a támadást.
Működési technika:
- Létrejön egy "/tmp/nimbuspwn" könyvtár, és egy "/tmp/nimbuspwn/poc.d" szimbolikus link, amely az "/sbin" könyvtárra mutat, és amelyet a root tulajdonában lévő futtatható fájlok ellenőrzésére használnak.
- Az „/sbin” könyvtárból származó futtatható fájlok esetében az azonos nevű fájlok a „/tmp/nimbuspwn” könyvtárban jönnek létre, például az „/sbin/vgs” fájl esetében egy „/tmp/nimbuspwn/vgs” nevű futtatható fájl jön létre, amelynek tulajdonosa egy nem jogosult felhasználó, és amelybe a támadó által futtatni kívánt kód kerül.
- Egy jel kerül küldésre D-Bus-on keresztül a networkd-dispatcher folyamatnak, amelynek OperationalState értéke "../../../tmp/nimbuspwn/poc". A jel "org.freedesktop.network1" névtérben történő küldéséhez a systemd-networkd-hez egyéni kezelők csatolásának lehetőségét használták, például a gpgv vagy epmd manipulációival, vagy kihasználható az a tény, hogy a systemd-networkd alapértelmezés szerint nem fut (például a Linux Menta).
- Jel vételekor a Networkd-dispatcher listát készít a root felhasználó tulajdonában lévő és az "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d" könyvtárban elérhető futtatható fájlokról, ami valójában az "/sbin" könyvtárra utal.
- Amikor a fájllista megérkezik, de a szkript még nem futott le, a szimbolikus link átirányításra kerül a "/tmp/nimbuspwn/poc.d" fájlról a "/tmp/nimbuspwn" fájlra, és a networkd-dispatcher root jogosultságokkal futtatja a támadó szkriptjét.

Forrás: opennet.ru
