iOSアプリをリバースエンジニアリングから守る「難読化技術」とは「iOS安全神話」はもはや崩壊?

ビジネスでもプライベートでも、モバイル、スマートデバイスの利用は一般的になった。その結果、スマートデバイスを狙うサイバー犯罪も増加の一途をたどっている。特に脅威なのは「リバースエンジニアリング」を悪用し、機密情報の窃取などを行う攻撃だ。本稿では、これを防ぐ手法の1つとして、開発者にもユーザーにも負担の少ない「難読化」について解説しよう。

» 2016年07月05日 05時00分 公開
[@IT]
PR

スマートフォンは機密情報の“宝箱”――崩れつつある「iOS安全神話」

 スマートフォンやタブレットデバイスが浸透し、私たちを取り巻くIT環境では、モバイルが中心的な存在となった。プライベート/ビジネスを問わず、モバイルアプリを活用すれば、いつでもどこでも、あらゆるサービスが利用できる。だが利便性が向上すれば、その裏側で必ずといっていいほど増大していくのが「セキュリティリスク」だ。

 個人情報や金融情報、企業の機密情報などにアクセスできるようになったモバイル端末は、サイバー犯罪者にとってみればまさに“宝箱”のような存在だ。一度端末のアクセス権を奪取されてしまえば、膨大な量の機密データを一度に窃取される危険性がある。

 それにも関わらず、個々のユーザーは、スマートフォンのセキュリティリスクを漠然と感じながらも、その対策にはほとんど関心がないらしい。トレンドマイクロが2015年7月に発表した調査結果によれば、Web閲覧のリスクを懸念するユーザーが75.4%に達した一方で、モバイル端末のセキュリティ対策を講じているユーザーは26.5%にとどまっている。未対策のユーザーの5割以上が「対策の仕方が分からない」と回答しているのも興味深い(関連リンク)。

 そんなユーザーの認識を見越してなのか、スマートフォンをターゲットとしたサイバー攻撃は、増加の一途をたどっている。特に「リバースエンジニアリング」を用いてアプリを解析し、不正コードなどを埋め込む攻撃は悪質で、Androidでは、初のマルウェアが2011年に発見されてから、毎年膨大な量の攻撃が発見されている。人気アプリの海賊版にマルウェアを仕込むという手口にだまされるユーザーは少なくないようだ。

モバイルアプリに対する攻撃 モバイルアプリに対する攻撃

 一方、iPhoneやiPadに搭載されるiOSのアプリはどうだろうか。「iOSは安全な“サンドボックス構造”をとっているし、『App Store』の厳格な承認プロセスによって守られてから大丈夫だ」、そう考えているユーザーも少なくないかもしれない。アップル自身も、iOSに対する高度なセキュリティ対策は不要だと主張してきたし、これまでに発見されたマルウェアも、いわゆる「脱獄(Jailbreak)」済みの端末を狙ったもので、一般ユーザーには無縁だと考えられていた。

 ところが、2016年にパロアルトネットワークスによって未脱獄のiOSに感染するマルウェア「AceDeceiver」が報告されたことで、この“安全神話”はもろくも崩れ去った。アップルはすぐに対策を講じたが、今後もiOSを狙ったさまざまな攻撃手法が新たに登場してくるであろうことは十分に予測できる。iOSアプリとて、決して対策が不要というわけではないのだ。

 モバイルアプリを開発する事業者にとって、こうした攻撃者によるリバースエンジニアリングは大きなリスクとなる。例えば、2016年6月には、人気ゲームアプリの不正ツール(チートツール)を開発した大学生が逮捕されるという事件があった。課金型ゲームの場合、不正なツールのまん延によってゲーム性が損なわれれば、多数のユーザーが離れていってしまうだろう。iOSアプリが攻撃被害に遭えば、知的財産の盗用や機密データの流出、収益の損失といった直接的な被害のみならず、事業者としての信頼までも喪失する恐れがあるのだ。

 では、どうすれば開発者やユーザーの負担を可能な限り抑えつつ、iOSアプリのセキュリティを向上させられるのだろうか? 本稿ではその答えの1つである、iOSアプリの「難読化」技術を紹介しよう。

「逆コンパイル」が容易な開発環境

 モバイルアプリの開発にはさまざまな手法が存在するが、特にObjective-CやJavaなど、「中間言語」を生成するオブジェクト指向言語は、従来の手法と比べて開発効率が向上している反面、「逆コンパイル」によるリバースエンジニアリングのリスクが高いことが指摘されている。また、コンパイルされたアプリに多数のメタデータが含まれるため、攻撃者がこれらのメタデータを抽出し、プログラムに含まれる機密情報や、攻撃に利用可能な情報を奪取できる危険性もある。

逆コンパイルによるリバースエンジニアリングのリスク 逆コンパイルによるリバースエンジニアリングのリスク

 「Android Studio」や「Xcode」のような統合開発環境(IDE)の進化も、攻撃者にとっては追い風になっている。IDEを高度なデバッグツールとして利用できるという利点は、一方でアプリの解析を容易にするからだ。さまざまな逆アセンブラ/逆コンパイラツールをインターネットを通じて容易に入手できることも、攻撃者のリバースエンジニアリングを“サポート”する環境をますます整えてしまっているといえる。

 下図は、インターネット上で容易に入手できるリバースエンジニアリングツールを用いて、iOSアプリのIPAファイルを逆コンパイルした例である。ソースコードに近い状態で、元の関数名や変数名が復元されていることが分かる。開発の利便性を考慮した場合、関数や変数には分かりやすい名前を付けることが多いが、これが攻撃者にとっては攻撃の手掛かりとなる。

IPAファイルのリバースエンジニアリング例 IPAファイルのリバースエンジニアリング例

