Satu teknik untuk mengeksploitasi kelemahan dalam subsistem tty kernel Linux telah didedahkan

Penyelidik daripada pasukan Google Project Zero menerbitkan kaedah untuk mengeksploitasi kelemahan (CVE-2020-29661) dalam pelaksanaan pengendali ioctl TIOCSPGRP daripada subsistem tty kernel Linux, dan juga meneliti secara terperinci mekanisme perlindungan yang boleh menyekat sedemikian kelemahan.

Pepijat yang menyebabkan masalah itu telah diperbaiki dalam kernel Linux pada 3 Disember tahun lepas. Masalahnya muncul dalam kernel sehingga versi 5.9.13, tetapi kebanyakan pengedaran telah membetulkan masalah dalam kemas kini pada pakej kernel yang ditawarkan tahun lepas (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Kerentanan serupa (CVE-2020-29660) ditemui pada masa yang sama dalam pelaksanaan panggilan ioctl TIOCGSID, tetapi ia juga telah diperbaiki di mana-mana.

Masalahnya disebabkan oleh ralat semasa menetapkan kunci, yang membawa kepada keadaan perlumbaan dalam kod drivers/tty/tty_jobctrl.c, yang digunakan untuk mencipta keadaan bebas penggunaan yang dieksploitasi daripada ruang pengguna melalui manipulasi ioct. dengan memanggil TIOCSPGRP. Eksploitasi berfungsi telah ditunjukkan untuk peningkatan keistimewaan pada Debian 10 dengan kernel 4.19.0-13-amd64.

Pada masa yang sama, artikel yang diterbitkan tidak menumpukan banyak pada teknik mencipta eksploitasi kerja, tetapi lebih kepada alat yang wujud dalam kernel untuk melindungi daripada kelemahan tersebut. Kesimpulannya tidak menyenangkan; kaedah seperti pembahagian memori dalam timbunan dan kawalan akses memori selepas ia dibebaskan tidak digunakan dalam amalan, kerana ia membawa kepada penurunan prestasi, dan perlindungan berasaskan CFI (Control Flow Integrity), yang menyekat eksploitasi pada peringkat akhir serangan, memerlukan penambahbaikan.

Apabila mempertimbangkan perkara yang akan membuat perbezaan dalam jangka panjang, satu yang menonjol ialah penggunaan penganalisis statik lanjutan atau penggunaan bahasa selamat ingatan seperti dialek Rust dan C dengan anotasi kaya (seperti Checked C) untuk menyemak nyatakan semasa fasa binaan.kunci, objek dan penunjuk. Kaedah perlindungan juga termasuk mengaktifkan mod panic_on_oops, menukar struktur kernel kepada mod baca sahaja dan menyekat akses kepada panggilan sistem menggunakan mekanisme seperti seccomp.

Sumber: opennet.ru

Tambah komen