Təcrid olunmuş konteynerdən çıxmağa imkan verən v1 qruplarında zəiflik

Linux nüvəsində təcrid olunmuş konteynerlərdən qaçmaq üçün istifadə edilə bilən cgroups v2022 resurs məhdudlaşdırma mexanizminin tətbiqi zamanı zəifliyin (CVE-0492-1) təfərrüatları açıqlanıb. Problem Linux nüvəsi 2.6.24-dən bəri mövcuddur və 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 və 4.9.301 nüvə buraxılışlarında həll edilmişdir. Dağıtımlarda paket yeniləmələrinin nəşrlərini bu səhifələrdə izləyə bilərsiniz: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Zəiflik, işləyicini tam imtiyazlarla işlədərkən lazımi yoxlamaları həyata keçirə bilməyən release_agent fayl işləyicisindəki məntiq xətası ilə bağlıdır. buraxılış_agent faylı qrup qrupunda proses dayandırıldıqda kernel tərəfindən icra ediləcək proqramı müəyyən etmək üçün istifadə olunur. Bu proqram kök kimi və kök ad məkanında bütün “imkanlar”la işləyir. Ehtimal edilirdi ki, yalnız administrator buraxılış_agent parametrinə daxil ola bilər, lakin əslində yoxlamalar kök istifadəçiyə girişin verilməsi ilə məhdudlaşırdı ki, bu da parametrin konteynerdən və ya administrator hüququ olmayan kök istifadəçi tərəfindən dəyişdirilməsini istisna etmir (CAP_SYS_ADMIN). ).

Əvvəllər belə bir xüsusiyyət zəiflik kimi qəbul edilməzdi, lakin istifadəçi adları boşluqlarının (istifadəçi adları) meydana gəlməsi ilə vəziyyət dəyişdi ki, bu da istifadəçinin kök istifadəçisi ilə üst-üstə düşməyən konteynerlərdə ayrıca kök istifadəçilər yaratmağa imkan verir. əsas mühit. Müvafiq olaraq, hücum üçün, prosesi başa çatdırdıqdan sonra əsas mühitin tam imtiyazları ilə yerinə yetiriləcək ayrıca istifadəçi ID məkanında öz kök istifadəçisi olan konteynerdə release_agent işləyicinizi birləşdirmək kifayətdir.

Varsayılan olaraq, cgroupfs konteynerə yalnız oxumaq rejimində quraşdırılır, lakin CAP_SYS_ADMIN hüquqlarınız varsa və ya bölüşdürülməmiş sistem çağırışından istifadə edərək ayrıca istifadəçi ad sahəsi ilə iç-içə konteyner yaratmaqla bu psevdofları yazma rejimində yenidən quraşdırmaqda problem yoxdur. CAP_SYS_ADMIN hüquqları yaradılmış konteyner üçün əlçatandır.

Təcrid olunmuş konteynerdən çıxmağa imkan verən v1 qruplarında zəiflik

Hücum, təcrid olunmuş konteynerdə kök hüquqlarınız varsa və ya əlavə imtiyazların əldə edilməsini qadağan edən no_new_privs bayrağı olmadan konteyner işlədərkən həyata keçirilə bilər. Sistemdə istifadəçi ad məkanları üçün dəstək aktiv olmalıdır (Ubuntu və Fedora-da defolt olaraq aktivdir, lakin Debian və RHEL-də aktivləşdirilməmişdir) və v1 kök cgroup-a çıxışı olmalıdır (məsələn, Docker kök RDMA qruplarında konteynerləri işlədir). Hücum CAP_SYS_ADMIN imtiyazlarınız olduqda da mümkündür, bu halda istifadəçi adları üçün dəstək və cgroup v1 kök iyerarxiyasına giriş tələb olunmur.

Təcrid olunmuş konteynerdən qaçmaqla yanaşı, zəiflik həmçinin "imkanları" olmayan kök istifadəçi və ya CAP_DAC_OVERRIDE hüquqlarına malik hər hansı istifadəçi tərəfindən işə salınan proseslərə imkan verir (hücum üçün /sys/fs/cgroup/*/release_agent faylına giriş tələb olunur. bütün sistemli “imkanlara” giriş əldə etmək üçün kökə məxsusdur.

Qeyd olunur ki, Seccomp, AppArmor və ya SELinux qoruma mexanizmlərindən konteynerlərin əlavə izolyasiyası üçün istifadə edərkən bu boşluqdan istifadə etmək mümkün deyil, çünki Seccomp unshare() sistem çağırışına girişi bloklayır, AppArmor və SELinux isə yazı rejimində qrupların quraşdırılmasına icazə vermir.

Mənbə: opennet.ru

Добавить комментарий