Kerentanan dalam subsistem kernel Linux Netfilter

Kerentanan (CVE-2021-22555) telah dikenal pasti dalam Netfilter, subsistem kernel Linux yang digunakan untuk menapis dan mengubah suai paket rangkaian, yang membolehkan pengguna tempatan mendapat keistimewaan root pada sistem, termasuk semasa berada dalam bekas terpencil. Prototaip kerja eksploitasi yang memintas mekanisme perlindungan KASLR, SMAP dan SMEP telah disediakan untuk ujian. Penyelidik yang menemui kelemahan itu menerima ganjaran $20 daripada Google kerana mengenal pasti kaedah untuk memintas pengasingan bekas Kubernetes dalam kelompok kCTF.

Masalahnya telah wujud sejak kernel 2.6.19, dikeluarkan 15 tahun yang lalu, dan disebabkan oleh pepijat dalam pengendali IPT_SO_SET_REPLACE dan IP6T_SO_SET_REPLACE yang menyebabkan limpahan penimbal apabila menghantar parameter yang diformatkan khas melalui panggilan setsockopt dalam mod compat. Dalam keadaan biasa, hanya pengguna root boleh membuat panggilan ke compat_setsockopt(), tetapi keistimewaan yang diperlukan untuk melakukan serangan juga boleh diperolehi oleh pengguna yang tidak mempunyai hak istimewa pada sistem dengan sokongan untuk ruang nama pengguna didayakan.

Pengguna boleh mencipta bekas dengan pengguna akar yang berasingan dan mengeksploitasi kelemahan dari sana. Contohnya, "ruang nama pengguna" didayakan secara lalai pada Ubuntu dan Fedora, tetapi tidak didayakan pada Debian dan RHEL. Tampalan yang membetulkan kerentanan telah diterima pakai ke dalam kernel Linux pada 13 April. Kemas kini pakej telah pun dihasilkan oleh projek Debian, Arch Linux dan Fedora. Di Ubuntu, RHEL dan SUSE, kemas kini sedang dalam persediaan.

Masalah berlaku dalam fungsi xt_compat_target_from_user() disebabkan pengiraan saiz memori yang salah apabila menyimpan struktur kernel selepas penukaran daripada perwakilan 32-bit kepada 64-bit. Pepijat membenarkan empat bait nol ditulis ke mana-mana kedudukan di luar penimbal yang diperuntukkan yang dibatasi oleh offset 0x4C. Ciri ini ternyata cukup untuk mencipta eksploit yang membolehkan seseorang memperoleh hak akar - dengan mengosongkan m_list->penunjuk seterusnya dalam struktur msg_msg, syarat telah dicipta untuk mengakses data selepas membebaskan memori (guna-selepas-bebas), yang kemudiannya digunakan untuk mendapatkan maklumat tentang alamat dan perubahan kepada struktur lain melalui manipulasi panggilan sistem msgsnd().

Sumber: opennet.ru

Tambah komen