Androidのセキュリティを勉強する会(2011/9/3)のまとめ

2011/9/3に、Android Inside Security( http://www.fourteenforty.jp/research/research_papers.htm )を書かれた大居司さんをお招きして、勉強会が行われました。大居さんを始め出席者の皆さんで積極的なディスカッションが行われました。
14
前へ 1 2 ・・ 9 次へ
OISHI Ryosuke @roishi2j2

ASLRという機能もあります。メモリをランダムに配置する手法です。DEP回避で特定のアドレスを狙う攻撃があるので、メモリの配置をランダム化することで、特定のアドレスを狙いにくくするものです。AndroidのKernelではヒープ以外はASLRが有効でスタックは比較的安全です。

2011-09-03 10:28:07
akichan @akichan32

aslr で、メモリ配置をランダム化 でも、スタックは、これにより、安全化

2011-09-03 10:28:13
l.b. @l_b__

ASLR。メモリ配置をランダム化することで特定のアドレスを狙った攻撃を当たりにくくする。Androidカーネルのデフォルト設定ではヒープ以外のメモリをランダム化するようになっている。スタックはこれにより比較的安全になる。しかしP(cont) http://t.co/wbUVo4E

2011-09-03 10:28:25
OISHI Ryosuke @roishi2j2

しかし例えばzygoteに問題があります。おそらくはメモリ節約のためDalvik上の全アプリはzygoteのクローンとして起動します。zygoteにおいて互換性フラグが有効だった場合、DEPは無効化されます。クローン間で実行可能モジュールのアドレスが共通なので攻撃しやすいのです。

2011-09-03 10:30:19
l.b. @l_b__

セキュリティ上の懸念、Zygote。メモリ削減のため、すべてのDalvikアプリはZygoteのクローンとして起動する。クローン間でアドレス共通のためASLRが大幅に弱化。

2011-09-03 10:30:20
l.b. @l_b__

Prelink。メモリ削減の為の機能だが、アドレスがフレームワークビルド時設定に固定されてしまう。ASLRが無効化される。

2011-09-03 10:31:30
OISHI Ryosuke @roishi2j2

Prelinkingという機能もあります。これもメモリ節約のため、アドレスがフレームワークビルド時に設定されたものに固定されてしまいます。ライブラリなどのASLRは事実上無効化されてしまいます。

2011-09-03 10:31:42
l.b. @l_b__

低レイヤーのセキュリティはiOSに近ずいたが、4.3で改善されたのでまた引き離されている。

2011-09-03 10:32:47
kinneko @kinneko

基本的な流れは同じだけど、細部はアップデートされているという感じですね。

2011-09-03 10:33:06
kinneko @kinneko

通用口の施錠はされていないですが、13Fのミーティングスペースに入るフロアがロックされています。

2011-09-03 10:34:01
l.b. @l_b__

セキュリティ上の不備。V8エンジンは実行可能で読み書きできるメモリ領域を確保するため、攻撃可能なメモリ領域ができてしまう。

2011-09-03 10:34:04
OISHI Ryosuke @roishi2j2

AndroidとiOSを比較するとiOSは2.0でほとんど対応しているのでAndroidの方が遅れていると言えます。次に不備の実例です。JavascriptのV8 Engineはread/write/executeなメモリを確保して、そのままJSエンジンに渡してしまいます。

2011-09-03 10:34:23
l.b. @l_b__

まとめ。Linuxカーネルが持つセキュリティ機能が最新バージョンでは十分機能していない。独自機能によりASLRが機能していない。

2011-09-03 10:35:18
OISHI Ryosuke @roishi2j2

まとめとして。Linuxカーネルが持つセキュリティ機能は十分とはいえないです。ただしこれは速度の問題であるため、モバイルCPUの進化によってある程度改善を期待できるでしょう。

2011-09-03 10:35:50
kinneko @kinneko

サービスやコンテントプロバイダについえは省略する。

2011-09-03 10:36:46
l.b. @l_b__

Androidアプリの仕組み。一般OSでのアプリの位置づけと全く異なる。Intentなど。Androidセキュリティを知るにはこれらの独自の仕組みを知る必要あり。

2011-09-03 10:36:51
l.b. @l_b__

アプリの仕組み。アプリはパッケージに格納される。クラスは登録された情報により一定のルールでシステムから呼び出される。

2011-09-03 10:38:01
OISHI Ryosuke @roishi2j2

アプリの話です。AndroidではアプリはPackageに格納されます。Package内のクラスが「どのように呼び出されるべきか」を予め登録しておき、一定のルールで呼び出されます。Manifestに従ってインストールされます。

2011-09-03 10:38:48
l.b. @l_b__

パッケージ。マニフェストにアプリの情報やシステムからの呼び出され方の情報が格納される。検証容易であとから変更できない。

2011-09-03 10:39:46
kinneko @kinneko

パーミッションがなくても実行が許可されてしまうような例もある。

2011-09-03 10:41:00
l.b. @l_b__

パーミッション。アプリ動作に必要な権限をまとめたもの。必要なパーミッションがない操作は拒否される。逆にパーミッションがあればほとんど何でもできる。

2011-09-03 10:41:02
OISHI Ryosuke @roishi2j2

Packageは単なるZIPアーカイブです。パーミッションの情報が付加されます。INTERNETや電話など、ほとんどの機能はパーミッションさえあれば動作します。Intentという機能があります。アプリ間の連携を行うものです。操作内容や対象を含んだメッセージをやりとりをします。

2011-09-03 10:42:03
l.b. @l_b__

Intent。アプリ間の連携を行う。操作内容、対象を含んだメッセージを送受信。アプリ連携以外にシステムイベント通知にも使われ、非常に重要。

2011-09-03 10:42:23
kinneko @kinneko

なる。RT @t_egg: @kinneko めでぃあぷれいやーがURLたたけたり。

2011-09-03 10:43:32
l.b. @l_b__

Activity。ユーザーが何かを行うひとかたまりの単位をモジュール化。

2011-09-03 10:43:52
前へ 1 2 ・・ 9 次へ