Microsoft セキュリティ アドバイザリ 3214296

ID モデル拡張トークン署名検証の脆弱性により、特権が昇格される

公開日: 2017 年 1 月 10 日

バージョン: 1.0

概要

Microsoft は、パブリック バージョンの Identity Model Extensions 5.1.0 の脆弱性に関する情報を提供するために、このセキュリティ アドバイザリをリリースしています。 このアドバイザリでは、開発者がアプリが正しく更新されるようにするためにできることに関するガイダンスも提供します。

Microsoft は、公開バージョンの Microsoft.IdentityModel.Tokens 5.1.0 で、対称キーで署名されたトークンが改ざんに対して脆弱になる可能性があるセキュリティの脆弱性を認識しています。 対称キーを使用して署名されたトークンを使用してユーザーの ID を検証し、アプリがそのユーザーの検証済み ID に基づいて決定を行うと、アプリが誤った決定を行い、その結果特権が昇格される可能性があります。

開発者は、パッケージ バージョン 5.1.1 以降を使用するようにすべてのアプリを更新することをお勧めします。

軽減要因

トークンの署名アルゴリズムは、アプリがユーザーの認証に使用している ID プロバイダーによって指定されます。 対称署名アルゴリズムのみがこの問題に対して脆弱であり、既知のパブリック ID プロバイダーは対称署名アルゴリズムを使用しません。 非対称署名アルゴリズムを使用して ID プロバイダーによって署名されたトークンは、キーの改ざんに対して脆弱ではありません。

Visual Studio で使用するために出荷された ASP.NET テンプレートは、このパッケージの脆弱なバージョンにバインドされません。

Microsoft では、対称キー アルゴリズムで署名されたトークンの検証に使用されるかどうかにかかわらず、すべての開発者がパッケージを更新して、コンポーネント自体またはサード パーティ製ソフトウェアによる将来の使用から保護することをお勧めします。

影響を受けるソフトウェア

Microsoft .NET Core または .NET Framework プロジェクトは、パッケージ Microsoft.IdentityModel.Tokens バージョン 5.1.0 を使用している場合、この脆弱性の影響を受けます。

影響を受けるパッケージとバージョン
パッケージ名 パッケージのバージョン
Microsoft.IdentityModel.Tokens 5.1.0

アドバイザリに関する FAQ

影響を受けるかどうか操作方法知っていますか?
.NET には、直接的と推移的の 2 種類の依存関係があります。 .NET Framework または .NET Core プロジェクトが、「影響を受けるソフトウェア」セクションに記載されている影響を受けるパッケージのいずれかに直接的または推移的な依存関係を持っている場合は、影響を受ける可能性があります。

直接依存関係

直接依存関係 は、プロジェクトにパッケージを具体的に追加するときに発生します。 たとえば、Microsoft.IdentityModel.Tokens パッケージをプロジェクトに追加すると、Microsoft.IdentityModel.Tokens に直接依存しています。

直接依存関係は、project.jsonまたは .proj ファイルを確認することで検出できます。

推移的な依存関係

推移的な依存関係 は、別のパッケージに依存するパッケージをプロジェクトに追加するときに発生します。

推移的な依存関係は、Microsoft Visual Studio ソリューション エクスプローラー ウィンドウで確認できます。このウィンドウでは、検索もサポートされます。また、プロジェクトのルート ディレクトリに含まれるproject.lock.json ファイルを確認することもできます。 このファイルには、プロジェクトのパッケージの権限のある一覧が含まれています。

影響を受けるアプリ操作方法修正しますか?

直接の依存関係を修正し、推移的な依存関係を確認して修正する必要があります。 脆弱なパッケージのバージョン 5.1.1 には、アプリをセキュリティで保護するために必要な修正プログラムが含まれています。

.NET Framework プロジェクトの依存関係の修正

  • オプション 1: NuGet を使用して Visual Studio プロジェクト パッケージを更新し、アプリケーションを再コンパイルして配置する

    1. Visual Studio でソリューションを開きます。
    2. ソリューション エクスプローラーで、[参照] ノードを右クリックし、[NuGet パッケージの管理] をクリックします
    3. [更新] タブを選択します。更新プログラムを含むパッケージの一覧が中央のウィンドウに表示されます。
    4. Microsoft.IdentityModel.Tokens パッケージを選択し、[更新] をクリックします
    5. アプリケーションをコンパイルしてデプロイします。

    NuGet ダイアログを使用した NuGet パッケージの管理の詳細については、「ダイアログを使用した NuGet パッケージの管理」を参照してください

  • オプション 2: パッケージ マネージャー コンソール UI を使用して Visual Studio プロジェクト パッケージを更新し、アプリケーションを再コンパイルして配置する

    1. Visual Studio でソリューションを開きます。
    2. [ツール] メニューをクリックし、[ライブラリ パッケージ マネージャー] を選択し、[コンソールのパッケージ マネージャー] をクリックします。
    3. パッケージ マネージャー ウィンドウで、「Update-Package Microsoft.IdentityModel.Tokens」と入力します
    4. アプリケーションをコンパイルしてデプロイします。

    パッケージ マネージャー コンソールの使用方法の詳細については、「パッケージ マネージャー コンソールの使用」を参照してください

.NET Core プロジェクトの依存関係の修正

.NET Core プロジェクトダイレクト依存関係

直接の依存関係を修正するには:

  1. エディターでproject.json ファイルを開きます。 依存関係セクションを探します。 セクションの例を次に示します。

         "dependencies": {
           "Microsoft.IdentityModel.Tokens": "5.1.0",
         }
    

    この例では、Microsoft.IdentityModel.Tokens は直接的な依存関係です。 影響を受けないこのパッケージのバージョンをダウンロードするには、そのバージョンを 5.1.1 に更新します。 パッケージのバージョンを更新した後、project.json ファイルを保存します。 この例のproject.json ファイルの dependencies セクションは次のようになります。

         "dependencies": {
           "Microsoft.IdentityModel.Tokens": "5.1.1",
         }
    

    Visual Studio を使用していて、更新されたproject.json ファイルを保存している場合は、Visual Studio によって新しいバージョンが復元されます。 復元の結果を確認するには、出力ウィンドウ (Ctrl + Alt + O) を開き、[出力の表示] ドロップダウン リストから パッケージ マネージャー変更します。

    Visual Studio を使用していない場合は、コマンド ラインを開き、プロジェクト ディレクトリに移動します。 dotnet restore コマンドを実行して、新しい依存関係を復元します。

  2. すべての直接依存関係に対処したら、推移的な依存関係を確認する準備が整います。

.NET Core プロジェクト推移的依存関係

推移的な依存関係の確認

推移的な依存関係を表示するには、Visual Studio ソリューション エクスプローラーを使用するか、project.lock.json ファイルを確認する方法の 2 つがあります。

Visual Studio ソリューション エクスプローラーの使用

ソリューション エクスプローラーを使用する場合は、Visual Studio でプロジェクトを開き、Ctrl キーを押しながらキーを押して、ソリューション エクスプローラーで検索をアクティブにします。 パッケージ名 Microsoft.IdentityModel.Tokens を検索します。 結果が見つかり、バージョンが 5.1.0 の場合、プロジェクトは Microsoft.IdentityModel.Tokens に推移的な依存関係を持つ。

.NET Core プロジェクト推移的依存関係の修正

Microsoft.IdentityModel.Tokens が見つからない場合は、どの依存関係も脆弱なパッケージに依存していないか、直接の依存関係を更新して問題を既に修正しています。

