セキュリティ規則
セキュリティ規則は、より安全なライブラリとアプリケーションをサポートします。 この規則によって、プログラムにセキュリティ上の欠陥が含まれるのを防ぐことができます。 この規則のいずれかを無効にする場合、明確にコードに理由を記載し、開発プロジェクトの指定されたセキュリティ管理者にも報告します。
このセクションの内容
ルール | 説明 |
---|---|
CA2100:SQL クエリのセキュリティ脆弱性を確認 | メソッドに渡された文字列引数から構築された文字列を使用して System.Data.IDbCommand.CommandText プロパティが設定されています。 この規則では、文字列引数にユーザー入力が含まれていることが想定されています。 ユーザー入力から構築された SQL コマンド文字列には、SQL 注入攻撃に対する脆弱性があります。 |
CA2109:表示するイベント ハンドラーを確認します | パブリックまたはプロテクトのイベント ハンドラー メソッドが検出されました。 イベント ハンドラー メソッドは、絶対に必要な場合を除き公開しないでください。 |
CA2119:プライベート インターフェイスを満たすメソッドをシールします | 継承可能なパブリック型により、internal (Visual Basic では Friend) インターフェイスのオーバーライド可能なメソッド実装が提供されます。 この規則違反を修正するには、アセンブリの外側でメソッドがオーバーライドされないようにします。 |
CA2153: 破損状態例外の処理を回避する | 破損状態例外 (CSE) は、メモリの破損がプロセス内に存在していることを示します。 プロセスをクラッシュさせるのではなくこれらの例外をキャッチすることは、攻撃者が破損したメモリ領域にセキュリティ上の弱点を見出すことができた場合に、セキュリティ上の脆弱性となる可能性があります。 |
CA2300:安全ではないデシリアライザー BinaryFormatter を使用しないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2301:最初に BinaryFormatter.Binder を設定しないで BinaryFormatter.Deserialize を呼び出さないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2302:BinaryFormatter.Deserialize を呼び出す前に BinaryFormatter.Binder が設定されていることを確認します | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2305:安全ではないデシリアライザー LosFormatter を使用しないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2310:安全ではないデシリアライザー NetDataContractSerializer を使用しないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2311:最初に NetDataContractSerializer.Binder を設定しないで逆シリアル化しないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2312:NetDataContractSerializer.Binder を設定してから逆シリアル化してください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2315:安全ではないデシリアライザー ObjectStateFormatter を使用しないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2321:SimpleTypeResolver を使って JavaScriptSerializer で逆シリアル化しないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2322:逆シリアル化する前に JavaScriptSerializer が SimpleTypeResolver によって初期化されていないことを確認してください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2326: None 以外の TypeNameHandling 値は使用しないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2327: 安全でない JsonSerializerSettings を使用しないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2328: JsonSerializerSettings が安全であることを確認してください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2329: セキュリティで保護されていない構成が JsonSerializer で使用されている場合は、逆シリアル化を行わないでください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2330: 逆シリアル化の際に、JsonSerializer の構成は確実にセキュリティで保護してください | 安全でない逆シリアライザーは、信頼されていないデータを逆シリアル化するときに脆弱です。 攻撃者がシリアル化されたデータを変更して予期されない型を追加し、悪意のある副作用を持つオブジェクトを挿入する可能性があります。 |
CA2350:DataTable.ReadXml() の入力が信頼されていることを確認してください | 信頼されていない入力を使用して DataTable を逆シリアル化すると、攻撃者が悪意のある入力を作成してサービス拒否攻撃を仕掛ける可能性があります。 リモート コード実行の不明な脆弱性が存在する可能性があります。 |
CA2351:DataSet.ReadXml() の入力が信頼されていることを確認してください | 信頼されていない入力を使用して DataSet を逆シリアル化すると、攻撃者が悪意のある入力を作成してサービス拒否攻撃を仕掛ける可能性があります。 リモート コード実行の不明な脆弱性が存在する可能性があります。 |
CA2352: シリアル化可能な型の安全でない DataSet または DataTable は、リモート コード実行攻撃に対して脆弱になる可能性があります | SerializableAttribute でマークされたクラスまたは構造体に DataSet または DataTable フィールドまたはプロパティは含まれていますが、GeneratedCodeAttribute はありません。 |
CA2353: シリアル化可能な型の安全でない DataSet または DataTable | XML シリアル化属性またはデータ コントラクト属性でマークされたクラスまたは構造体に、DataSet または DataTable フィールドまたはプロパティが含まれています。 |
CA2354:逆シリアル化されたオブジェクト グラフの安全でない DataSet または DataTable は、リモート コード実行攻撃に対して脆弱になる可能性があります | System.Runtime.Serialization.IFormatter シリアル化で逆シリアル化し、キャストされた型のオブジェクト グラフに DataSet または DataTable を含んでいる可能性があります。 |
CA2355:逆シリアル化されたオブジェクト グラフの安全でない DataSet または DataTable | キャストされたまたは指定された型のオブジェクト グラフに DataSet または DataTable を含んでいる可能性があるときに逆シリアル化しています。 |
CA2356: Web の逆シリアル化されたオブジェクト グラフの安全でない DataSet または DataTable | System.Web.Services.WebMethodAttribute または System.ServiceModel.OperationContractAttribute を持つメソッドに、DataSet または DataTable を参照する可能性があるパラメーターがあります。 |
CA2361: DataSet.ReadXml() を含む自動生成クラスが信頼されていないデータで使用されていないことを確認してください | 信頼されていない入力を使用して DataSet を逆シリアル化すると、攻撃者が悪意のある入力を作成してサービス拒否攻撃を仕掛ける可能性があります。 リモート コード実行の不明な脆弱性が存在する可能性があります。 |
CA2362: シリアル化可能な自動生成型の安全でない DataSet または DataTable は、リモート コード実行攻撃に対して脆弱になる可能性があります | BinaryFormatter で信頼されていない入力を逆シリアル化し、逆シリアル化されたオブジェクト グラフに DataSet または DataTable が含まれている場合、攻撃者が悪意のあるペイロードを作成して、リモート コード実行攻撃を仕掛ける可能性があります。 |
CA3001:SQL インジェクションの脆弱性のコード レビュー | 信頼されていない入力と SQL コマンドを処理するときには、SQL インジェクション攻撃に注意してください。 SQL インジェクション攻撃では、悪意のある SQL コマンドが実行され、アプリケーションのセキュリティと整合性が損なわれる可能性があります。 |
CA3002:XSS の脆弱性のコード レビュー | Web 要求からの信頼されていない入力を処理するときには、クロスサイト スクリプティング (XSS) 攻撃に注意してください。 XSS 攻撃によって信頼されていない入力が未加工の HTML 出力に挿入され、攻撃者が悪意のあるスクリプトを実行するか、Web ページのコンテンツを故意に変更できるようになります。 |
CA3003:ファイル パス インジェクションの脆弱性のコード レビュー | Web 要求からの信頼されていない入力を処理するときには、ユーザー制御の入力の使用に注意してください。 |
CA3004:情報漏えいの脆弱性のコード レビュー | 例外情報を公開すると、攻撃者はアプリケーションの内部に関する分析情報を入手して、悪用できる他の脆弱性を見つけることができます。 |
CA3006:プロセス コマンド インジェクションの脆弱性のコード レビュー | 信頼されていない入力を処理するときには、コマンド インジェクション攻撃に注意してください。 コマンド インジェクション攻撃では、基になるオペレーティング システムに対して悪意のあるコマンドが実行され、サーバーのセキュリティと整合性が損なわれる可能性があります。 |
CA3007:オープン リダイレクトの脆弱性のコード レビュー | 信頼されていない入力を処理するときには、オープン リダイレクトの脆弱性に注意してください。 攻撃者はオープン リダイレクトの脆弱性を悪用し、Web サイトを利用して正規の URL を表し、疑っていない訪問者をフィッシングなどの悪意のある Web ページにリダイレクトできます。 |
CA3008:XPath インジェクションの脆弱性のコード レビュー | 信頼されていない入力を処理するときには、XPath インジェクション攻撃に注意してください。 信頼されていない入力を使用して XPath クエリを作成すると、攻撃者がクエリを操作して意図しない結果を返したり、クエリ対象の XML のコンテンツを開示したりする可能性があります。 |
CA3009:XML インジェクションの脆弱性のコード レビュー | 信頼されていない入力を処理するときには、XML インジェクション攻撃に注意してください。 |
CA3010:XAML インジェクションの脆弱性のコード レビュー | 信頼されていない入力を処理するときには、XAML インジェクション攻撃に注意してください。 XAML は、オブジェクトのインスタンス化と実行を直接表すマークアップ言語です。 つまり、XAML に作成された要素とシステム リソース (ネットワーク アクセス、ファイル システム IO など) の間でやり取りできます。 |
CA3011:DLL インジェクションの脆弱性のコード レビュー | 信頼できない入力を処理するときには、信頼されていないコードの読み込みに注意してください。 Web アプリケーションで信頼されていないコードを読み込むと、攻撃者が悪意のある DLL をプロセスに挿入し、悪意のあるコードを実行できる可能性があります。 |
CA3012:RegEx インジェクションの脆弱性のコード レビュー | 信頼されていない入力を処理するときには、正規表現インジェクション攻撃に注意してください。 攻撃者は、正規表現インジェクションを使用して正規表現を故意に変更したり、正規表現を意図しない結果と一致させたりする可能性があります。また、正規表現によって CPU を過度に消費し、サービス拒否攻撃を行う可能性もあります。 |
CA3061:URL でスキーマを追加しません | 危険な外部参照を引き起こす可能性があるため、Add メソッドの安全でないオーバーロードは使用しないでください。 |
CA3075:安全ではない DTD の処理 | 安全ではない DTDProcessing インスタンスを使用する場合、または外部エンティティ ソースを参照する場合、パーサーは信頼されていない入力を受け入れ、攻撃者に機密情報を漏えいしてしまう可能性があります。 |
CA3076:安全ではない XSLT スクリプトの実行 | .NET アプリケーションで XSLT (Extensible StyleSheet Language Transformation) を安全ではない方法で実行すると、攻撃者に機密情報を漏えいする可能性のある、信頼されていない URI 参照がプロセッサにより解決されるおそれがあります。そのことは、サービス拒否攻撃やクロスサイト攻撃につながります。 |
CA3077:API のデザイン、XML ドキュメント、および XML テキスト リーダーでの安全ではない処理 | XMLDocument と XMLTextReader から派生する API をデザインする場合、DtdProcessing にご注意ください。 外部エンティティ ソースを参照または解決したり、XML に安全ではない値を設定したりする場合に、安全ではない DTDProcessing インスタンスを使用すると、情報漏えいにつながる可能性があります。 |
CA3147:ValidateAntiForgeryToken で動詞ハンドラーをマークします | ASP.NET MVC コントローラーを設計するときには、クロスサイト リクエスト フォージェリ攻撃に注意してください。 クロスサイト リクエスト フォージェリ攻撃では、認証されたユーザーから ASP.NET MVC コントローラーに悪意のある要求が送信される可能性があります。 |
CA5350:脆弱な暗号アルゴリズムを使用しないでください | 現在、さまざまな理由で弱い暗号化アルゴリズムとハッシュ関数が使用されていますが、保護対象のデータの機密性や整合性を保証するためにこれらを使用しないでください。 このルールは、コードで TripleDES、SHA1、または RIPEMD160 アルゴリズムが検出されるとトリガーされます。 |
CA5351: 破られた暗号アルゴリズムを使用しないでください | 破られた暗号アルゴリズムはセキュアであるとは見なされず、それらを使用しないことを強くお勧めします。 このルールは、コードに MD5 ハッシュ アルゴリズムや、DES か RC2 のいずれかの暗号化アルゴリズムが検出されるとトリガーされます。 |
CA5358:安全ではない暗号モードを使用しないでください | 安全ではない暗号モードを使用しないでください |
CA5359: 証明書の検証を無効にしないでください | 証明書を使用すると、サーバーの ID を認証できます。 クライアントでは、サーバー証明書を検証し、要求が意図したとおりのサーバーに送信されるようにする必要があります。 ServerCertificateValidationCallback によって常に true が返されると、すべての証明書が検証に成功します。 |
CA5360: 逆シリアル化で危険なメソッドを呼び出さないでください | 安全でない逆シリアル化は、信頼されていないデータを使用してアプリケーションのロジックが悪用されたり、サービス拒否 (DoS) 攻撃が仕掛けられたり、逆シリアル化されたときに任意のコードが実行されたりするときに発生する脆弱性です。 悪意のあるユーザーが自分の管理下にある信頼されていないデータをアプリケーションで逆シリアル化しているときに、これらの逆シリアル化機能を悪用することがよくあります。 具体的には、逆シリアル化の過程で危険なメソッドを呼び出します。 安全でない逆シリアル化攻撃が成功すると、攻撃者は DoS 攻撃、認証回避、リモートでのコード実行などの攻撃を仕掛ける可能性があります。 |
CA5361: 強力な暗号の SChannel の使用を無効にしません | Switch.System.Net.DontEnableSchUseStrongCrypto を true に設定すると、送信トランスポート層セキュリティ (TLS) 接続で使用される暗号が弱くなります。 暗号が弱くなると、アプリケーションとサーバー間の通信の機密性が損なわれ、攻撃者が機密データを簡単に傍受できるようになります。 |
CA5362: 逆シリアル化されたオブジェクト グラフで可能性のある参照サイクル | 信頼されていないデータを逆シリアル化すると、逆シリアル化されたオブジェクト グラフを処理するすべてのコードで、無限ループに入ることなく参照サイクルを処理する必要があります。 これには、逆シリアル化コールバックの一部であるコードと、逆シリアル化が完了した後にオブジェクト グラフを処理するコードの両方が含まれます。 そうしないと、攻撃者が参照サイクルを含む悪意のあるデータを使用してサービス拒否攻撃を仕掛ける可能性があります。 |
CA5363:要求の検証を無効にしません | 要求の検証は、ASP.NET の機能の 1 つで、HTTP 要求を調べ、その要求にクロスサイトスクリプティングを含むインジェクション攻撃につながる可能性のある危険なコンテンツが含まれていないかどうかを確認します。 |
CA5364: 非推奨のセキュリティ プロトコルを使用しないでください | トランスポート層セキュリティ (TLS) では、コンピューター間の通信を保護し、ハイパーテキスト転送プロトコル セキュア (HTTPS) とよく併用されます。 TLS の古いプロトコル バージョンは TLS 1.2 や TLS 1.3 よりも安全性が低く、新しい脆弱性が見つかる可能性が高くなります。 リスクを最小限に抑えるために、古いプロトコル バージョンを使用しないようにしてください。 |
CA5365: HTTP ヘッダーのチェックを無効にしません | HTTP ヘッダーのチェックでは、応答ヘッダーに含まれる復帰 \r や改行文字 \n のエンコードを有効にします。 このエンコードは、ヘッダーに含まれる信頼されていないデータをエコーするアプリケーションを悪用するインジェクション攻撃を回避するのに役立ちます。 |
CA5366: DataSet Read XML に XmlReader を使用します | DataSet を使用して信頼されていないデータを含んだ XML を読み取ると、危険な外部参照が読み込まれる可能性があります。XmlReader を安全なリゾルバーと共に使用するか、DTD 処理を無効にして使用することにより、この処理を制限する必要があります。 |
CA5367: ポインター フィールドを持つ型をシリアル化しません | この規則では、ポインター フィールドまたはプロパティを持つシリアル化可能なクラスがあるかどうかをチェックします。 静的メンバー、NonSerializedAttribute でマークされたフィールドなど、シリアル化できないメンバーがポインターになる可能性があります。 |
CA5368: ページから派生したクラスに ViewStateUserKey を設定します | ViewStateUserKey プロパティを設定すると、識別子を個別のユーザーの view-state 変数に割り当てて、攻撃者が変数を使用した攻撃を実行できないようにすることで、アプリケーションに対する攻撃を防ぐことができます。 そうしない場合、クロスサイト リクエスト フォージェリに対する脆弱性が生じます。 |
CA5369:逆シリアル化に XmlReader を使用します | 信頼されていない DTD と XML スキーマを処理すると、危険な外部参照を読み込むことができる可能性があります。XmlReader を安全なリゾルバーと共に使用するか、DTD と XML インライン スキーマ処理を無効にして使用することにより、この処理を制限する必要があります。 |
CA5370:読み取りの検証に XmlReader を使用します | 信頼されていない DTD と XML スキーマを処理すると、危険な外部参照を読み込むことができる可能性があります。 この危険な読み込みは、XmlReader を安全なリゾルバーと共に使用するか、DTD と XML インライン スキーマ処理を無効にして使用することにより制限する必要があります。 |
CA5371:スキーマの読み取りに XmlReader を使用します | 信頼されていない DTD と XML スキーマを処理すると、危険な外部参照を読み込むことができる可能性があります。 XmlReader を安全なリゾルバーと共に使用するか、DTD と XML インライン スキーマ処理を無効にして使用することにより、この処理を制限します。 |
CA5372:XPathDocument に XmlReader を使用します | 信頼されていないデータから XML を処理すると、危険な外部参照を読み込む可能性があります。XmlReader を安全なリゾルバーと共に使用するか、DTD 処理を無効にして使用することにより、この処理を制限できます。 |
CA5373:廃止されたキー派生関数を使用しません | この規則では、弱いキー派生メソッド System.Security.Cryptography.PasswordDeriveBytes と Rfc2898DeriveBytes.CryptDeriveKey の呼び出しを検出します。 System.Security.Cryptography.PasswordDeriveBytes で弱いアルゴリズム PBKDF1 が使用されました。 |
CA5374: XslTransform を使用しません | この規則では、System.Xml.Xsl.XslTransform がコードでインスタンス化されるかどうかをチェックします。 System.Xml.Xsl.XslTransform は古いため、使用しないでください。 |
CA5375: アカウントの Shared Access Signature を使用しないでください | アカウントの SAS では、サービス SAS で許可されていない BLOB コンテナー、テーブル、キューおよびファイル共有の読み取り、書き込みおよび削除操作へのアクセスを委任できます。 ただし、コンテナーレベルのポリシーをサポートしておらず、付与されるアクセス許可に対する柔軟性と制御力は高くありません。 悪意のあるユーザーがアカウントの SAS を入手すると、ストレージ アカウントは簡単に侵害されます。 |
CA5376: SharedAccessProtocol HttpsOnly を使用します | SAS は HTTP を介してプレーン テキストで転送できない機密データです。 |
CA5377: コンテナー レベルのアクセス ポリシーを使用します | コンテナーレベルのアクセス ポリシーは、いつでも変更または取り消すことができます。 このため、付与されるアクセス許可をより柔軟に制御できます。 |
CA5378: ServicePointManagerSecurityProtocols を無効にしません | DisableUsingServicePointManagerSecurityProtocols を true に設定すると、Windows Communication Framework (WCF) のトランスポート層セキュリティ (TLS) 接続が TLS 1.0 に制限されます。 このバージョンの TLS は非推奨になる予定です。 |
CA5379: キー派生関数アルゴリズムが十分に強力であることを確認します | Rfc2898DeriveBytes クラスでは、既定で SHA1 アルゴリズムを使用します。 SHA256 またはそれ以上を使用して、コンストラクターの一部のオーバーロードで使用するハッシュ アルゴリズムを指定する必要があります。 ただし、HashAlgorithm プロパティには get アクセサーしかなく、overridden 修飾子はありません。 |
CA5380:ルート ストアに証明書を追加しません | この規則では、証明書を信頼されたルート証明機関の証明書ストアに追加するコードを検出します。 既定では、信頼されたルート証明機関の証明書ストアは、Microsoft ルート証明書プログラムの要件を満たした一連の公的 CA で構成されています。 |
CA5381:証明書がルート ストアに追加されていないことを確認します | この規則では、証明書を信頼されたルート証明機関の証明書ストアに追加する可能性があるコードを検出します。 既定では、信頼されたルート証明機関の証明書ストアは、Microsoft ルート証明書プログラムの要件を満たした一連の公的証明機関 (CA) で構成されています。 |
CA5382: ASP.NET Core で安全な Cookie を使用します | HTTPS 経由で使用できるアプリケーションでは、セキュリティで保護された Cookie を使用する必要があります。つまり、Cookie はトランスポート層セキュリティ (TLS) のみを使用して転送する必要があることをブラウザーに示す必要があります。 |
CA5383: ASP.NET Core で安全な Cookie を確実に使用します | HTTPS 経由で使用できるアプリケーションでは、セキュリティで保護された Cookie を使用する必要があります。つまり、Cookie はトランスポート層セキュリティ (TLS) のみを使用して転送する必要があることをブラウザーに示す必要があります。 |
CA5384: デジタル署名アルゴリズム (DSA) を使用しません | DSA は、弱い非対称暗号化アルゴリズムです。 |
CA5385: 十分なキー サイズの Rivest–Shamir–Adleman (RSA) アルゴリズムを使用します | 2048 ビットよりも小さい RSA キーは、ブルート フォース攻撃に対する脆弱性が高くなります。 |
CA5386: SecurityProtocolType 値のハードコードを避けます | トランスポート層セキュリティ (TLS) では、コンピューター間の通信を保護し、ハイパーテキスト転送プロトコル セキュア (HTTPS) とよく併用されます。 プロトコル バージョン TLS 1.0 と TLS 1.1 は非推奨で、TLS 1.2 と TLS 1.3 が現行のバージョンです。 今後、TLS 1.2 と TLS 1.3 も非推奨になる可能性があります。 アプリケーションをセキュリティで保護し続けるために、プロトコル バージョンをハードコーティングしないようにし、少なくとも .NET Framework v4.7.1 を対象にしてください。 |
CA5387: 反復回数が十分でない弱いキー派生関数は使用しません | この規則では、反復回数が 100,000 回未満の Rfc2898DeriveBytes によって暗号化キーが生成されたかどうかをチェックします。 反復回数が多いほど、生成された暗号化キーを推測しようとする辞書攻撃を緩和するのに役立ちます。 |
CA5388: 弱いキー派生関数を使用する場合は十分な反復回数を確保してください | この規則では、反復回数が 100,000 回未満の可能性がある Rfc2898DeriveBytes によって暗号化キーが生成されたかどうかをチェックします。 反復回数が多いほど、生成された暗号化キーを推測しようとする辞書攻撃を緩和するのに役立ちます。 |
CA5389:アーカイブ項目のパスをターゲット ファイル システム パスに追加しません | ファイル パスは相対パスの場合があり、想定されるファイル システムのターゲット パス以外でファイル システムへのアクセスが可能になる可能性があります。これは、lay-and-wait の技法によって悪意のある構成変更とリモート コードの実行につながります。 |
CA5390: 暗号化キーをハードコーディングしません | 対称アルゴリズムを成功させるには、送信側と受信側だけに秘密キーを伝える必要があります。 キーがハードコーディングされていると、簡単に検出できます。 コンパイルされたバイナリでも、悪意のあるユーザーが簡単に抽出できます。 秘密キーが侵害されると、暗号テキストを直接復号化できるようになるため、保護されていない状態になります。 |
CA5391: ASP.NET Core MVC コントローラーで偽造防止トークンを使用します | 偽造防止トークンを検証せずに POST 、PUT 、PATCH または DELETE 要求を処理すると、クロスサイト リクエスト フォージェリ攻撃に対して脆弱になる可能性があります。 クロスサイト リクエスト フォージェリ攻撃では、認証されたユーザーから ASP.NET Core MVC コントローラーに悪意のある要求が送信される可能性があります。 |
CA5392: P/Invoke に対して DefaultDllImportSearchPaths 属性を使用します | 既定では、DllImportAttribute を使用している P/Invoke 関数では、ライブラリが読み込むための現在の作業ディレクトリを含むいくつかのディレクトリを精査します。 これは特定のアプリケーションでセキュリティ上の問題を引き起こし、DLL のハイジャックにつながる可能性があります。 |
CA5393: 安全でない DllImportSearchPath 値を使用しないでください | 既定の DLL 検索ディレクトリとアセンブリ ディレクトリに悪意のある DLL が存在する可能性があります。 または、アプリケーションが実行されている場所に応じて、アプリケーションのディレクトリに悪意のある DLL が存在する可能性があります。 |
CA5394: 安全でないランダム度を使用しません | 暗号強度の低い擬似乱数ジェネレーターを使用すると、セキュリティ上注意が必要などのような値が生成されるかを攻撃者が予測できる可能性があります。 |
CA5395: アクション メソッドの HttpVerb 属性がありません | データの作成、編集、削除、またはそれ以外の変更を行うすべてのアクション メソッドは、偽造防止属性を使用してクロスサイト リクエスト フォージェリ攻撃から保護する必要があります。 GET 操作の実行は、副作用がなく、永続化されたデータを変更しない、安全な操作である必要があります。 |
CA5396: HttpCookie で HttpOnly を true に設定します | 高度な防御手段として、セキュリティ上注意が必要な HTTP Cookie が、必ず HttpOnly としてマークされるようにしてください。 これは、スクリプトから Cookie へのアクセスを Web ブラウザーで許可してはならないことを示しています。 挿入された悪意のあるスクリプトは、Cookie を盗むための一般的な方法です。 |
CA5397:非推奨の SslProtocols 値を使用しません | トランスポート層セキュリティ (TLS) では、コンピューター間の通信を保護し、ハイパーテキスト転送プロトコル セキュア (HTTPS) とよく併用されます。 TLS の古いプロトコル バージョンは TLS 1.2 や TLS 1.3 よりも安全性が低く、新しい脆弱性が見つかる可能性が高くなります。 リスクを最小限に抑えるために、古いプロトコル バージョンを使用しないようにしてください。 |
CA5398:ハードコーディングされた SslProtocols 値を回避します | トランスポート層セキュリティ (TLS) では、コンピューター間の通信を保護し、ハイパーテキスト転送プロトコル セキュア (HTTPS) とよく併用されます。 プロトコル バージョン TLS 1.0 と TLS 1.1 は非推奨で、TLS 1.2 と TLS 1.3 が現行のバージョンです。 今後、TLS 1.2 と TLS 1.3 も非推奨になる可能性があります。 アプリケーションをセキュリティで保護し続けるために、プロトコル バージョンをハードコーティングしないようにしてください。 |
CA5399: HttpClient 証明書失効リストの確認を確実に無効にします | 失効した証明書は信頼されていません。 攻撃者が HTTPS 通信で悪意のあるデータを渡すか、機密データを盗むために使用する可能性があります。 |
CA5400: HttpClient 証明書失効リストの確認を決して無効にしないでください | 失効した証明書は信頼されていません。 攻撃者が HTTPS 通信で悪意のあるデータを渡すか、機密データを盗むために使用する可能性があります。 |
CA5401: 既定以外の IV で CreateEncryptor を使用しません | 対称暗号化では、辞書攻撃を防ぐために、反復不能な初期化ベクトルを常に使用する必要があります。 |
CA5402: 既定の IV で CreateEncryptor を使用します | 対称暗号化では、辞書攻撃を防ぐために、反復不能な初期化ベクトルを常に使用する必要があります。 |
CA5403:証明書をハードコーディングしない | X509Certificate または X509Certificate2 コンストラクターの data または rawData パラメーターがハードコーディングされています。 |
CA5404: トークンの検証チェックを無効にしないでください | トークンの検証を制御する TokenValidationParameters プロパティを false に設定してはいけません。 |
CA5405: デリゲートでトークンの検証を常にスキップしないでください | AudienceValidator または LifetimeValidator に割り当てられているコールバックからは、常に true が返されます。 |
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET