モバイルアプリの管理・開発の過程で、開発者と担当者には、モバイルアプリのセキュリティのため多大な努力が必要とされます。しかし、市場に出回る数多くのモバイルアプリすべてのセキュリティに対し、完璧に対応しているとはいえません。多くのハッカーは、アプリのセキュリティホールに付け込み、脆弱性を見つけ出してこれを悪用します。特に、リバースエンジニアリング技術は、アプリ開発者や事業者の知的財産と売上に大きな損失を与えることがあります。開発者は、このようなリスクを速やかに処理し、悪意ある行為からアプリを保護するための防御策を構築しなければなりません。
リバースエンジニアリングとは?
リバースエンジニアリングは、APKファイルを分解した後にコンパイルされたバイナリから原本のソースコードを取得するプロセスです。Androidのランタイムで解析されるDEXファイルは、逆コンパイルツールでJARファイルに変換され、その後、他のツールでJavaのソースコードに変換されます。このようなプロセスは、ハッカーだけでなく、競争に晒されている開発者や会社が、競争相手の会社のアプリを分析したり、一部の機能を複製・借用したりの目的で使用することがあります。ハッカーは、この技術を使って認証プロセスを迂回し、アプリのプレミアム機能にアクセスすることができます。特に、モバイルゲームの場合、このような技術を用いる不公正な方法により、ゲーム内の競争相手より優位に立って利益を得ることもあります。
SoftlceとOllyDbgなどのデバッガはプログラムの流れの追跡に使われますが、これによってハッカーは、アプリ全体のビジネスロジックを把握し、他のモバイルアプリに適用させることができます。また、把握したロジックを改ざんし、悪性コードを挿入・配布することも可能ます。一般ユーザーがこのようなアプリをダウンロードしてインストールすると、個人情報に深刻な侵害を被ることもあります。
リバースエンジニアリング対策
アプリのセキュリティは、製品を使用する消費者を保護する上で最も基本的な措置であり、これによってユーザーから信頼を得ることができます。そのため、アプリ開発者にとって強力な攻撃方法であるリバースエンジニアリングからアプリを保護する様々な方法を取り入れることは、必要不可欠です。そのために参考にすべき実践事例は、下記のとおりです。
- プログラミング言語によって、リバースエンジニアリング攻撃の難易度は異なります。C/C++は、比較的リバースエンジニアリングによる攻撃が困難です。そのため、アプリのビジネスロジックや重要なアルゴリズムのコーディングには、C/C++を使用しなければなりません。Javaの場合、エンジニアリングがとても簡単です。そのため、Androidで提供するNDKを用いて、アプリのメインロジックをすべて.soファイルにしなければなりません。
- 暗号化技術を使って一部のコードをサーバーに保存し、これを適切な時点でダウンロードして使用することは、リバースエンジニアリングを防御する一つの方法です。但し、そのためには、サーバーとアプリの間に適切なコミュニケーション方式を定義し、認証手続きを設けなければなりません。
- 重要なビジネスロジックをリソース化してこれを暗号化する方式の使用は、リバースエンジニアリングの攻撃を防御するもう一つの効果的な方法です。暗号化されたロジックを復号化して使用するコードは、強力な難読化を適用させ、ハッカーの解読を困難にします。
- 暗号化されたバイナリの偽造・変造状態を確認するハッシュ・アルゴリズムを使用する際には、必ずキーを推測できないよう、PBKDF2やbcryptなどの鍵導出関数を使用しなければなりません。こうすることで、ハッシュ関数の攻撃を効果的に防御することができます。
- ユーザーの資格証明は、必ず暗号化された形式でサーバーに保存・保護されなければなりません。特に、これらの情報を、デバイス・外部ストレージ・アプリ内メモリなどにはできるだけ保存しないことをお勧めします。このような情報が暗号化されない状態で攻撃者がアクセスできる位置に保存されますと、 当該情報は攻撃者によって変造・悪用されるおそれがあります。
- データベースに保存されるデータは、AES-256などの強力な暗号化アルゴリズムに適用され保存されなければなりません。
- API検証に使用されるキーは、安全に隠すか、セキュアチャンネルにより送信されなければなりません。これらの情報がハードコーディングされたり、リソースフォルダなどに保存されたりすると、検証用キーが容易に推測され、簡単にAPIが呼び出されるなどの被害を受けることがあります。
アプリのセキュリティのためのワンストップソリューション、AppSealing
AppSealingは、強力なリバースエンジニアリングに対する防御システムを提供すると同時に、様々な攻撃からモバイルアプリを保護し、効果的な防御策を提供するエンドツーエンドのセキュリティ製品です。
AppSealingは、DEX、SO、DLLファイルの全てを暗号化することで、ハッカーからの逆コンパイルの攻撃と動的コードの盗難を防御します。
AppSealingが適用されたモバイルアプリは、実行した時点でバイナリ攻撃、デバッグ攻撃、逆コンパイル攻撃などから、アプリ自らが防御するランタイムアプリケーション自己保護(RASP)を実行します。モバイルアプリを構成するすべての要素のハッシュを検証し、アプリの整合性を保証します。AppSealingは、ルートデバイスとAndroidエミュレータ環境でアプリ実行を検知し、オプションに従ってアプリの実行を遮断します。
コーディングが不要なAppSealingは、メモリ使用量、CPUとバッテリー消耗に対して最小限の影響を与えるように設計されており、アプリをアップロードするだけで適用することが可能で、10分後にはセキュリティが適用されたアプリをダウンロードすることができます。
最先端のセキュリティ攻撃は、革新的な防御技術を要します。手軽に使うことができ、強力なセキュリティ機能を提供するAppSealingで、セキュリティ問題を解決しましょう。
今すぐ無料トライアルをお試しください。- http://bit.ly/apply-security-now