リバースエンジニアリングを困難にする「難読化」

 では、このリバースエンジニアリングに対してアプリを保護するためには、どんな手法が考えられるだろうか? これについては代表的なものとして、「実行コードの暗号化」「改ざん検知コードの挿入」「デバッガ検知コードの挿入」などの手法が挙げられる。

 しかし、これらの手法はいずれも、開発者やユーザーに対する負担が少なくない。例えば、コードを挿入する際には既存のアプリケーションに大幅な変更を加えなければならないし、ファイル自体が肥大化する恐れもある。また、暗号化や検知処理を追加すれば、その分デバイスのリソースを消費し、アプリの挙動が遅くなる懸念もある。

 そこで注目されるのがソースコードの「難読化」だ。これはアプリを逆コンパイルされ、ソースコードを復元されてしまったとしても、その結果を人間には判読できない形に変換する技術だ。ソースコードが手に入ったところで、解読できなければ攻撃に利用できる情報はつかめない。これにより、アプリが保持している機密情報を秘匿できるというわけだ。下図は、実際の難読化の例である。難読化した実行コードを逆コンパイルすると、シンボル名が分かりにくいものになっていたり、制御フローが解読不明なものになっていたりして、攻撃の糸口がつかみにくくなっていることが分かる。

ソースコード難読化の例1 ソースコード難読化の例

 アプリの難読化は、開発プロセスには大きな変更を加える必要がなく、実行コードにコンパイルする直前で実施すればよいのも大きな利点だ。また、デバイスから見たときには、実行コード自体は標準的なものであるため、不必要にリソースを消費することもない。開発者にもユーザーにも負担の小さいセキュリティ対策手法といえるだろう。

 なお、理論的には、難読化は手作業で行うことも可能だが、全てのコードの整合性を保ったまま、人間が手作業で難読化を行うことは、言うまでもなく不可能だ。そこで活用したいのが、ツールによる難読化ソリューションである。以下では、エージーテックが提供する「PreEmptive Protection for iOS」を紹介しよう。

エージーテックの難読化ソリューション

 エージーテックはこれまで、.Net用の「Dotfuscator Professional」やJava用の「DashO」などの難読化ツールを提供してきた。今回、このファミリーにiOS用の難読化ツール「PreEmptive Protection for iOS」が新たに加わった。開発元のPreEmptiveは、20年以上にわたってアプリケーション保護のソリューションを開発してきた実績を持つ。

 Dotfuscator Professionalの簡易版である「Dotfuscator CE」は、2003年からMicrosoft Visual Studioの標準難読化ツールとして組み込まれており、デファクトスタンダードとして利用されている。Dotfuscatorは、最新のiOS/Androidアプリ開発プラットフォーム「Xamarin」もサポートしており、これを介したiOS/Androidアプリの難読化も実施できる。また、難読化だけでなく、改ざん検知やエラー報告、アプリケーション分析などの付加機能を、開発者に負担を掛けず容易にアプリに搭載し、より高度なサービスを提供できるようになる。

「PreEmptive Protection for iOS」 「PreEmptive Protection for iOS」

 最新版のPreEmptive Protection for iOSは、現行バージョンでは“制御フローの難読化”と“シンボル名の変更”に対応しており、Xcode開発環境のコンパイラなどに統合する形で利用できる。もちろん、難読化されたアプリであっても、デバッグ用のツールが用意されているため、開発者であれば解析が可能である。上述した以外の難読化技術も随時採用し、新しいバージョンのiOSにも継続して対応していく。

 世の中には、Dotfuscator CEやその他のオープンソースソフトウェアのように、無償で利用できる難読化ツールがさまざま存在するが、マルウェア対策の歴史が示すように、こうしたセキュリティ技術は攻撃者との“いたちごっご”になるのが常だ。古い技術はいずれ破られてしまう可能性が高く、常に開発を続けているという点は、商用版の大きなメリットであるといえる。

 また、十分に検証されていない難読化ツールを用いれば、逆にアプリの動作に悪影響を及ぼしてしまう可能性も否めない。攻撃者との“開発競争”に打ち勝ちながら、安全で信頼のできるアプリを継続して提供するために、PreEmptive Solutionsの長年の実績とノウハウや、エージーテックのサポート・保守を活用するのは有効な選択肢の1つだといえるだろう。

◆キャンペーン情報

「PPiOS発売記念キャンペーン」

 PreEmptive Protection for iOS (PPiOS) 発売を記念して、キャンペーンを実施いたします。キャンペーン期間中成約いただいたお客さまに、特別価格にて、基本パッケージ、追加ライセンス数ともに200ユーザー分を販売いたします。

  • 期間:2016年7月1日〜9月30日
  • 数量限定:200ユーザー分

  • PPiOS基本パッケージ(2ユーザー): 35万円→10万5000円(税抜)
  • PPiOS追加ライセンス(1ユーザー): 17万5000円→5万2500円(税抜)

  <PPiOS 評価版>

  <PPiOS 製品情報>


Copyright © ITmedia, Inc. All Rights Reserved.


提供:株式会社エージーテック
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2016年7月18日

キャンペーン情報


・基本パッケージ(2ユーザー):
 35万0000円→10万5000円(税抜)

・追加ライセンス(1ユーザー):
 17万5000円→5万2500円(税抜)
PreEmptive Protection for iOS (PPiOS) 発売を記念して、キャンペーンを実施いたします。キャンペーン期間中成約いただいたお客さまに、特別価格にて、基本パッケージ、追加ライセンス数ともに200ユーザー分を販売いたします。

・期間:2016年7月1日〜9月30日
・数量限定:200ユーザー分

評価版

30日間使用できる評価版を無料ダウンロードできます。是非この機会にご利用ください。

製品情報

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。