Microsoft セキュリティ アドバイザリ 3214296
[アーティクル] 2023/08/11
3 人の共同作成者
フィードバック
この記事の内容
ID モデル拡張トークン署名検証の脆弱性により、特権が昇格される
影響を受けるソフトウェア
アドバイザリに関する FAQ
直接依存関係
推移的な依存関係
.NET Framework プロジェクトの依存関係の修正
.NET Core プロジェクトの依存関係の修正
その他の情報
さらに 4 個を表示
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
影響を受けるかどうか操作方法知っていますか?
.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 プロジェクトの依存関係の修正
.NET Core プロジェクトダイレクト依存関係
直接の依存関係を修正するには:
エディターで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 コマンドを実行して、新しい依存関係を復元します。
すべての直接依存関係に対処したら、推移的な依存関係を確認する準備が整います。
推移的な依存関係を表示するには、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.