Garbage Script on Goo BLOG

某SIerの"元"研究者 兼 情報Security技術者"F.Koryu"の日常の雑記置き場

(matcha139)まっちゃ139勉強会#23

2011-10-29 11:28:34 | セキュリティ(技術者向け)
第23回まっちゃ139勉強会
今回は大阪電通大の寝屋川キャンパスのJ号館が会場になります。新しい建物ですよ~。

今回は人数が多い(100名程度)という事もあり、アイスブレイクである「自己紹介」がいつもとは少し違うスタイルになっています(中身は非公開なので、来た人だけのお楽しみという事で)。
-----
session1:Androidフォンのセキュリティ(KDDI研究所 竹森敬祐さん)
初っ端からオフレコですm(_ _)m

……感想だけならOKかな?、話自体は面白いけれど、非常に深い話です。色々と考えさせられますね。


Session2:アンチウイルス屋から見たAndroidセキュリティ(Kaspersky 前田さん)
前振りネタ……UFO:Blocked???→URL Forward Objectの略???
URL転送型のマルウェア???

今日のテーマ:「煽」

観測情報
残念ながら増加傾向、但しマルウェア全体(PC等も含む)からするとごく少数ではありますが
2011/10/28現在のシグネチャ数は4,706
2008年を境に急増しています(収益化の期間に突入したかと)
2011年は集計期間が半年でありながら昨年(2010年)の実績を遥かに越えています

プラットフォーム別で見ると、最も多いのはJ2ME(50%以上)ですが、Androidもじわじわ増えています(24%)。

ファミリー数で言うと300以上(亜種入れて、4,706種)
過去最多で出現したのは2010/8期で、314種類
最も多いのはSMS Trojan

スマートフォンはアンチウイルスでどこまで守れるのか?
一般的な各社セキュリティ製品で実装されている機能
・盗難対策
・暗号化
・アンチウイルス・ファイアウォール
・プライバシープロテクション など
……アンチウイルスは、あくまでセキュリティ対策製品として、一部機能であるという扱いになっている

Android製品→ユーザモードで動くモノが中心
iOSとWindows Phone→API非公開なので、まず無理

アンチウイルスは有効か?
WindowsのアンチウイルスとAndroidのアンチウイルスの違いって?
・セキュリティ特権上で動いているか否か?
→Androidの場合は、どうしてもユーザ権限で動作させざるを得ない状態である
・パターンマッチング以外(振る舞い検知など)以外の検知方法を実装しているか否か?
→Androidの場合、パターンマッチング以外の検知方法は実装していないケースが多い

ではAndroid OSは強いのか?
Android 2.2までは、DEPなどのセキュリティ対策システムが含まれていなかったので、あまり強いとはお世辞にも言えない
2.3以降は一部だけれどそのような機能が実装されている(DEPとか)……が、まだ未実装な機能があるため、その点では弱いという点は認識する必要がある

Androidアンチウイルスの課題
リアルタイム保護?

電池問題

一般ユーザ権限で動作
他ユーザに許可していない限り、インストール済みの他のアプリのデータにアクセスできない
root権限で動作するマルウェアを駆除できない
→rootを奪取する穴を突かれた後、どうするのか?
→もっと凶悪なrootkitが出てきたらどうする???

root(/system)を保護するアイデアとして……
OS側からAPI提供を受ける→本当はkernel callをフックしたい
もしくはdalvik(サンドボックス)を串してくれるようなものとか?
予めroot権限で動くアンチウイルス製品を入れておく


Session3:結構やりたい放題?Androidアプリの実際(はるぷさん)
アプリをインストールするとどこまで行く?
……普通に考えると「端末の中」ですよね

Androidでは「USBデバッグ」という便利で凶悪(?)な機能がある
(補足)
USBデバッグの凶悪さは、@ITの記事が参考になるかと思います。

USBデバッグでできること
1.SDカードの中身が見られる
写真、電話帳のバックアップ、ブラウザでダウンロードしたファイルなど
→漏洩したら大変だけど、全てのアプリでパーミッション無しで見られるので、今回は放置

2.システムのファイルを見られる
インストールしたアプリにフォーカスして見ると、次のいずれか
/data/app-private
→コピー防止オプションを指定している場合が該当、取得にはroot化が必要
/data/app
→コピー防止オプションを指定していない場合が該当、USBデバッグや他のアプリから取得可能
基本的にはAPKファイルはZIP形式のファイルで、中の設定ファイルはテキストベース(xml形式など)なので、解凍するだけで、結構な情報が見えてしまいます
実はiOSのアプリも似たような形式なので、調べようと思えば調べられたりするとか……
ならば、対リバースエンジニアリングとして難読化しよう
「ProGuard」→Eclipseから呼び出す事が可能
でも、それで本当にOKなの???
→ハードコーディングしているデータなどは難読化されていない!!
→難読化されている場所も、あまり難読化されていないのでは???
なので過信は禁物!!

まとめ
・Androidアプリのコードを守るのは難しい(リバースエンジニアリングで見られる事を前提とする必要がある)
・見られたら困る情報は端末上には置かない(サーバと通信するアプリの場合、見られてはいけない処理や情報はサーバ上に置く)
・何かが起きた時に、ユーザが判断できる情報を提供する(自社のHP上で告知など)

(筆者補足)
ちょうど一週間前に行われたまっちゃ445勉強会#18の話と被る部分が多いので、そちらも参考にされると良いかも。


Session4:iOSの審査なんてくそくらえさ!(TWORKS@楽しいアプリ製作の会 さん)
スマートフォン→アプリケーションプラットフォーム
アプリケーション審査の有無
iOS→ある、不自由なプラットフォーム(クローズド)
Android→ありません、自由なプラットフォーム

(補足)
auマーケットのように、審査を行うマーケットプレイスも中にはあります

iOSのアプリケーション審査
1年ほど前から、22のガイドラインが設けられている
今回は「機能」「インターフェース」「法律」に特化してお話します

「機能」
隠し機能の禁止
サンドボックス外のデータの読み書き禁止
実行コードを外部からダウンロードするのも禁止
明記・明示されていない、偽の機能やジョーク機能もアウト など

「インターフェース」
Appleが定めた基準(ガイドライン、PDFにして100p超)を逸脱する場合はアウト

「法律」
各地の法律を理解し準拠するのは開発者の責務である
誤り、虚偽、誤解を招く説明を含むアプリはダメ
違法なファイル共有を行うアプリはアウト など

審査の意義
バグがあるアプリや、悪意を持つアプリを事前に排除できる
類似するアプリや無意味なアプリを除外できる
→ユーザが安心できる環境を作るため

適切なアプリの増加→利用者の増加右→市場の拡大・開発者の増加→……

審査のコスト
iOS、Windows Phone→$99/年
ただしWindows Phoneの場合、101本目からは別途審査料が発生する
Android→25$、マーケット使用料は審査無し

(まとめ)
・審査には市場を健全化する効果がある
・健全な環境には、健全にアプリと開発者が流通する
・Apple頑張っている
・オープンプラットフォームにもそれなりの良さはあるけど、やはりそれ相応のリスクがある事も認識する必要がある
・タイトルはまっちゃさんが決めた事でくぁwせdrftgyふじこlp