推移的な依存関係レビューで脆弱なパッケージを使用していることが示されている場合は、推移的な依存関係をオーバーライドするために、各脆弱なパッケージの更新バージョンに直接依存関係をproject.json ファイルに追加する必要があります。 project.json ファイルを開き、依存関係セクションを見つけます。 次に例を示します。


    "dependencies": {
      "VulnerablePackage": "1.0.0-*"
    }

推移的なパッケージ検索の結果は、アプリが使用するパッケージが Microsoft.IdentityModel.Tokens バージョン 5.1.0 に依存していることを示しています。 この例を修正するには、直接依存関係をproject.json ファイルに追加して追加する必要があります。 これを行うには、固定バージョンを参照する依存関係セクションに新しい行を追加します。 project.json ファイルを次のように編集します。


     "dependencies": {
       "Microsoft.IdentityModel.Tokens": "5.1.1",
       "VulnerablePackage": "1.0.0-*"
     }

固定パッケージに直接依存関係を追加した後、プロジェクトを保存します。 json ファイル。

Visual Studio を使用している場合は、更新されたproject.json ファイルを保存すると、新しいバージョンが Visual Studio に格納されます。 復元結果を表示するには、出力ウィンドウ (Ctrl + Alt + O) を開き、[出力の表示] ドロップダウン リストから パッケージ マネージャー変更します。

Visual Studio を使用していない場合は、コマンド ラインを開き、プロジェクト ディレクトリに移動します。 dotnet restore コマンドを実行して、新しい依存関係を復元します。

推移的な依存関係をもう一度チェックして、それらのすべてを確実に修正することができます。

アプリのリビルド

最後に、アプリをリビルドし、通常どおりにテストしてから、好みのデプロイ メカニズムを使用して再デプロイします。

その他の情報

Microsoft Active Protections Program (MAPP)

お客様のセキュリティ保護を強化するために、Microsoft は、毎月のセキュリティ更新プログラムのリリースの前に、主要なセキュリティ ソフトウェア プロバイダーに脆弱性情報を提供します。 セキュリティ ソフトウェア プロバイダーは、この脆弱性情報を使用して、ウイルス対策、ネットワークベースの侵入検出システム、ホストベースの侵入防止システムなどのセキュリティ ソフトウェアまたはデバイスを介して、お客様に更新された保護を提供できます。 セキュリティ ソフトウェア プロバイダーからアクティブな保護を利用できるかどうかを判断するには、Microsoft Active Protections Program (MAPP) パートナーに記載されているプログラム パートナーによって提供されるアクティブな保護 Web サイトを参照してください。

フィードバック

  • Microsoft のヘルプとサポートフォーム、カスタマー サービスのお問い合わせフォームに入力することで、 フィードバックを提供できます。

サポート

  • このアドバイザリに関する質問は、Id モデル拡張機能リポジトリGitHub で確認できます。
  • 米国およびカナダのお客様は、セキュリティ サポートからテクニカル サポート受けることができます。 詳細については、Microsoft のヘルプとサポートを参照してください
  • 海外のお客様は、現地の Microsoft 子会社からサポートを受けることができます。 詳細については、国際サポートを参照してください。
  • Microsoft TechNet Security は、Microsoft 製品のセキュリティに関する追加情報を提供します。

免責情報

このアドバイザリで提供される情報は、いかなる種類の保証もなく「現状のまま」提供されます。 Microsoft は、商品性と特定の目的に対する適合性の保証を含め、明示または黙示を問わず、すべての保証を放棄します。 Microsoft Corporation またはそのサプライヤーは、Microsoft Corporation またはそのサプライヤーがこのような損害の可能性について通知された場合でも、直接的、間接的、付随的、派生的、ビジネス上の利益の損失、または特別な損害を含む一切の損害について一切の責任を負いません。 一部の州では、派生的損害または付随的損害に対する責任の除外または制限が認められていないため、前述の制限は適用されない場合があります。

リビジョン

  • V1.0 (2017 年 1 月 10 日): アドバイザリが公開されました。

Page generated 2017-01-04 15:30-08:00.