Kerentanan root lokal ing toolkit manajemen paket Snap

Qualys wis nemtokake rong kerentanan (CVE-2021-44731, CVE-2021-44730) ing utilitas snap-confine, diwenehake karo gendΓ©ra ROOT SUID lan diarani proses snapd kanggo nggawe lingkungan sing bisa dieksekusi kanggo aplikasi sing dikirim ing paket mandiri. ing format snap. Kerentanan ngidini pangguna lokal sing ora duwe hak istimewa kanggo nglakokake kode kanthi hak istimewa root ing sistem kasebut. Masalah kasebut dirampungake ing nganyari paket snapd saiki kanggo Ubuntu 21.10, 20.04 lan 18.04.

Kerentanan pisanan (CVE-2021-44730) ngidini serangan liwat manipulasi hard link, nanging mbutuhake proteksi link hard sistem mateni (nyetel sysctl fs.protected_hardlinks dadi 0). Masalah kasebut disebabake dening verifikasi sing salah saka lokasi file eksekusi saka program helper snap-update-ns lan snap-discard-ns sing mbukak minangka root. Path menyang file kasebut diwilang ing fungsi sc_open_snapd_tool () adhedhasar path dhewe saka /proc/self/exe, sing ngidini sampeyan nggawe link hard kanggo snap-confine ing direktori sampeyan lan nyelehake versi snap- nganyari-ns lan snap- utilities ing direktori iki discard-ns. Sawise mbukak liwat link hard, snap-confine karo hak ROOT bakal miwiti snap-update-ns lan snap-discard-ns file saka direktori saiki, diganti dening panyerang.

Kerentanan kapindho disebabake dening kondisi balapan lan bisa dimanfaatake ing konfigurasi Desktop Ubuntu standar. Supaya eksploitasi bisa sukses ing Ubuntu Server, sampeyan kudu milih salah siji paket saka bagean "Server Unggulan" nalika nginstal. Kondisi balapan katon ing fungsi setup_private_mount () sing diarani nalika nyiapake papan jeneng titik gunung kanggo paket sworo seru. Fungsi iki nggawe direktori sementara "/tmp/snap.$SNAP_NAME/tmp" utawa nggunakake direktori sing wis ana kanggo ngiket direktori kanggo paket snap menyang.

Wiwit jeneng direktori sauntara bisa diprediksi, panyerang bisa ngganti isi kasebut kanthi tautan simbolis sawise mriksa pemilik, nanging sadurunge nelpon telpon sistem gunung. Contone, sampeyan bisa nggawe symlink "/tmp/snap.lxd/tmp" ing /tmp/snap.lxd direktori nuding direktori kasepakatan, lan telpon kanggo Gunung () bakal tindakake symlink lan Gunung direktori ing. snap namespace. Kanthi cara sing padha, sampeyan bisa masang konten ing /var/lib lan, kanthi ngganti /var/lib/snapd/mount/snap.snap-store.user-fstab, atur pemasangan direktori /etc ing ruang jeneng paket sworo seru kanggo ngatur loading perpustakaan saka karo hak ROOT dening ngganti /etc/ld.so.preload.

Kacathet yen nggawe eksploitasi dadi tugas sing ora pati penting, amarga sarana snap-confine ditulis ing Go nggunakake teknik pemrograman aman, nduweni proteksi adhedhasar profil AppArmor, nyaring panggilan sistem adhedhasar mekanisme seccomp, lan nggunakake papan jeneng gunung kanggo isolasi. Nanging, para peneliti bisa nyiapake eksploitasi kerja kanggo entuk hak root ing sistem kasebut. Kode eksploitasi bakal diterbitake sawetara minggu sawise pangguna nginstal nganyari sing kasedhiya.

Source: opennet.ru

Add a comment