Kees Cook Memperkenalkan Patch Baru untuk Meningkatkan Keselamatan Kernel Stack Linux

Linux

Kees Cook, mantan ketua sysadmin di kernel.org dan ketua pasukan keselamatan Ubuntu, kini bekerja di Google untuk melindungi Android dan ChromeOS, telah mengeluarkan sekumpulan patch yang mengacak offset set kernel semasa mengendalikan panggilan sistem. Patch meningkatkan keselamatan kernel dengan mengubah lokasi timbunan, latau yang menjadikan serangan timbunan menjadi lebih sukar dan kurang berjaya

Idea asal untuk tampalan itu termasuk dalam projek PaX RANDKSTACK. Pada tahun 2019, Elena Reshetova, seorang jurutera di Intel, cuba membuat pelaksanaan idea ini, sesuai untuk dimasukkan dalam komposisi utama kernel Linux.

Selepas itu, inisiatif diambil oleh Kees Cook yang menyampaikan implementasi yang sesuai untuk versi utama kernel dan yang tambalannya dirancang untuk versi 5.13 Linux.

Mod akan dinyahaktifkan secara lalai dan untuk mengaktifkannya, parameter baris perintah kernel ditawarkan "Randomize_kstack_offset = hidup / mati»Dan tetapan CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Sebagai tambahan, overhead untuk mengaktifkan mod dianggarkan kehilangan prestasi sekitar 1%.

Inti perlindungan yang dicadangkan adalah memilih timbunan timbal secara rawak pada setiap panggilan sistem, yang merumitkan penentuan susun atur dalam memori walaupun maklumat alamat diterima, kerana alamat dasar timbunan akan berubah pada panggilan berikutnya.

Tidak seperti pelaksanaan RANDKSTACK PaX, di patch yang dicadangkan untuk dimasukkan ke dalam kernel, rawak tidak dilakukan pada peringkat awal, tetapi setelah menetapkan struktur pt_regs, yang menjadikannya mustahil untuk menggunakan kaedah berdasarkan ptrace untuk menentukan offset rawak semasa panggilan sistem berjalan lama.

Oleh kerana perlindungan timbunan kernel Linux terus meningkat (pemetaan tumpukan berasaskan vmap dengan halaman perlindungan, penyingkiran thread_info, STACKLEAK), penyerang harus mencari cara baru agar eksploitasi mereka dapat berfungsi.

Mereka memiliki, dan terus bergantung pada determinisme timbunan kernel, dalam situasi di mana VMAP_STACK dan THREAD_INFO_IN_TASK_STRUCT mereka tidak relevan. Sebagai contoh, serangan baru-baru ini akan terhambat sekiranya stack offset tidak deterministik antara panggilan sistem

Tujuan fungsi randomize_kstack_offset adalah untuk menambahkan ofset rawak setelah pt_regs ditolak ke timbunan dan sebelum sisa benang digunakan semasa pemprosesan panggilan sistem, dan ubah setiap kali proses mengeluarkan panggilan sistem. Sumber rawak sekarang ditentukan oleh seni bina (tetapi x86 menggunakan bait rendah rdtsc ()).

Peningkatan masa depan adalah mungkin untuk sumber entropi yang berlainan, tetapi di luar ruang lingkup patch ini. Juga, untuk menambahkan lebih banyak ramalan, ofset baru dipilih pada akhir panggilan sistem (waktunya harus kurang mudah diukur dari ruang pengguna daripada pada saat panggilan masuk sistem) dan Mereka disimpan dalam satu pemboleh ubah setiap CPU, supaya jangka hayat nilai tidak terikat secara eksplisit dengan satu tugas.

Tidak ada perubahan yang dapat dilihat untuk ini pada x86 kerana penjimat tumpukan sudah dilumpuhkan tanpa syarat untuk unit penyusunan, tetapi perubahan tersebut diperlukan di arm64. Sayangnya, tidak ada atribut yang dapat digunakan untuk menonaktifkan stack saver untuk fungsi tertentu. Perbandingan dengan fungsi PaX RANDKSTACK: Fungsi RANDKSTACK mengacak lokasi permulaan timbunan (cpu_current_top_of_stack), iaitu merangkumi lokasi struktur pt_regs pada timbunan.

Pada mulanya, patch ini mengikuti pendekatan yang sama, tetapi semasa perbincangan baru-baru ini telah ditentukan untuk tidak bernilai seolah-olah fungsi ptrace tersedia untuk penyerang, anda boleh menggunakan PTRACE_PEEKUSR untuk membaca / menulis offset yang berbeza ke struktur pt_regs, memerhatikan tingkah laku cache dari mengakses pt_regs dan mengetahui mengimbangi timbunan rawak.

Akhirnya disebut bahawa pelaksanaan awal menyokong pemproses ARM64 dan x86 / x86_64.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.