アプリケーションの強化

アプリケーションハードニングとは何ですか?

アプリケーションの堅牢化とは、コードの難読化、ホワイトボックス暗号化、その他の技術を使用して、リバースエンジニアリングや改ざんなどのモバイル詐欺の手口からアプリケーションを保護する、サイバーセキュリティの概念および技術です。これには、悪意のある行為者がアプリを攻撃するために必要な労力のレベルを高める対策も含まれます。アプリケーションのハードニングは、アプリを保護し、セキュリティリスクを低減し、悪用、不正行為、リパッケージを防止するために、企業にとってベストプラクティスであるべきです。

アプリ内保護、アプリケーションハードニング、アプリケーションシールド

アプリケーションハードニングとアプリケーションシールドは、アプリ内保護のサブセットです。アプリ内保護は、アプリケーションを内部から保護するように設計されており、アプリ保護に対するゼロトラストアプローチに適しています。アプリ内保護は、無人デバイスまたは信頼されていない環境で実行される高価値のアプリケーションに最適です。

アプリケーションの堅牢化には、攻撃者による攻撃の実行を困難にする防御機能が含まれます。アプリケーションのシールドには、攻撃者を混乱させるように設計された改ざん防止対策と、アプリ環境が信頼できるかどうかを判断する検出機能が含まれます。

アプリ内保護には、ボット対策技術、クリックジャッキング対策、実行時アプリケーションの自己保護、多要素認証などの機能も含まれます。

アプリケーションを脆弱にするモバイルセキュリティの前提

モバイルアプリの開発者は、アプリが使用されるすべての環境を制御することはできません。例えば、ユーザはデバイスを脱獄したり、ルート化したりすることができますが、この場合、オペレーティングシステムのセーフガードは無効になります。そのため、アプリケーションのハードニングは、デバイスやオペレーティングシステムのセキュリティ状態に関係なく、アプリ自体に保護を組み込むことができるため、モバイルアプリケーションセキュリティの重要な一部となります。

よくある2つの誤解が、モバイルアプリの侵害リスクを高めます。

1つ目は、Apple App StoreやGoogle Playといった公式アプリストアでは、正規の安全なアプリしかダウンロードできないと思い込んでいることです。公式アプリストアは、開発者が提出したアプリにマルウェアがないかスキャンし、アプリがユーザーデータにアクセスできるかどうかをチェックします。

しかし現実には、アプリの数が多すぎるため、アプリストアが悪意のあるアプリをすべて摘発することは不可能です。

第二に、iOSとAndroidのオペレーティングシステムは、デバイスにダウンロードされたモバイルアプリに対して十分なセキュリティを提供していると多くの人が思い込んでいます。現実には、AndroidやiOSの脆弱性に対するパッチがすぐに提供されるとは限らず、ユーザーが定期的にデバイスをアップデートしてサイバー衛生を実践するとは限りません。さらに、開発者がオペレーティングシステムが提供する暗号化機能を正しく実装していないケースもあります。

 

アプリケーションを堅牢化する理由

アプリケーションを堅牢化する主な理由は、知的財産の保護、アプリケーションの完全性の保護、アプリケーション上の機密データの保護の3つです。

アプリケーション内には、企業の競争優位性をもたらすコンセプト、イノベーション、発明などの知的財産(IP)が存在します。動作するソースコードを所有することで、アプリ内にコード化されたIPにアクセスすることができます。アプリのソースコードを解析することで、ハッカーはIPを盗むことができます。アプリケーションのハードニングは、IPを安全に保つことができます。

アプリの完全性もアプリ開発者の懸念事項です。悪意のある行為者は、アプリを検査し、可能であれば、アプリを変更して、クローンを作成したり、データを盗んだり、API経由でデータをスクレイピングしたりする可能性があります。難読化とホワイトボックス暗号を使用してハード化されていないアプリは、開かれた本のようなものです。攻撃者はアプリのコードを平易に静的解析し、攻撃や悪用する領域を見つけることができます。レイヤー防御戦略の一環として、企業はアプリケーションにアンチデバッグとアンチタンパーの機能を追加し、その完全性に対する攻撃を保護、検出、および対応するメカニズムを持つ必要があります。

一般的な攻撃手法は、アプリケーションのセキュリティ上の欠陥を悪用して、機密性の高い個人データを盗むことです。ランタイム中に使用されるデータは、静止状態や転送中のデータにはない方法で公開される可能性があり、攻撃者はデバッガ、エミュレータ、およびその他のツールを使用することで、これを悪用する方法を学ぶことができる可能性があるため、次善の策は、ハッカーがアプリ内のデータにアクセスし、変更するために使用するデバッガ、エミュレータ、およびその他のツールの不正使用を制限することです。さらに、暗号化キーが適切に保護されていない場合、攻撃者はそれらのキーを盗み出し、転送中のデータへのアクセスに使用する可能性があります。アプリケーションのハードニングとその他のアプリ内保護技術は、ハッカーが使用する攻撃ベクトルを無効にすることで、アプリとアプリを流れるデータを保護します。

アプリケーションのハードニング技術

アプリケーションの堅牢化には、攻撃者からアプリを保護するためのいくつかの技術が含まれます。以下がその例です:

コードの難読化:

