Saya tidak tahu banyak tentang kernel Linux, dan saya punya beberapa pertanyaan.
Apa tujuan utama memisahkan memori kernel dari memori ruang pengguna? Untuk memastikan bahwa aplikasi pengguna tidak dapat melakukan hal buruk pada kernel?
Berapa banyak cara yang ada untuk aplikasi tingkat pengguna untuk mentransfer kontrol ke kernel? Apa yang bisa saya lakukan meliputi (1) menjalankan panggilan sistem, (2) memetakan memori ke kernel (tapi saya pikir mmap () juga panggilan sistem), dan (3) memuat modul kernel (tapi saya kira lsmod juga memanggil beberapa panggilan sistem). Apakah saya benar? Apakah ada cara lain yang saya lewatkan?
Berapa banyak cara untuk menyerang kernel? Bolehkah saya memiliki beberapa detail singkat tentang mereka?
Jika saya mendapatkan privilege root, apakah itu berarti saya sepenuhnya mengendalikan kernel? Yaitu, saya dapat melakukan apapun yang saya inginkan dengan kernel dan perangkat keras? Atau saya masih memiliki daya terbatas pada kernel?
Saya akan sangat menghargainya jika seseorang dapat membantu saya menemukan jawaban untuk pertanyaan-pertanyaan ini.
sumber
Jawaban:
Saya akan mencoba menjawab pertanyaan sesingkat mungkin. Pertanyaan yang Anda ajukan biasanya dibahas dalam kursus sistem operasi pengantar di universitas tetapi saya akan menganggap Anda belum mengambil kursus seperti itu.
Memori isolasi untuk proses userspace sangat diinginkan - tidak hanya untuk melindungi kernel dari program userspace jahat, tetapi juga untuk melindungi program userspace dari satu sama lain. Ini biasanya disebut sebagai Memori Virtual . Ini juga membuatnya lebih mudah untuk menerapkan paging, yang diinginkan untuk alasan lain juga (fragmentasi sederhana, linker / loader lebih sederhana, dll.).
Interupsi (tidak semuanya mengendalikan aplikasi tingkat pengguna). Menyerah prosesor juga mengambil "kontrol" dari proses (misalnya
wait
dll. Yang juga merupakan panggilan sistem). Kernel itu sendiri mungkin memutuskan untuk tidak menjadwalkan aplikasi.Itu pertanyaan yang sangat luas. Kernel dengan panggilan sistem yang diimplementasikan dengan buruk rentan. Kemampuan menulis ke memori fisik akan menjadi cara lain. Ada kerentanan lain yang dapat muncul dari instruksi yang diimplementasikan dengan buruk (misalnya kerentanan sysret dalam prosesor Intel).
Hak akses root tidak sama dengan hak istimewa kernel. Aplikasi yang berjalan sebagai pengguna root masih menggunakan memori virtual, masih harus melakukan panggilan sistem, masih harus mematuhi aturan lain yang harus diterapkan oleh aplikasi tingkat pengguna.
Jika Anda ingin saya memberikan detail lebih lanjut tentang beberapa jawaban, beri tahu saya.
Jika seseorang dapat meningkatkan beberapa jawaban, silakan tunjukkan.
sumber