Kerentanan root ing toolkit manajemen paket Snap

Qualys wis ngenali kerentanan mbebayani katelu ing taun iki (CVE-2022-3328) ing sarana snap-confine, sing dilengkapi karo gendéra ROOT SUID lan diarani proses snapd kanggo nggawe lingkungan sing bisa dieksekusi kanggo aplikasi sing disebarake ing paket mandiri. ing format snap. Kerentanan ngidini pangguna lokal sing ora duwe hak kanggo entuk eksekusi kode minangka root ing konfigurasi Ubuntu standar. Jeksa Agung bisa ngetokake ditanggulangi ing snapd 2.57.6 release. Nganyari paket wis dirilis kanggo kabeh cabang Ubuntu sing didhukung.

Sing nggumunake, kerentanan kasebut dienalake sajrone proses ndandani kerentanan Februari sing padha ing snap-confine. Peneliti bisa nyiapake eksploitasi kerja sing nyedhiyakake akses root menyang Ubuntu Server 22.04, sing, saliyane kerentanan ing snap-confine, uga ana rong kerentanan ing proses multipathd (CVE-2022-41974, CVE-2022-41973) , digandhengake karo nglewati pamriksa panguwasa nalika ngirim prentah sing duwe hak istimewa lan karya sing ora aman kanthi pranala simbolis.

Kerentanan ing snap-confine disababaké déning kondisi lomba ing must_mkdir_and_open_with_perms () fungsi, ditambahaké kanggo nglindhungi saka substitusi saka direktori /tmp/snap.$SNAP_NAME karo link simbolis sawise mriksa pemilik, nanging sadurunge nelpon sistem gunung. nelpon menyang direktori bind-mount menyang paket ing format sworo seru. Proteksi tambahan yaiku ngganti jeneng direktori /tmp/snap.$SNAP_NAME menyang direktori liya ing /tmp kanthi jeneng acak yen ana lan ora diduweni dening root.

Nalika nggunakake operasi ganti jeneng direktori /tmp/snap.$SNAP_NAME, peneliti njupuk kauntungan saka kasunyatan snap-confine uga nggawe direktori /tmp/snap.rootfs_XXXXXX kanggo root isi paket snap. Bagean jeneng "XXXXXX" dipilih kanthi acak dening mkdtemp (), nanging paket sing dijenengi "rootfs_XXXXXX" bisa divalidasi ing fungsi sc_instance_name_validate (yaiku, $SNAP_NAME bakal disetel dadi "rootfs_XXXXXX" banjur operasi ganti jeneng. bakal nyebabake kanggo nimpa direktori /tmp/snap.rootfs_XXXXXX karo root snap).

Kanggo entuk panggunaan bebarengan /tmp/snap.rootfs_XXXXXX lan ngganti jeneng /tmp/snap.$SNAP_NAME, rong conto snap-confine diluncurake. Sawise conto pisanan digawe /tmp/snap.rootfs_XXXXXX, proses bakal diblokir lan conto kapindho bakal diwiwiti kanthi jeneng paket rootfs_XXXXXX, nyebabake direktori sementara /tmp/snap.$SNAP_NAME dadi direktori root /tmp/snap. .rootfs_XXXXXX saka pisanan. Sanalika sawise ganti jeneng rampung, instance kapindho nabrak, lan /tmp/snap.rootfs_XXXXXX diganti karo manipulasi kondisi balapan, kaya nalika ngeksploitasi kerentanan Februari. Sawise substitusi, kunci eksekusi dicopot saka wiwitan lan panyerang entuk kontrol penuh ing direktori root snap.

Langkah pungkasan yaiku nggawe symlink /tmp/snap.rootfs_XXXXXX/tmp, sing digunakake dening fungsi sc_bootstrap_mount_namespace () kanggo ngiket-mount direktori nyata sing bisa ditulis / tmp menyang direktori apa wae ing sistem file, wiwit mount () nelpon. nderek symlinks sadurunge soyo tambah. Pemasangan kasebut diblokir dening Watesan AppArmor, nanging kanggo ngliwati blok iki, eksploitasi nggunakake rong kerentanan tambahan ing multipathd.

Source: opennet.ru

Add a comment