Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

検証、SEAndroid

19,207 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. ご清聴ありがとうございました

×