第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