ナウいAndroidセキュリティ

14,448 views

Published on

Andorid 4系

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
14,448
On SlideShare
0
From Embeds
0
Number of Embeds
9,995
Actions
Shares
0
Downloads
46
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ナウいAndroidセキュリティ

    1. 1. ナウいAndroidセキュリティ 矢倉 大夢
    2. 2. 自己紹介• 矢倉 大夢• 高等学校1年• 校パソコン研究部長• @hiromu1996
    3. 3. 自己紹介• Linux Kernel Contributor • 情報セキュリティスペシャリスト• Androidセキュリティ部
    4. 4. セキュリティ部• http://asj.mns.me/  • JSSEC特別会員 • ガイドラインの策定協力 • Androidセキュリティ関連の記事執筆
    5. 5. これまでのABC• ABC 2011 Winter  • Lightning Talk • ABC 2012 Summer  • カーネルから見るAndroidのセキュリティ
    6. 6. これまでのABC• ABC 2012 Spring  • 検証、SEAndroid • 今回はこの続き
    7. 7. _人人人人人人人人人人人_> 今、SEAndroidが熱い < ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
    8. 8. というか
    9. 9. _人人人人人人人人人人人人人人人人_> 今、Androidセキュリティが熱い < ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
    10. 10. Androidのセキュリティ• 「Androidはウイルスだらけで危ない」• 「Android使うと個人情報を抜かれる」• 「Androidは危険、世の中はiPhone」
    11. 11. それが変わる• Androidのセキュリティ • どんどん改善されていきます• Androidセキュリティはダメ、と 言われることもなくなるはず
    12. 12. Android 4.x• Android 4.0 (Ice Cream Sandwich)  • 2011/10 公開• Android 4.1 (Jelly Beans)  • 2012/06 公開
    13. 13. Android 4.xはココが違う • 顔認証ロック解除 • デフォルトアプリの無効化 • オフライン音声入力
    14. 14. Android 4.xはココが違う • Android Beam  • NFCを使った共有が可能に • 新しい検索画面
    15. 15. それだけじゃない
    16. 16. Android 4.xでココが違う • ASLR  • SEAndroid  • 大きな2つの変更点
    17. 17. ASLR• Address Space Layout Randomization  • メモリに展開する際のアドレスを ランダム化 • Return-to-libc攻撃などに有効
    18. 18. Return-to-libc Attack• コールスタック ローカル変数 a() リターンアドレス 呼び出しの引数
    19. 19. Return-to-libc Attack • コールスタック ローカル変数b(int i, int j) リターンアドレス 呼び出しの引数 ローカル変数 a() リターンアドレス 呼び出しの引数
    20. 20. Return-to-libc Attack • a()からb(int i, int j)を呼び出す ローカル変数b(int i, int j) リターンアドレス int i, int j 呼び出しの引数 ローカル変数 a() リターンアドレス 呼び出しの引数
    21. 21. Return-to-libc Attack • 引数とリターンアドレスがスタックに ローカル変数b(int i, int j) リターンアドレス 戻れる  int i, int j 呼び出しの引数 ローカル変数  ように a() リターンアドレス 呼び出しの引数
    22. 22. Return-to-libc Attack • ここでバッファオーバーフロー ローカル変数b(int i, int j) リターンアドレス オーバーフロー 呼び出しの引数 ローカル変数 a() リターンアドレス 呼び出しの引数
    23. 23. Return-to-libc Attack • ここでバッファオーバーフロー ローカル変数b(int i, int j) オーバーフロー 呼び出したい関数 リターンアドレス 呼び出しの引数 ローカル変数 a() リターンアドレス 呼び出しの引数
    24. 24. Return-to-libc Attack • ここでバッファオーバーフロー ローカル変数b(int i, int j) オーバーフロー system() 呼び出したい関数 リターンアドレス libc.so “ls” 呼び出しの引数 ローカル変数 system(“ls”); a() リターンアドレス 呼び出しの引数
    25. 25. ASLRではこうなるlibc.so • ASLRを有効にすると ローカル変数b(int i, int j) オーバーフロー system() 呼び出したい関数 リターンアドレス “ls” 呼び出しの引数 ローカル変数 system(“ls”); a() リターンアドレス 呼び出しの引数
    26. 26. ASLRではこうなる • ASLRを有効にすると ローカル変数b(int i, int j) オーバーフロー system() 呼び出したい関数 リターンアドレス “ls” 呼び出しの引数 ローカル変数 system(“ls”); a() リターンアドレス 呼び出しの引数 libc.so
    27. 27. ASLRではこうなる • ASLRを有効にするとlibc.so ローカル変数b(int i, int j) オーバーフロー system() 呼び出したい関数 リターンアドレス “ls” 呼び出しの引数 ローカル変数 system(“ls”); a() リターンアドレス 呼び出しの引数
    28. 28. ASLRではこうなる • ASLRを有効にすると ローカル変数 b(int i, int j) オーバーフロー system() 呼び出したい関数 リターンアドレス “ls” 呼び出しの引数 ローカル変数 system(“ls”); a() リターンアドレスlibc.so 呼び出しの引数
    29. 29. Demo
    30. 30. ASLR• ASLRはAndroid 4.0で導入された • Android 4.1から位置独立コードにも 対応 • やっとAndroidに!!! • iOSは2011年3月に対応済み
    31. 31. SEAndroid• 今、SEAndroidが話題 • 発端は次のコミット
    32. 32. _人人人人人人人人人_> 突然の10連patch <  ̄^Y^Y^Y^Y^Y^Y^Y^ ̄
    33. 33. SEAndroidのマージ• 10/17 事件は起こった.... • SEAndroidがデフォルトで 有効化されるようになりました • 突然の出来事にびっくり
    34. 34. SEAndroidって?• そもそもSEAndroidって何なのか • Linux Security Moduleのひとつ • SELinuxのAndroidバージョン
    35. 35. Linux Security Module• 主な機能は強制アクセス制御 • root権限を奪取されても 安全な端末に• より強固なAndroidを実現
    36. 36. root権限の脅威• root権限を奪取されることのリスク • アプリケーションが好き放題できる • キャリアの損失 • ex. テザリングを不当に使用される
    37. 37. 現状• root権限奪取の脆弱性が すぐに修正されない • そもそもこまめにアップデートを 提供するのが難しい • 端末のカスタマイズによる分断
    38. 38. 現状• 過去には脆弱性の発見から修正まで 1年かかったケースも• さらにベンダーによるアップデートが 打ち切られた機種もある
    39. 39. 現状• ベンダー側でも様々な対策をしている • SHARP: Deckard LSM / Miyabi LSM  • Panasonic: TOMOYO Linux • 公式のサポートはなかった
    40. 40. Android 4.1以降• Android 4.1以降は公式のソースに SEAndroidが含まれている • Android 4.2からはデフォルトに
    41. 41. Android 4.2• デフォルトになるって? • すべての機種にSEAndroidが入る? • そういうわけではない
    42. 42. どう変わるのか• ~ Android 4.1  • make HAVE_SELINUX=true  • 使用するにはビルド時にフラグを 指定する必要が
    43. 43. どう変わるのか• Android 4.2 ~  • make  • フラグを指定しなくてもデフォルト でサポートされる
    44. 44. どう変わるのか• あくまでサポートされるだけ • 強制的にSEAndroidが有効にされる わけではない • SEAndroidを有効にしてビルドした カーネルじゃないと使えない
    45. 45. どう変わるのか• SEAndroidが有効なカーネルを使った時 • 設定からSEAndroidの有効・無効を 変更できるように
    46. 46. 実用性(?)• ABC 2012 Spring  • 有効にすると落ちる状態 • 「メインラインで使える頃には 安定しているはず」
    47. 47. Demo
    48. 48. スピード• Quadlant Benchmarkで計測 • Galaxy Nexus (デフォルト) • Galaxy Nexus (SEAndroid Permissive)
    49. 49. スピード Default SEAndroid SEAndroid (6months ago) All 2574 2091 1874 CPU 5561 5525 5374Memory 1804 1716 1584 I/O 3533 1050 998 2D 346 247 190 3D 1526 1917 1224
    50. 50. まとめ• SEAndroidはまだ実機で使える 状態じゃなかった • エミュレーターではある程度の 安定性 • ポリシーと調整次第、とも言える
    51. 51. まとめ• これからSEAndroidの時代がくる? • SEAndroidが搭載された端末が そろそろ出てきてもおかしくない • 現在の市販端末で使用されている LSMより更に強固になることは確か
    52. 52. まとめ• Android 4.xではセキュリティが大変 改善されている • iOSに追いつく日も遠くない(?)

    ×