Pagkahuyang sa mga cgroup v1 nga nagtugot sa paggawas gikan sa usa ka nahilit nga sudlanan

Ang mga detalye sa usa ka kahuyang (CVE-2022-0492) sa pagpatuman sa cgroups v1 nga mekanismo sa limitasyon sa kahinguhaan sa Linux kernel, nga magamit aron makalingkawas sa nahilit nga mga sudlanan, gibutyag. Ang problema anaa na sukad sa Linux kernel 2.6.24 ug naayo sa kernel releases 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266, ug 4.9.301. Mahimo nimong sundon ang mga publikasyon sa mga update sa package sa mga distribusyon niini nga mga panid: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Ang pagkahuyang tungod sa usa ka lohika nga sayup sa release_agent file handler nga napakyas sa paghimo sa tukma nga mga pagsusi kung gipadagan ang handler nga adunay bug-os nga mga pribilehiyo. Ang release_agent nga payl gigamit sa paghubit sa programa nga ipatuman sa kernel kung ang usa ka proseso sa usa ka cgroup mahunong. Kini nga programa nagdagan ingon gamut ug uban ang tanan nga "kapabilidad" sa root namespace. Gituohan nga ang tagdumala ra ang adunay access sa setting sa release_agent, apan sa tinuud ang mga tseke limitado sa paghatag access sa gamut nga tiggamit, nga wala iapil ang setting nga giusab gikan sa sudlanan o sa usa ka gamut nga tiggamit nga wala’y mga katungod sa tagdumala (CAP_SYS_ADMIN) ).

Kaniadto, ang ingon nga bahin dili unta mahunahuna nga usa ka pagkahuyang, apan ang kahimtang nabag-o sa pag-abut sa mga namespace sa gumagamit (mga namespace sa gumagamit), nga nagtugot kanimo sa paghimo og lahi nga mga tiggamit sa gamut sa mga sulud nga wala mag-overlap sa root user sa nag-unang palibot. Sumala niana, alang sa usa ka pag-atake, igo na nga makonektar ang imong release_agent handler sa usa ka sudlanan nga adunay kaugalingong root user sa usa ka bulag nga user ID space, nga, human makompleto ang proseso, ipatuman uban ang hingpit nga mga pribilehiyo sa nag-unang palibot.

Sa kasagaran, ang cgroupfs gi-mount sa usa ka sudlanan sa read-only mode, apan walay problema sa pag-remount niini nga mga pseudofs sa write mode kung ikaw adunay mga katungod sa CAP_SYS_ADMIN o pinaagi sa paghimo og usa ka nested container nga adunay lain nga user namespace gamit ang unshare system call, diin CAP_SYS_ADMIN katungod anaa alang sa gibuhat nga sudlanan.

Pagkahuyang sa mga cgroup v1 nga nagtugot sa paggawas gikan sa usa ka nahilit nga sudlanan

Ang pag-atake mahimo nga himuon kung ikaw adunay mga pribilehiyo sa gamut sa usa ka nahilit nga sudlanan o kung nagdagan sa usa ka sudlanan nga wala’y bandila nga no_new_privs, nga nagdili sa pagkuha sa dugang nga mga pribilehiyo. Ang sistema kinahanglan nga adunay suporta alang sa user namespaces enabled (enabled by default sa Ubuntu ug Fedora, apan dili activate sa Debian ug RHEL) ug adunay access sa root cgroup v1 (pananglitan, ang Docker nagpadagan sa mga sudlanan sa root RDMA cgroup). Posible usab ang pag-atake kung ikaw adunay mga pribilehiyo sa CAP_SYS_ADMIN, diin ang suporta alang sa mga namespace sa gumagamit ug pag-access sa cgroup v1 root hierarchy dili kinahanglan.

Dugang sa pag-ikyas gikan sa usa ka nahilit nga sudlanan, ang kahuyang nagtugot usab sa mga proseso nga gilunsad sa usa ka gamut nga tiggamit nga walay "kapabilidad" o bisan kinsa nga tiggamit nga adunay mga katungod sa CAP_DAC_OVERRIDE (ang pag-atake nagkinahanglan og access sa file /sys/fs/cgroup/*/release_agent, nga mao ang gipanag-iya sa gamut) aron makaangkon og access sa tanang sistematikong "kapabilidad".

Namatikdan nga ang kahuyang dili mapahimuslan kung gamiton ang Seccomp, AppArmor o SELinux nga mekanismo sa pagpanalipod alang sa dugang nga pag-inusara sa mga sudlanan, tungod kay gibabagan sa Seccomp ang pag-access sa unshare() system call, ug ang AppArmor ug SELinux wala magtugot sa pag-mount sa cgroupfs sa write mode.

Source: opennet.ru

Idugang sa usa ka comment