「今年に入り、Androidアプリの改ざん事件が多発しています。正規アプリの課金処理をバイパスした海賊版の無料アプリや、リンク先をマルウェアの配信サーバに変更した悪意ある改ざんアプリが配信される事件が起きています。この際に使われるのがリバースエンジニアリングです。企業は今、第三者に対して簡単にソースコードを入手させない施策が求められていると言えるでしょう」

エージーテック 伊藤史仁氏

エージーテックの伊藤史仁氏は、Androidアプリを提供する企業に対して、このように警鐘を鳴らす。

伊藤氏は、元々Javaアプリの開発に従事していたエンジニア。Javaは、プラットフォームの特性上、バイナリからソースコードを逆コンパイルする「リバースエンジニアリング」が容易に実行できるという特徴がある。しかも、業務アプリケーション開発などで広く使われていることから、関連ツールも豊富。リバースエンジニアリング機能を持つソフトウェアも無償で手に入れることができる。

「知的財産とも言えるソースコードをだれでも閲覧できるため、以前から安全性については危惧していました。ソースコード中のURLに対してハッキングを仕掛けてくるケースもあるので、なんとしても"丸見え"状態は回避する必要があるでしょう」

SDK標準の難読化ツールに足りない機能

Android SDKには標準で「ProGuard」という難読化ツールが付属している。最近ではこちらを使って難読化を施してから配信するケースも増えているが、伊藤氏によると「まだその割合は少ない」という。

加えて、ProGuardはAndroid SDK に無償で付属するオープンソースの難読化ツールということもあり、搭載機能は最小限。メソッド/変数/クラス名の変更といった典型的な難読化機能は有するものの、前述のような事件を防ぐには事足りないケースもあるようだ。

では、アプリの改ざんを防ぐにはどういった機能が必要なのか。伊藤氏は、名前変更機能に加えて、文字列の暗号化機能、制御フローの難読化機能、改ざん検出機能などを挙げる。

これらのうち暗号化機能は、重要な文字列を暗号化(実行時に復号化)し、リバースエンジニアリングを行った際も判別できなくするというもの。ソースコードに含まれるURLなどの情報が明るみに出るのを防ぐことができる。

一方、改ざん検出機能は、正規署名と異なる署名が付けられた場合、それを検出するというものである。改ざんを検出した際には、アプリ動作の停止をはじめ、例外を発生させたり、検出時用に用意したメソッドを呼び出すことができるなど、ソースコードの難読化で防ぎきれない場合に備えた、2つ目の"網"としての機能を有している。

「企業でリリースしているアプリが改ざんされてマルウェアを仕込まれたりしたら、甚大な損害を被ることになります。個人提供の範囲では、無償の難読化ツールだけでもよいかもしれませんが、企業の場合は、アプリケーションが持つ、情報資産、機能資産を見極めた上、適切なリスクマネージメントが必要でしょう」

豊富な改ざん防止機能を備える「DashO」、その操作性やいかに

Androidアプリの難読化ツールとして評価の高いのが、PreEmptive Solutions社が開発する「DashO」である。DashOは、ソースコード保護の視点で改ざん防止などの豊富な機能を提供している。

また、元々はパフォーマンス最適化ツールとして開発されたこともあり、不要なソースコードを削除して軽量化する機能なども備える。さらに、アプリの有効期限を設定したり、期限外アプリの動作を制御したりする機能も用意されている。

「提供開始から15年が経つ、難読化市場を牽引してきたツールである」(伊藤氏)というDashO。操作性に関しても、「機能改善を何度も繰り返しており、ユーザーがより簡単に利用できるよう工夫されている」と伊藤氏は強調する。

そうした特徴を備えるDashOに関して、エージーテックは、無料で体験できるワークショップを7月11日(木)、8月5日(月)に開催する予定である。ワークショップ終了後、ソースコードを持ち込んで自身のアプリをサンプルに難読化を実施してみることも可能だという。また、DashOのWebサイトにて評価版も提供されている

本稿では取り上げられなかった機能も紹介される予定なので、Androidアプリ開発者は参加を検討してみるとよいだろう。

[PR]提供: