その他のセキュリティに関する考慮事項

AIR アプリケーションが Web テクノロジを使用して構築されていても、開発者はそれらの AIR アプリケーションがブラウザーのセキュリティモデル内で機能していないことに気づくことが重要です。 つまり、故意にまたは誤ってローカルシステムに損害を与える可能性がある AIR アプリケーションを構築する場合があります。AIR はリスクを最小化しようと試みますが、脆弱性が取り込まれる可能性はまだあります。ここでは、重要なセキュリティ上の潜在的なリスクについて説明します。 開発者向けのドキュメントでは、このようなリスクを回避するアプリケーションを構築するためのベストプラクティスを示しています。

ファイルをアプリケーションセキュリティサンドボックスにインポートした場合のリスク

アプリケーションサンドボックスがランタイムのすべての権限を持つコンテンツ。 開発者は次の点に注意する必要があります。

  • ファイルは必要な場合にのみ AIR ファイル(インストール済みアプリケーション内)に含めます。

  • スクリプトファイルは、動作が完全に把握され、信頼される場合にのみ AIR ファイル(インストール済みアプリケーション内)に含めます。

  • ネットワークソースのデータを AIR API のメソッドのパラメーターとして使用しないでください。これによりコードが実行される可能性があります。

    Adobe AIR では、アプリケーションサンドボックス内のコンテンツがネットワークソースのデータをコードとして使用することによって、悪意のあるコードが誤って実行されることを防ぎます。 これには、ActionScript Loader.loadBytes() メソッドや JavaScript eval() 関数の使用が含まれます。

外部ソースを使用してパスを判断する場合のリスク

AIR アプリケーションは、外部のデータまたはコンテンツを使用すると、改ざんされる可能性があります。このため、アプリケーションでネットワークまたはファイルシステムのデータを使用する場合は特に注意する必要があります。 信頼の責任は最終的には開発者と、開発者が作成するネットワーク接続にありますが、外部データの読み込みは本来リスクを伴うものであるため、機密データの操作への入力には使用しないでください。開発者は次の操作を行わないことをお勧めします。

  • ネットワークソースのデータを使用したファイル名の決定

  • ネットワークソースのデータを使用した、個人情報の送信または他のアプリケーションの起動にアプリケーションで使用される URL の作成

保護されていない資格情報を使用、保存または送信する場合のリスク

ユーザー資格情報をユーザーのローカルファイルシステムに保存することは本来リスクを伴い、これらの資格情報が改ざんされる可能性があります。開発者は次の点に注意する必要があります。

  • 資格情報をローカルに保存する必要がある場合は、ローカルファイルシステムに書き込むときに資格情報を暗号化します。 Adobe AIR は、インストール済みの各アプリケーションに固有の暗号化された記憶領域を提供します。詳しくは、開発者向けのドキュメントを参照してください。

  • ネットワークソースが信頼でき、送信プロトコルが TLS(Transport Layer Security)、https: または SecureSocket クラスを使用している場合以外は、暗号化されていないユーザー資格情報をネットワークソースに送信しないようにしてください。

  • 資格情報の作成時にデフォルトのパスワードを指定しないでください。パスワードはユーザー自身が作成できるようにしてください。デフォルトを使用するユーザーはその資格情報を、デフォルトパスワードを知っている攻撃者に公開することになります。

リモートデータの送受信でのリスク

インターネットを介しての情報をやり取りでは、情報漏洩や改ざんの被害を受ける可能性があります。TLS(Transport Layer Security)プロトコルまたはこれより古い SSL (Secure Socket Layer)プロトコルを使用して、サーバーとクライアントシステムとの間の通信を暗号化できます。HTTP の通信を保護するには、HTTPS プロトコルを使用します。TCP ソケットの通信を保護するには、SecureSocket クラスを使用します。どちらの場合も、AIR アプリケーションがデータの送受信を安全に行うために、データを提供するサーバーでは TLS または SSL を使用する必要があります。AIR 2 では SecureSocket クラスが追加されました。このクラスは AIR アプリケーションサンドボックスで実行するコンテンツに使用できます。開発者は次の点に注意する必要があります。

  • サーバーでホストされている機密データへのアクセス権の授与は、TLS プロトコルの最新版を使用して行います(現時点では、AIR は TLS バージョン 1 および SSL バージョン 4 をサポートします)。

  • HTTP プロトコルを使用する機密データを送受信する場合は、HTTPS を使用します。

  • TCP ソケットを使用する機密データを送受信する場合は、SecureSocket クラスを使用します。

ダウングレード攻撃のリスク

アプリケーションのインストール処理中に、ランタイムはアプリケーションのバージョンが現在インストールされていないことを確認します。 アプリケーションが既にインストールされている場合、ランタイムは既存のアプリケーションのバージョンストリングを、インストールしようとしているバージョンと比較します。 このストリングが異なる場合、ユーザーはインストールのアップグレードを選択できます。 ランタイムは、新しくインストールされるバージョンが古いバージョンよりも新しいことを保証するわけではなく、それが異なるバージョンであるということだけを保証します。 攻撃者は古いバージョンをユーザーに配布して、セキュリティの弱点をくぐり抜ける可能性があります。 このリスクは軽減することができ、リスクを回避するためのバージョンスキームおよびアップデート確認の実装に関するベストプラクティスについては、開発者向けのドキュメントを参照してください。