スマートフォン向けアプリ開発のニーズが大きく高まっている。自社サービスをアプリとして消費者に提供しようという企業、そうした企業から依頼をうけてアプリを開発するソフトハウス、BtoBシステムの一環でアプリを開発するSIerなど、さまざまなシーンでスマートフォンアプリが求められるようになっている。
そんな中、にわかに懸念されるようになったのが、リバースエンジニアリングによるリスクだ。Android端末で利用されるJavaアプリやWindows Phoneで使用される.NETアプリは、特定の機種に依存しない「中間コード」の形で配布され、ユーザーごとの環境で実行される。その特性上、実はデコンパイル(逆コンパイル)によりソースコードを解析しやすい弱点も合わせ持つのだ。従来から指摘されてきたリスクではあったが、スマートフォンの普及に伴い、いよいよ顕在化してきている。
ソースコードが読み取られてしまえば深刻な影響が広がる。アプリから企業の独自技術(知的財産)が漏れてしまったり、違法にコピーされ無断で他の企業に利用されてしまう可能性もある。また、ソースコード上で脆弱性を発見され、それを悪用した攻撃を受けたり、アプリ内にマルウェアを仕込まれたりといったリスクも考えられるだろう。
リバースエンジニアリングのリスクはどのようにして防げばいいのか?
では、リバースエンジニアリングのリスクはどのようにして防げばいいのだろうか。その1つとして有効なのが、難読化ツールの利用だ。難読化ツールとは、万一デコンパイルされてしまっても、ソースコードを読み取りにくくするツールである。
難読化ツールには、Java向け、.NET向けがあるが、ここでは、.NET向けのツールとしてマイクロソフトのVisual Studioにも簡易版がバンドルされている「Dotfuscator」を見てみよう。以下のビデオで、難読化ツールが求められる背景、効果、具体的な機能をみることができる。
社運をかけて開発したAndroidアプリや.NETアプリであっても、何も対策をしなければ容易にデコンパイルされる可能性がある。その結果、ソフトウェアのロジックなどの貴重なノウハウ、知的財産が流出し、模倣の被害ばかりか、改竄も容易になり、ウィルスを仕込まれる可能性がある。難読化ツールの効果を今こそ検討すべきときだろう。
コラム
スマートフォンを狙ったマルウェアが続々登場
近年大きな問題になっているAndroid向けのマルウェア。これらがどのように作成され、拡散しているかを調べると、中間コードをデコンパイルする手法が使われていることが多いとも言われている。
例えば、Google Play(マーケット)で人気アプリがあったとする。犯人は、そのアプリをデコンパイルして、アプリを改造できるかどうかを探る。もし改造が可能なら、アプリ内にマルウェアを仕込み、それを正規アプリとほとんど同じ名前をつけて、マーケットに公開する。ユーザーは、人気アプリのつもりで不正アプリをダウンロードしてしまうといった被害を受けるわけだ。
インフォメーション
難読化製品に関するセミナー 8月29日に開催決定
本記事で紹介した、難読化によるアプリケーション/システムの保護方法について、下記の無料セミナーが開催される予定だ。こちらもぜひ参考にしていただきたい。
「あなたのアプリケーションは保護されていますか?.NET/Java リバースエンジニアリングの脅威~内部統制時代に必要とされるアプリケーション対策」