Уязвимост Π² firejail, позволяваща root Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ систСмата

Π‘Π΅ΡˆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° уязвимост (CVE-2022-31214) Π² ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° прилоТСния Firejail, която позволява Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ root ΠΏΡ€Π°Π²Π° Π½Π° хост систСмата. Има Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Сксплойт, Π½Π°Π»ΠΈΡ‡Π΅Π½ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΡ‚ΠΎ пространство, тСстван Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈ вСрсии Π½Π° openSUSE, Debian, Arch, Gentoo ΠΈ Fedora с инсталирана ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° firejail. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ firejail 0.9.70. ΠšΠ°Ρ‚ΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ β€žjoin noβ€œ ΠΈ β€žforce-nonewprivs yesβ€œ Π² настройкитС (/etc/firejail/firejail.config).

Firejail ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, AppArmor ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° систСмни повиквания (seccomp-bpf) Π² Linux Π·Π° изолация, Π½ΠΎ изисква повишСни ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, Π·Π° Π΄Π° настрои ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΎ изпълнСниС, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Ρ‡Ρ€Π΅Π· ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ към Ρ„Π»Π°Π³Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° suid root ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° със sudo. Уязвимостта Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠ° Π² Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° опцията β€ž--join=β€œ. ", ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ към Π²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π° срСда (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ Π² ΠΏΡΡΡŠΡ‡Π½Π° срСда) с Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° срСдата Ρ‡Ρ€Π΅Π· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° процСса, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π² нСя. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ„Π°Π·Π°Ρ‚Π° ΠΏΡ€Π΅Π΄ΠΈ Π½ΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡ‚Π΅, firejail опрСдСля ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡ‚Π΅ Π½Π° посочСния процСс ΠΈ Π³ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π° към новия процСс, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ към срСдата с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° опцията β€ž-joinβ€œ.

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅, Ρ‚ΠΎΠΉ провСрява Π΄Π°Π»ΠΈ посочСният процСс сС изпълнява Π² срСдата Π½Π° firejail. Π’Π°Π·ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° оцСнява Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° /run/firejail/mnt/join. Π—Π° Π΄Π° сС възползва ΠΎΡ‚ уязвимостта, атакуващият ΠΌΠΎΠΆΠ΅ Π΄Π° симулира Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Π°, Π½Π΅ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π° срСда Π½Π° firejail, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅, ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с Π½Π΅Π³ΠΎ Ρ‡Ρ€Π΅Π· опцията β€ž--joinβ€œ. Ако настройкитС Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚ Ρ€Π΅ΠΆΠΈΠΌΠ° Π·Π° Π·Π°Π±Ρ€Π°Π½Π° Π½Π° ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π² Π½ΠΎΠ²ΠΈ процСси (prctl NO_NEW_PRIVS), firejail Ρ‰Π΅ ΡΠ²ΡŠΡ€ΠΆΠ΅ потрСбитСля към Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Π° срСда ΠΈ Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈ настройкитС Π½Π° потрСбитСлското пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° процСса Π½Π° стартиранС (PID 1).

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚, ΡΠ²ΡŠΡ€Π·Π°Π½ Ρ‡Ρ€Π΅Π· β€žfirejail –joinβ€œ, Ρ‰Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠΈ Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° оригиналния потрСбитСлски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° потрСбитСля с Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, Π½ΠΎ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ пространство Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅, напълно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½ΠΎ ΠΎΡ‚ нападатСля. Атакуващият ΠΌΠΎΠΆΠ΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° изпълни ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ с setuid-root Π² пространството Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ създал, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ промяна Π½Π° настройкитС Π½Π° /etc/sudoers ΠΈΠ»ΠΈ PAM ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π° йСрархия ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° изпълнява ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ с root ΠΏΡ€Π°Π²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ sudo ΠΈΠ»ΠΈ су ΠΊΠΎΠΌΡƒΠ½Π°Π»Π½ΠΈ услуги.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€