コードの難読化:アプリのコードをスクランブルして、アプリのリバースエンジニアリングを困難にします。そのため、アプリを読みにくくすることで、アプリをターゲットにすることが難しくなり、IPを盗んだり、リパッケージしたりすることも難しくなります。コードの難読化は、アプリを保護するためにいくつかのテクニックを使用します。ソフトウェアコンポーネントや識別子の名前を変更することができます。使用されることのないダミーコードを追加したり、文字列を暗号化したりすることができます。コードを再コンパイルし、インタプリタや仮想マシンで実行することもできます。その他のコード難読化技術には、リフレクションやパッキングがあります。

ホワイトボックス暗号:

このアプローチは、Apple iOSのKeychainやAndroid Keystoreのような、最新のプラットフォームのネイティブツールを利用する代替手段を提供します。企業がジェイルブレイクしたデバイス上でアプリを実行できるようにする必要がある場合、これは有用な暗号技術になります。また、iOSのKeychain/Secure EnclaveやAndroidのKeyStoreなど、侵入者が攻撃のターゲットとするデバイスの認証情報のデフォルトの場所を知っている場合、ホワイトボックス化を使用することができます。

その他のテクニック

  • 証明書のピン留めは、相互認証プロセスに関与する当事者が特定の証明書をピン留めできるようにするもので、中間者攻撃に対抗するために使用できます。
  • リソースの暗号化では、クラスや文字列などのアプリコンポーネントを暗号化します。
  • 自動有効期限は、一定期間操作が行われないとユーザーがログアウトする期限を設定します。
  • スタンドアロンキーボードは、キーロギングの試みを阻止するために採用することができ、不正なキーボード検出は、不正なキーボードを検出するために使用することができます。
  • ポリモーフィズムは、リバースエンジニアリングを困難にするためにコードを変更する方法です。

アプリケーションハードニングの使用例

モバイルバンキングアプリは、アプリケーションハードニングのユースケースの1つです。より多くのモバイルユーザーが、バンキングを自分のデバイスで行うようになっています。詐欺師は、セキュリティの不備があればそれを利用しようとします。アプリケーションのハードニングは、詐欺師によるモバイルバンキングアプリの悪意のあるエクスプロイトの開発を防止し、攻撃者の成功をより困難にします。

モバイルヘルスケアアプリは、HIPAA(Health Insurance Portability and Accountability Act:医療保険の相互運用性と説明責任に関する法律)で規制されている保護されるべき医療情報(PHI)を扱います。医療提供者などは、遠隔医療アプリが患者データを開示した場合、厳しい罰則に直面する可能性があります。アプリケーションのハードニングは、サイバー攻撃者がPHIにアクセスできないようにすることで、患者の機密性が維持され、HIPAAによる罰金が回避されることを保証します。

モバイル小売アプリも、アプリケーションのハードニングに最適なユースケースです。モバイル小売アプリは、Payment Card Industry Data Security Standard(PCI DSS)によって規制されているカードデータを扱います。PCI DSS に準拠しないオンライン加盟店は、クレジットカード会社からの罰金、顧客の信頼喪失、さらには連邦取引委員会の監査に直面する可能性があります。

救急隊員、法執行機関、政府機関などの公共サービス担当者は、モバイルアプリで機密情報にアクセス、送信、保存します。このようなデータは、HIPAA、政府機関のポリシー、またはプライバシー規則によって管理される可能性があるため、アプリケーションの堅牢化などの堅牢なセキュリティ対策によって保護する必要があります。

消費者向けのモバイル・アプリは、外部世界と機密性の高い内部顧客データベースとの架け橋となるため、攻撃者の標的となります。アプリケーションのハードニングは、モバイルアプリに存在する数多くの脆弱性を攻撃者が悪用することを阻止し、データの盗難を防ぐことができます。

接続デバイスとアプリの数が飛躍的に増加する中、ハッカーが家庭、職場、工場のネットワークに侵入する攻撃対象も同様のペースで拡大しています。接続デバイスを制御するアプリは攻撃に対して脆弱です。アプリケーションのハードニングは、アンチウイルスソリューションやその他の従来のセキュリティツールでは不可能な方法で、組み込みシステムを保護するためにこれらのアプリケーションを保護することができます。

 

アプリケーションハードニングによる攻撃戦略からの保護

アプリケーションのハードニングは、リバースエンジニアリング、リパッケージング、不正なキーボードなど、いくつかの攻撃シナリオからアプリケーションを防御するのに役立ちます。

リバースエンジニアリングとは、アプリを解析して設計や実装の情報を抽出することです。この技術は合法的な目的で使用することもできますが、攻撃者がコードを解析し、不正な目的でアプリを悪用するマルウェアを開発するために使用することもできます。

リパッケージ攻撃では、ハッカーが正規のアプリをリバースエンジニアリングし、悪意のあるコードを追加してアプリストアにアップロードします。これは、モバイルバンキングのアプリを狙う攻撃者が好んで使用する手法です。

キーボードをカスタマイズするために使用される代替キーボードアプリにも、データを盗んだり、その他の悪意のある動作を実行したりする悪意のあるコードが隠されている可能性があります。

要するに、アプリケーションのハードニングは、悪意のある行為からアプリを保護し、そのライフサイクル全体を通じてサイバー犯罪者から機密情報を保護するということです。アプリケーションのハードニングは、ランタイム保護、強力な認証、その他の技術を含む、レイヤ化されたアプリセキュリティアプローチの一部です。レイヤードセキュリティは、デジタルトランスフォーメーションのイニシアチブを加速し、運用コストを削減し、新たな成長機会を開くのに役立ちます。

お問い合わせ

デジタルセキュリティのニーズに対する当社のソリューションの詳細については、当社のセキュリティ専門家にお問い合わせください。