検証、SEAndroid

17,728 views

Published on

Android Bazaar and Conference 2012 Springでのスライドです。

Published in: Technology
  • Be the first to comment

検証、SEAndroid

  1. 1. 検証、SEAndroid Androidセキュリティ部 矢倉大夢
  2. 2. まず自己紹介• 矢倉大夢 (@hiromu1996)• 中学3年生• 校パソコン研究部 部長
  3. 3. 最近の活動• OSS奨励賞を受賞しました• 「カーネル開発者視点での成果発表」• Androidセキュリティ部での成果発表
  4. 4. いままで• 「キャリアはさっさとアップデートか けてほしい」• 「脆弱性が見つかったらすぐアップ デート」
  5. 5. 今回は• 脆弱性が見つかってroot奪取されても安 全なしくみを• SEAndroidは権限昇格に対して有効か?
  6. 6. SEAndroidとは• Security Enhanced Android • 2012年1月にリリース• SELinuxのAndroidバージョン
  7. 7. SELinuxとは• Security Enhanced Linux • National Security Agencyが作成• 代表的なLinux Security Module
  8. 8. SELinuxの基本• よくある「SELinuxは無効にしておきま しょう」• SELinuxはサーバー構築の邪魔をするた めに入っているのではない
  9. 9. SELinuxの基本$ ls -alZdrwx------ hiromu hiromu user_u:object_r:user_home_dir_t .drwxr-xr-x root root system_u:object_r:home_root_t .. • 従来のアクセス制御 • パーミッションとオーナーで制御 • SELinuxによる強制アクセス制御 • もっと詳細なラベルで制御
  10. 10. SELinuxの基本• カーネルに組み込まれている • root権限に対して制御可能• 他のプロセスへの干渉を止められる • 別プロセスの脆弱性が使用しにくい
  11. 11. できること• アプリによる権限昇格、データ漏洩の 防止• データの強制アクセス制御による保護
  12. 12. SEAndroidの実装• カーネルレイヤー • yaffs2へのラベルシステムの追加 • IPCシステムへのパーミッション チェックの追加
  13. 13. SEAndroidの実装• ユーザーランド • chcon, restoreconなどのコマンド類 • ndkによるSELinuxのAPI実装
  14. 14. SEAndroidを検証• とりあえずGalaxy Nexusで動かしてみた• http://selinuxproject.org/page/SEAndroid • Wikiにある通りにビルドすると動く
  15. 15. SEAndroidを検証• まず、ソースコードをダウンロード • AOSPのソース + SEAndroidのソース • SEAndoidのリポジトリ情報をrepo以下 に保存する
  16. 16. SEAndroidを検証• プロプライエタリなファイルを抽出 • device/samsung/maguro/extract-files.sh  • 実機からadbで転送
  17. 17. SEAndroidを検証• カーネルをビルド • kernel/samsung/omap  • make tuna_defconfig  • make menuconfigでSEAndroidが有効に なっているか確認
  18. 18. SEAndroidを検証• ICSのビルドを開始 • make HAVE_SELINUX=true  • 一晩放置
  19. 19. SEAndroidを検証• 端末に書き込み • out/target/product/maguro以下 • fastbootでboot.img system.img userdata.imgを書き込み
  20. 20. 速度• 全く気にならない• Quadrant Benchmark: 1930  • Galaxy Nexusの平均が2000程度 • I/Oが少し遅い
  21. 21. root奪取• CVE-2009-2692を再現 • asrootというexploitでroot奪取は確認 • SetupSUというroot奪取ツールで実験 • SEAndroidはEnforcing状態
  22. 22. root奪取• /system/bin以下はどのユーザーも書き込 みができないようになっている • suやbusyboxは当然書き込めない
  23. 23. root奪取• GingerBreakに対しても有効 • そもそも/system/bin/voldに対してアプ リからアクセスできない • voldにexploitを仕掛けることが不可能
  24. 24. SEAndroidの利点• root奪取されても問題ない • suなどをインストールできない • 他のアプリケーションに干渉できな い
  25. 25. SEAndroidの利点• そもそもAndroidの脆弱性が利用しにく い • root権限で動いているプロセスに exploitを仕掛けることができない • 脆弱性があってもroot権限を奪取でき ない
  26. 26. 結論• SEAndroidは堅牢なAndroidシステムを作 る上で有効 • ただしコンテキストをきちんと設定 しておく必要はある • 独自LSMを作成したりするよりは、過 去の運用ノウハウを使える分いいかも
  27. 27. 結論• まだ実用レベルではない • SELinux JNI APIは実装途中 • Zygote(Dalvik VMの管理プロセス)が SEAndroidのコンテキストを読みに いってSEGVする
  28. 28. 結論• デフォルトのコンテキストを使うだけ でもかなり堅牢にはなる• AOSPのMain StreamにMergeされてから 使うくらいがいいかもしれない
  29. 29. ご清聴ありがとうございました

×