Saya telah menginstal ROM tertentu yang hadir dengan SELinux dalam mode "Permissive". Ini adalah satu-satunya (baik) ROM yang sesuai dengan perangkat saya dan tidak ada cara untuk mengubah keadaan SELinux.
Sekarang saya tidak benar-benar yakin apa konsekuensi dari keputusan semacam itu dan akan senang jika seseorang dapat menjelaskannya kepada saya (saya sudah googled dan tahu apa itu secara teoritis ... hanya saja tidak dalam praktiknya). Kata ROM berakar pada "nonaktif" sehingga perangkat seharusnya tidak dicabut tetapi bagaimana hal itu cocok dengan SELinux saya tidak yakin.
setenforce 1
dari emulator terminal (sebagai root)?Jawaban:
TL; DR: Jangan ragu untuk langsung menuju ke kesimpulan di bagian bawah jika Anda suka :)!
Tujuan SELinux adalah untuk mencegah peningkatan hak istimewa dengan memberlakukan kebijakan wajib yang membatasi tindakan yang mungkin dari pengguna yang tidak memiliki hak istimewa dan yang istimewa.
Istilah "pengguna" di sini juga mencakup setiap proses yang berjalan pada perangkat, tidak peduli apakah itu terkait langsung dengan tindakan pengguna fisik (manusia, Anda;)), karena setiap proses berjalan menggunakan beberapa akun "pengguna" sistem.
Secara historis, izin pada sistem berbasis Unix ditangani menggunakan apa yang disebut sistem Discretionary Access Control (DAC). Dalam model ini:
root
pada sistem berbasis Unix) yang merupakan pengguna administratif dan memiliki akses ke semua yang ada di sistem. Akun ini dapat digunakan secara interaktif oleh manusia (biasanya administrator sistem) untuk memelihara atau memperbaiki perangkat, tetapi biasanya akun ini sebagian besar akan digunakan oleh layanan latar belakang atau tingkat rendah yang memerlukan tingkat hak istimewa: driver perangkat, layanan konfigurasi jaringan, layanan perlu mengakses file dari setiap pengguna atau menangani komunikasi internal antar pengguna.Ini sangat bagus dan sudah memberikan keamanan yang baik. Namun, bagaimana dengan keadaan seperti ini:
root
yang ditemukan yang akan memungkinkan penyerang menipu layanan tersebut untuk menjalankan beberapa kode arbitrer? Penyerang seperti itu akan mendapatkan akses lengkap ke perangkat. Untuk memberikan beberapa contoh nyata, bug tersebut dapat dipicu dengan mengirimkan informasi konfigurasi jaringan yang dibuat khusus ( DHCP ) atau MMS ke telepon.Di sinilah SELinux.
SELinux adalah sistem Kontrol Akses Wajib (MAC). Sementara dalam sistem DAC yang dijelaskan sebelumnya, pengguna bertanggung jawab untuk menetapkan hak yang sesuai pada sumber daya mereka sendiri, dengan sistem MAC kebijakan seluruh sistem (disediakan dengan sistem operasi) diberlakukan baik untuk pengguna yang memiliki hak istimewa maupun yang tidak terjangkau.
Ini menyelesaikan dua masalah yang disebutkan di atas dengan cara berikut:
Sistem DAC dan MAC tidak saling eksklusif, sebaliknya sistem MAC (SELinux) bertindak sebagai lapisan pertahanan kedua di belakang sistem DAC (izin tradisional seperti Unix). Tugas SELinux adalah memblokir aktivitas yang bertentangan dengan kebijakan yang, jika hanya diberikan sistem DAC, akan diterima.
Yang rumit adalah bahwa kebijakan semacam itu bisa sangat rumit untuk ditulis: kebijakan itu memang harus mencakup komponen setiap perangkat untuk setiap kemungkinan penggunaan dalam setiap situasi. Faktanya, tidak masalah jika beberapa tindakan mungkin sah dalam situasi Anda: jika tidak ada dalam kebijakan, itu dilarang . Karena itu, kebijakan yang dirancang dengan buruk dapat memiliki konsekuensi acak, seperti kerusakan aplikasi, fungsi yang tidak dapat digunakan, dan sebagainya.
Karena itulah versi pertama pengiriman Android SELinux memasukkannya dalam mode "Permissive" secara default. Dalam mode ini, SELinux akan mencatat pelanggaran kebijakan, tetapi tidak akan mencoba untuk memblokir aktivitas terkait. Dengan menganalisis file log yang dihasilkan, menjadi mungkin untuk memperbaiki dan meningkatkan kebijakan hingga titik ketika satu-satunya pelanggaran kebijakan yang tersisa memang perilaku berbahaya atau tidak diinginkan. Pada titik ini, SELinux dapat diubah menjadi mode "Penegakan": sekarang tidak hanya login tetapi juga memblokir setiap tindakan yang menyinggung.
Kesimpulan
SELinux adalah teknik mitigasi. Ini tidak mencegah penyerang masuk ke ponsel Anda, tetapi memastikan bahwa begitu mereka dapat melakukan sesedikit mungkin hal, idealnya tidak ada yang berguna sehingga menghilangkan minat untuk menyerang ponsel.
Semakin tua ROM, semakin besar jumlah bug keamanan yang akan membuka akses tersebut. SELinux akan menjadi cara yang efisien untuk menjaga keamanan minimum terlepas dari kerentanan yang diketahui ini, namun untuk berfungsi dengan baik SELinux bergantung pada kebijakan yang kompleks.
Jika ROM Anda dilengkapi dengan SELinux dalam mode "Permissive" secara default, ini kemungkinan berarti bahwa kebijakan yang dikandungnya tidak cukup andal untuk beralih ke mode "Penegakan" dengan aman.
Jika Anda cukup pintar dan memiliki akses ke log telepon (
dmesg
setidaknya, tetapi biasanya juga disalin kelogcat
: ada aplikasi yang memungkinkan untuk melihat yang terakhir tetapi tergantung pada versi Android Anda, mereka mungkin memerlukan akses root), Anda dapat memeriksa apakah Anda menemukan entri "avc": ini adalah pesan yang memberitahu Anda bahwa SELinux baru saja mendeteksi tindakan yang bertentangan dengan kebijakan.Berikut adalah contoh entri yang diambil dari situs web CyanogenMod :
Jika tidak ada, hanya beberapa dari mereka atau karena alasan apa pun yang menurut Anda tidak membuat Anda tidak dapat menggunakan telepon, Anda dapat mencoba mengalihkan SELinux ke mode "Penegakan". Dalam ROM CyanogenMod yang lama, ini mudah dan mungkin hanya menggunakan opsi tersembunyi di GUI (tidak perlu me-root ponsel atau menginstal aplikasi tertentu), saya tidak tahu apakah ROM lain menawarkan fitur yang sama tetapi karena Anda menggunakan CyanogenMod tag saya kira Anda mungkin beruntung;).
sumber