Snap багцын менежментийн хэрэгслийн үндсэн эмзэг байдал

Qualys энэ жил гурав дахь аюултай эмзэг байдлыг (CVE-2022-3328) илрүүлсэн бөгөөд энэ нь SUID үндсэн тугтай ирдэг бөгөөд snapd процессоор дуудагддаг бөгөөд бие даасан багцуудад тараагдсан програмуудад ажиллах боломжтой орчинг бий болгодог. snap форматаар. Энэ эмзэг байдал нь орон нутгийн эрхгүй хэрэглэгчдэд Ubuntu-н үндсэн тохиргоонд код гүйцэтгэх боломжийг олгодог. Асуудлыг snapd 2.57.6 хувилбар дээр зассан. Ubuntu-н дэмжигдсэн бүх салбаруудад багцын шинэчлэлтүүд гарсан.

Сонирхолтой нь, энэ эмзэг байдал нь 22.04-р сарын ижил төстэй эмзэг байдлыг гэнэтийн хязгаарлалтад засах явцад нэвтрүүлсэн. Судлаачид Ubuntu Server 2022-д root хандалт хийх боломжтой ажиллаж байгаа эксплойтийг бэлтгэж чадсан бөгөөд энэ нь snap-confine-ийн эмзэг байдлаас гадна олон замт процессын хоёр эмзэг байдлыг агуулдаг (CVE-41974-2022, CVE-41973-XNUMX) , давуу эрх бүхий тушаалуудыг дамжуулах үед эрх мэдлийн шалгалтыг тойрч гарах, бэлгэдлийн холбоос бүхий аюултай ажилтай холбоотой.

Snap-confine дахь эмзэг байдал нь эзэмшигчийг шалгасны дараа /tmp/snap.$SNAP_NAME лавлахыг симбол холбоосоор солихоос хамгаалах зорилгоор нэмсэн must_mkdir_and_open_with_perms() функцийн уралдааны нөхцлөөс үүдэлтэй. snap форматаар багцын лавлах сангуудыг залгах. Нэмэлт хамгаалалт нь /tmp/snap.$SNAP_NAME директорийн нэрийг /tmp дотор байгаа, root эрхгүй бол санамсаргүй нэрээр өөр директор болгон өөрчлөх явдал юм.

Судлаачид /tmp/snap.$SNAP_NAME лавлахын нэрийг өөрчлөх үйлдлийг ашиглахдаа snap-confine нь snap багцын агуулгыг үндэс болгон /tmp/snap.rootfs_XXXXXX санг үүсгэдэг давуу талыг ашигласан. Нэрийн "XXXXXX" хэсгийг mkdtemp() санамсаргүй байдлаар сонгосон боловч "rootfs_XXXXXX" нэртэй багцыг sc_instance_name_validate функцээр баталгаажуулах боломжтой (өөрөөр хэлбэл $SNAP_NAME-г "rootfs_XXXXXX" болгож, дараа нь нэрийг өөрчлөх үйлдлийг хийх санаа байна. Үүний үр дүнд /tmp/snap.rootfs_XXXXXX санг root snap ашиглан дарж бичих болно).

/tmp/snap.rootfs_XXXXXX-г нэгэн зэрэг ашиглах болон /tmp/snap.$SNAP_NAME-н нэрийг өөрчлөхийн тулд snap-confine-ийн хоёр тохиолдлыг эхлүүлсэн. Эхний хувилбарыг /tmp/snap.rootfs_XXXXXX үүсгэсний дараа процесс хаагдаж, хоёр дахь тохиолдол нь rootfs_XXXXXX багцын нэрээр эхэлж, хоёр дахь хувилбарын түр зуурын лавлах /tmp/snap.$SNAP_NAME /tmp/snap үндсэн директор болоход хүргэнэ. Эхнийх нь .rootfs_XXXXXX. Нэрийг нь өөрчилж дуусмагц хоёр дахь хувилбар гацаж, /tmp/snap.rootfs_XXXXXX-г XNUMX-р сарын эмзэг байдлыг ашигласантай адил уралдааны нөхцөлийн зохицуулалтаар сольсон. Орлуулсны дараа гүйцэтгэлийн түгжээг эхний ээлжинд устгаж, халдагчид snap root лавлахыг бүрэн хянах боломжтой болсон.

Сүүлийн алхам нь /tmp/snap.rootfs_XXXXXX/tmp тэмдэгт холбоос үүсгэх явдал байсан бөгөөд үүнийг sc_bootstrap_mount_namespace() функц нь mount() дуудлагаас хойш /tmp бичиж болох бодит директорийг файлын системийн дурын директор руу холбоход ашигладаг байсан. холбохоос өмнө тэмдэгт холбоосыг дагадаг. Ийм холболтыг AppArmor хязгаарлалтаар хаасан боловч энэ блокийг тойрч гарахын тулд exploit нь multipathd-д хоёр туслах сул талыг ашигласан.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх