ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° 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) Π² ΠΊΠΎΠ΄Π° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡ ΠΏΡΡ ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΈΠ·Π²ΡΠ½ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡ, ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡ ΠΏΡΡ ΠΊΡΠΌ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΡΡΠ΅Π· D-Bus ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ OperationalState ΠΈ AdministrativeState, Π² ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ. ΠΠ°ΠΏΠ°Π΄Π°ΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ²ΠΎΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, Π² ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΈΡΡΡΡΠ²Π°Ρ Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ β..\/β ΠΈ Π΄Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠΈ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° Π½Π° 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 ΡΠΊΡΠΈΠΏΡ, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΠΎΡ Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡ.

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
