Уязвимост Π² cgroups v1, позволяваща ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

Бяха Ρ€Π°Π·ΠΊΡ€ΠΈΡ‚ΠΈ подробности Π·Π° уязвимост (CVE-2022-0492) ΠΏΡ€ΠΈ внСдряванСто Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° рСсурситС cgroups v1 Π² ядрото Π½Π° Linux, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° избягванС Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΎΡ‚ ядрото Π½Π° Linux 2.6.24 ΠΈ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ във вСрсии Π½Π° ядрото 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 ΠΈ 4.9.301. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° слСдитС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² дистрибуции Π½Π° Ρ‚Π΅Π·ΠΈ страници: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Уязвимостта сС дълТи Π½Π° логичСска Π³Ρ€Π΅ΡˆΠΊΠ° Π² ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° Π½Π° Ρ„Π°ΠΉΠ»Π° release_agent, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ успява Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΈ стартиранС Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° с пълни ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. Π€Π°ΠΉΠ»ΡŠΡ‚ release_agent сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, която Π΄Π° бъдС изпълнСна ΠΎΡ‚ ядрото, ΠΊΠΎΠ³Π°Ρ‚ΠΎ процСс Π² cgroup бъдС ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½. Π’Π°Π·ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ root ΠΈ с всички β€žΠ²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈβ€œ Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° root. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡˆΠ΅ сС, Ρ‡Π΅ само Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ настройката release_agent, Π½ΠΎ Π² дСйствитСлност ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ бяха ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π΄ΠΎ прСдоставянС Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° настройката Π΄Π° бъдС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π° ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ»ΠΈ ΠΎΡ‚ root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π±Π΅Π· администраторски ΠΏΡ€Π°Π²Π° (CAP_SYS_ADMIN ).

ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° функция Π½Π΅ Π±ΠΈ Π±ΠΈΠ»Π° Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π° ΠΊΠ°Ρ‚ΠΎ уязвимост, Π½ΠΎ ситуацията сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ с появата Π½Π° потрСбитСлски пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° (потрСбитСлски пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°), ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ сС ΠΏΡ€ΠΈΠΏΠΎΠΊΡ€ΠΈΠ²Π°Ρ‚ с root потрСбитСля Π½Π° основна срСда. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, Π·Π° Π°Ρ‚Π°ΠΊΠ° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ своя ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° release_agent Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° собствСн root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ пространство Π·Π° потрСбитСлски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ слСд Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° процСса Ρ‰Π΅ бъдС изпълнСн с пълни ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π½Π° основната срСда.

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ cgroupfs сС ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² Ρ€Π΅ΠΆΠΈΠΌ само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, Π½ΠΎ няма ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΡ‚ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ псСвдофайл Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° запис, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€Π°Π²Π° CAP_SYS_ADMIN ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π· създаванС Π½Π° Π²Π»ΠΎΠΆΠ΅Π½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ потрСбитСлско пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ систСмното ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° сподСлянСто, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ ΠŸΡ€Π°Π²Π°Ρ‚Π° CAP_SYS_ADMIN са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π·Π° създадСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Уязвимост Π² cgroups v1, позволяваща ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

Атаката ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π°, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€Π°Π²Π° Π½Π° root Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π±Π΅Π· Ρ„Π»Π°Π³Π° no_new_privs, ΠΊΠΎΠΉΡ‚ΠΎ забранява ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. БистСмата трябва Π΄Π° ΠΈΠΌΠ° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° потрСбитСлски пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° (Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² Ubuntu ΠΈ Fedora, Π½ΠΎ Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° Π² Debian ΠΈ RHEL) ΠΈ Π΄Π° ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ основната cgroup v1 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Docker изпълнява ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π² основната RDMA cgroup). Атаката Π΅ възмоТна ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ CAP_SYS_ADMIN, Π² ΠΊΠΎΠΉΡ‚ΠΎ случай Π½Π΅ сС изисква ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° потрСбитСлски пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ основната йСрархия Π½Π° cgroup v1.

Π’ допълнСниС към бягството ΠΎΡ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, уязвимостта ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° позволява процСси, стартирани ΠΎΡ‚ root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π±Π΅Π· "Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ" ΠΈΠ»ΠΈ всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» с CAP_DAC_OVERRIDE ΠΏΡ€Π°Π²Π° (Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° изисква Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ„Π°ΠΉΠ»Π° /sys/fs/cgroup/*/release_agent, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΡ€ΠΈΡ‚Π΅ΠΆΠ°Π²Π°Π½ ΠΎΡ‚ root), Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всички систСмни β€žΠ²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈβ€œ.

ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС, Ρ‡Π΅ уязвимостта Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Seccomp, AppArmor ΠΈΠ»ΠΈ SELinux Π·Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° изолация Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Seccomp Π±Π»ΠΎΠΊΠΈΡ€Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ систСмното ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ unshare(), Π° AppArmor ΠΈ SELinux Π½Π΅ позволяват ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° cgroupfs Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° запис.

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

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