Docker болон Kubernetes-д ашигладаг тусгаарлагдсан контейнеруудыг ажиллуулах runc хэрэгсэлд CVE-2024-21626 эмзэг байдал олдсон бөгөөд энэ нь тусгаарлагдсан контейнерээс хост орчны файлын системд нэвтрэх боломжийг олгодог. Довтолгооны үед халдагчид хостын орчинд зарим гүйцэтгэгдэх файлуудыг дарж бичиж, кодоо контейнерээс гадуур гүйцэтгэх боломжтой болдог. runc ашигладаг runtime crun, youki болон LXC дээр асуудал гардаггүй. Энэ эмзэг байдлыг runc 1.1.12 дээр зассан.
Docker эсвэл Kubernetes хэрэгслийг ашиглахдаа тусгайлан боловсруулсан контейнерийн дүрсийг бэлтгэх замаар халдлага хийж, суулгаж, ажиллуулсны дараа контейнерээс гадаад FS-д хандах боломжтой. Docker ашиглах үед тусгайлан боловсруулсан Dockerfile-ээр дамжуулан ажиллах боломжтой. Ажлын лавлахыг хост орчны нэрийн орон зайд холбох замаар "runc exec" командыг ашиглан процессуудыг саванд эхлүүлсэн тохиолдолд эмзэг байдлыг ашиглаж болно.
Энэ эмзэг байдал нь дотоод файлын тодорхойлогч алдагдсанаас үүсдэг. Контейнер дотор код ажиллуулахын өмнө runc нь O_CLOEXEC тугийг ашиглан бүх файлын тодорхойлогчдыг хаадаг. Гэсэн хэдий ч, дараагийн setcwd() гүйцэтгэлүүд нь ажлын директор руу заадаг файлын тодорхойлогчийг нээлттэй үлдээж, контейнер ажиллуулсны дараа хандах боломжтой хэвээр байна. Үлдсэн файлын тодорхойлогчийг ашиглан хостын орчинд халдах хэд хэдэн үндсэн хувилбаруудыг санал болгосон.
Жишээлбэл, халдагчид “/proc/self/fd/7/” руу чиглэсэн процесс.cwd параметрийг контейнерийн дүрсэнд зааж өгч болох бөгөөд энэ нь хост орчны холболтод байрлах контейнерийн ажлын лавлах дахь pid1 процесстой холбогдоход хүргэдэг. зай. Тиймээс, контейнерийн зураг дээр та "/proc/self/fd/7/../../../bin/bash"-ыг эхлүүлэх тохиргоог хийж, бүрхүүлийн скриптийг ажиллуулснаар агуулгыг дарж бичиж болно. "/proc/self/exe" нь /bin/bash-ын хостын хуулбарыг хэлнэ.
Халдлагын өөр нэг хувилбар нь "--cwd" сонголттой "runc exec" командыг ашиглан заасан саванд давуу эрхтэй процессууд ажиллаж байгаа тохиолдолд контейнер дотор хязгаарлагдсан халдагчид хост орчны лавлах руу нэвтрэх боломжийг олгодог. Халдагчид эхлүүлсэн процессын замыг “/proc/self/fd/7/” руу чиглэсэн симбол холбоосоор сольж, хост талын FS-д хандахын тулд “/proc/$exec_pid/cwd” нээх боломжтой. Халдагчид мөн хост орчноос гүйцэтгэгдэх файлыг эхлүүлэх ажлыг зохион байгуулснаар хост орчны талд байгаа гүйцэтгэгдэх файлуудыг дарж бичих боломжтой (/proc/self/fd/7/../../../bin/ bash") дараа нь ажиллаж байгаа файлыг хэлдэг " /proc/$pid/exe" файлыг дарж бичнэ.
Нэмж дурдахад Docker хэрэгслийн бүрэлдэхүүн хэсгүүдэд өөр таван эмзэг байдал илэрсэн:
- CVE-2024-23651 нь BuildKit багц дахь уралдааны нөхцөл бөгөөд эх кодыг бүтээх олдвор болгон хувиргахад Docker ашигладаг. Энэ эмзэг байдал нь BuildKit-д тусгайлан боловсруулсан Dockerfile-г боловсруулах үед файлд хандах боломжийг олгодог нэгэн зэрэг гүйцэтгэсэн бүтээх үе шатанд кэштэй нэг нийтлэг холбох цэгийг (“-mount=type=cache,source=”) ашигласнаас үүдэлтэй. бүтээх контейнерээс хост орчинд . Энэ эмзэг байдлыг BuildKit 0.12.5 дээр зассан.
- CVE-2024-23652 "--mount" сонголтыг ашиглах үед холбох цэгт зориулж үүсгэсэн хоосон файлуудыг устгахад гарсан алдаа нь тусгайлан боловсруулсан Dockerfile-г боловсруулах үед контейнерийн гаднах файлыг устгах боломжийг олгодог. Энэ эмзэг байдлыг BuildKit 0.12.5 дээр зассан.
- CVE-2024-23653 BuildKit дээрх API хэрэгжилтийн дутагдал нь security.insecure тохиргооны төлөв байдлаас үл хамааран өндөр эрхтэйгээр контейнерийн гүйцэтгэлийг гүйцэтгэх боломжийг олгодог. Энэ эмзэг байдлыг BuildKit 0.12.5 дээр зассан.
- CVE-2024-23650 Хортой BuildKit клиент эсвэл frontend нь суурь BuildKit процессыг гацахад хүргэж болзошгүй. Энэ эмзэг байдлыг BuildKit 0.12.5 дээр зассан.
- CVE-2024-24557 нь савыг тусгаарлах тусгай системийг бий болгох бүрэлдэхүүн хэсэг болох Moby-ийн кэшийн хордлого юм. Тусгайлан боловсруулсан контейнерийн зургийг боловсруулснаар та дараагийн бүтээх үе шатанд ашиглаж болох өгөгдлийг кэшлэх боломжтой. Энэ эмзэг байдлыг Moby 25.0.2 болон 24.0.9 дээр зассан.
Эх сурвалж: opennet.ru
