Kees Cook Memperkenalkan Patch Baru untuk Meningkatkan Keamanan Stack Kernel Linux

Linux

Kees Cook, mantan kepala sysadmin di kernel.org dan pemimpin tim keamanan Ubuntu, sekarang bekerja di Google untuk melindungi Android dan ChromeOS, telah merilis satu set tambalan yang mengacak offset tumpukan kernel saat menangani panggilan sistem. Patch meningkatkan keamanan kernel dengan mengubah lokasi tumpukan, latau yang membuat serangan tumpukan jauh lebih sulit dan kurang berhasil

Ide asli untuk tambalan adalah milik proyek PaX RANDKSTACK. Pada 2019, Elena Reshetova, seorang insinyur di Intel, mencoba membuat implementasi ide ini, cocok untuk dimasukkan ke dalam komposisi utama kernel Linux.

Selanjutnya, inisiatif diambil oleh Kees Cook yang mempresentasikan implementasi yang sesuai untuk versi utama kernel dan yang tambalannya direncanakan untuk Linux versi 5.13.

Mode ini akan dinonaktifkan secara default dan untuk mengaktifkannya, parameter baris perintah kernel ditawarkan "Randomize_kstack_offset = on / off»Dan pengaturan CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Selain itu, overhead pengaktifan mode diperkirakan sekitar 1% kehilangan kinerja.

Inti dari perlindungan yang diusulkan adalah memilih tumpukan offset acak pada setiap panggilan sistem, yang memperumit penentuan tata letak tumpukan dalam memori meskipun informasi alamat diterima, karena alamat dasar tumpukan akan berubah pada panggilan berikutnya.

Berbeda dengan implementasi RANKSTACK PaXX, di tambalan yang diusulkan untuk dimasukkan ke dalam kernel, pengacakan tidak dilakukan pada tahap awal, tetapi setelah mengatur struktur pt_regs, yang membuatnya tidak mungkin menggunakan metode berbasis ptrace untuk menentukan offset acak selama panggilan sistem yang berjalan lama.

Karena perlindungan tumpukan kernel Linux terus ditingkatkan (pemetaan tumpukan berbasis vmap dengan halaman perlindungan, penghapusan thread_info, STACKLEAK), penyerang harus menemukan cara baru agar eksploit mereka berfungsi.

Mereka memiliki, dan terus mengandalkan determinisme tumpukan kernel, dalam situasi di mana VMAP_STACK dan THREAD_INFO_IN_TASK_STRUCT mereka tidak relevan. Misalnya, serangan baru-baru ini akan terhambat jika offset tumpukan tidak bersifat deterministik di antara panggilan sistem

Tujuan dari fungsi randomize_kstack_offset adalah untuk menambahkan offset acak setelah pt_regs didorong ke tumpukan dan sebelum tumpukan utas lainnya digunakan selama pemrosesan panggilan sistem, dan mengubahnya setiap kali proses mengeluarkan panggilan sistem. Sumber keacakan saat ini ditentukan oleh arsitektur (tetapi x86 menggunakan byte rendah dari rdtsc ()).

Penyempurnaan di masa mendatang dimungkinkan untuk berbagai sumber entropi, tetapi di luar cakupan tambalan ini. Selain itu, untuk menambahkan lebih banyak ketidakpastian, offset baru dipilih pada akhir panggilan sistem (waktunya harus kurang mudah diukur dari ruang pengguna daripada pada saat masuknya panggilan sistem) dan disimpan dalam satu variabel per CPU, sehingga masa pakai nilai tidak tetap terikat secara eksplisit ke satu tugas.

Tidak ada perubahan yang terlihat untuk ini di x86 karena penghemat tumpukan sudah dinonaktifkan tanpa syarat untuk unit kompilasi, tetapi perubahan itu diperlukan di arm64. Sayangnya, tidak ada atribut yang dapat digunakan untuk menonaktifkan penghemat tumpukan untuk fungsi tertentu. Perbandingan dengan fungsi PaX RANDKSTACK: Fungsi RANDKSTACK mengacak lokasi awal tumpukan (cpu_current_top_of_stack), yaitu, termasuk lokasi struktur pt_regs pada tumpukan.

Mulanya, patch ini mengikuti pendekatan yang sama, tetapi selama diskusi baru-baru ini telah ditentukan nilainya menjadi kecil seolah-olah fungsionalitas ptrace tersedia untuk penyerang, Anda dapat menggunakan PTRACE_PEEKUSR untuk membaca / menulis offset yang berbeda ke struktur pt_regs, mengamati perilaku cache dari mengakses pt_regs dan mencari tahu tumpukan acak offset.

Akhirnya disebutkan bahwa implementasi awal mendukung prosesor ARM64 dan x86 / x86_64.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.