Hello there, ('ω')ノ
🛡 SELinuxとは?
SELinux(Security-Enhanced Linux)は、アメリカ国家安全保障局(NSA)主導で開発されたLinux向けの強制アクセス制御(MAC: Mandatory Access Control)機構です。
Androidではこれをベースにした**SEAndroid(SELinux for Android)**が導入され、Android 5.0以降で本格的に強制モード(Enforcing)がデフォルトになっています。
🧠 何を制御しているの?
SELinuxは、「このプロセスがこのファイルにアクセスしていいか?」という問いに対し、ポリシーで制御された厳格なYES/NO判断を行います。
例えば…
| 状況 | 動作 |
|---|---|
| アプリが他のアプリの内部ファイルを読もうとした | ポリシーで拒否される |
| rootでシステム設定を書き換えようとした | ポリシーで拒否される |
| Drozerでコンテンツプロバイダを列挙しようとした | SEAndroidでブロックされることがある |
つまり、UIDやパーミッションだけでなく「その操作自体が許可されているか?」を文脈付きで判断するのがSELinuxの強みです。
🔍 SELinuxの動作モード
端末ごとに現在のSELinuxのモードは異なります。以下で確認できます:
adb shell getenforce
| 結果 | 説明 |
|---|---|
| Enforcing | 強制モード(すべてのSELinuxポリシーが有効) |
| Permissive | ログは記録されるが、実際の制限は行わない |
| Disabled | 無効(近年の端末ではほぼ存在しない) |
実際の診断では、「Permissive」でないとFridaやDrozerが正しく動作しないケースもあります。
この続きはcodocで購入