セキュリティ規則
セキュリティ規則は、より安全なライブラリとアプリケーションをサポートします。 これらの規則は、プログラムのセキュリティ上の欠陥を防ぐのに役立ちます。 これらの規則のいずれかを無効にした場合は、コードで理由を明確にマークし、開発プロジェクトの指定されたセキュリティ責任者にも通知する必要があります。
このセクションの内容
ルール | 説明 |
---|---|
CA2100: セキュリティの脆弱性に関する SQL クエリを確認 | メソッドは、文字列引数からメソッドに構築された文字列を使用して、System.Data.IDbCommand.CommandText プロパティを設定します。 この規則では、文字列引数にユーザー入力が含まれていることを前提としています。 ユーザー入力から構築された SQL コマンド文字列は、SQL インジェクション攻撃に対して脆弱です。 |
CA2109: 表示されるイベント ハンドラーの を確認する | パブリックまたは保護されたイベント処理メソッドが検出されました。 イベント処理メソッドは、絶対に必要でない限り公開しないでください。 |
CA2119: プライベート インターフェイスを満たすシール方法 | 継承可能なパブリック型は、内部 (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 が設定されていることを確認します | 信頼されていないデータを逆シリアル化する場合、セキュリティで保護されていないデシリアライザーは脆弱です。 攻撃者は、悪意のある副作用を持つオブジェクトを挿入するために、シリアル化されたデータを変更して予期しない型を含める可能性があります。 |
安全ではないデシリアライザー ObjectStateFormatter を使用しないでください | 信頼されていないデータを逆シリアル化する場合、セキュリティで保護されていないデシリアライザーは脆弱です。 攻撃者は、悪意のある副作用を持つオブジェクトを挿入するために、シリアル化されたデータを変更して予期しない型を含める可能性があります。 |
CA2321: JavaScriptSerializer を使用して SimpleTypeResolver で逆シリアル化しないでください | 信頼されていないデータを逆シリアル化する場合、セキュリティで保護されていないデシリアライザーは脆弱です。 攻撃者は、悪意のある副作用を持つオブジェクトを挿入するために、シリアル化されたデータを変更して予期しない型を含める可能性があります。 |
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: 正規表現インジェクションの脆弱性のコードを確認 | 信頼されていない入力を使用する場合は、正規表現インジェクション攻撃に注意してください。 攻撃者は正規表現インジェクションを使用して正規表現を悪意を持って変更したり、正規表現を意図しない結果に一致させたり、正規表現が過剰な CPU を消費してサービス拒否攻撃を受けたりする可能性があります。 |
CA3061: URL でスキーマを追加しない | 危険な外部参照を引き起こす可能性があるため、Add メソッドの安全でないオーバーロードを使用しないでください。 |
CA3075: 安全でない DTD 処理 | 安全でない DTDProcessing インスタンスを使用したり、外部エンティティ ソースを参照したりする場合、パーサーは信頼されていない入力を受け入れ、機密情報を攻撃者に開示する可能性があります。 |
CA3076: 安全でない XSLT スクリプト実行 | .NET アプリケーションで Extensible StyleSheet Language Transformations (XSLT) を安全に実行すると、信頼されていない 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 の機能であり、HTTP 要求を調べて、クロスサイト スクリプティングなど、インジェクション攻撃につながる可能性のある危険なコンテンツが含まれているかどうかを判断します。 |
CA5364: 非推奨のセキュリティ プロトコルを使用しないでください | トランスポート層セキュリティ (TLS) は、コンピューター間の通信をセキュリティで保護します。最も一般的には、ハイパーテキスト転送プロトコル セキュア (HTTPS) を使用します。 TLS の古いプロトコル バージョンは、TLS 1.2 および TLS 1.3 よりも安全性が低く、新しい脆弱性が発生する可能性が高くなります。 リスクを最小限に抑えるために、古いプロトコル バージョンを避けてください。 |
CA5365: HTTP ヘッダー チェック を無効にしない | HTTP ヘッダー チェックを使用すると、応答ヘッダーに含まれるキャリッジリターンと改行文字 (\r と \n) をエンコードすることが可能になります。 このエンコードは、ヘッダーに含まれる信頼されていないデータをエコーするアプリケーションを悪用するインジェクション攻撃を回避するのに役立ちます。 |
CA5366: XmlReader を使用して DataSet の XML を読み取る | 信頼されていないデータを含む XML を読み取るために DataSet を使用すると、危険な外部参照が読み込まれる可能性があります。これは、セキュリティで保護されたリゾルバーまたは DTD 処理を無効にした XmlReader を使用して制限する必要があります。 |
CA5367: ポインター フィールドを使用して型をシリアル化しない | この規則では、ポインター フィールドまたはプロパティを持つシリアル化可能なクラスがあるかどうかを確認します。 シリアル化できないメンバーには、静的メンバーや、NonSerializedAttributeでマークされたフィールドなどのポインターを指定できます。 |
CA5368: ページ から派生したクラスの ViewStateUserKey を設定する | ViewStateUserKey プロパティを設定すると、個々のユーザーのビューステート変数に識別子を割り当てて、攻撃者が変数を使用して攻撃を生成できないようにすることで、アプリケーションに対する攻撃を防ぐことができます。 そうしないと、クロスサイトリクエストフォージェリの脆弱性が発生します。 |
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 を処理すると、危険な外部参照が読み込まれる可能性があります。これは、セキュリティで保護されたリゾルバーまたは DTD 処理が無効になっている XmlReader を使用して制限できます。 |
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 コンテナー、テーブル、キュー、およびファイル共有に対する読み取り、書き込み、削除操作へのアクセスを委任できます。 ただし、コンテナー レベルのポリシーはサポートされておらず、付与されるアクセス許可の柔軟性と制御は低くなります。 悪意のあるユーザーが取得すると、ストレージ アカウントが簡単に侵害されます。 |
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: ターゲット ファイル システム パスにアーカイブ 項目のパスを追加しないでください | ファイル パスは相対パスにすることができ、予想されるファイル システム ターゲット パスの外部でファイル システムにアクセスする可能性があり、その結果、レイ アンド 待機手法を使用した悪意のある構成の変更やリモート コード実行が発生する可能性があります。 |
CA5390: 暗号化キーの をハードコーディングしない | 対称アルゴリズムを正常に実行するには、秘密キーが送信者と受信者にのみ認識されている必要があります。 キーがハードコーディングされると、簡単に検出されます。 コンパイル済みのバイナリでも、悪意のあるユーザーが簡単に抽出できます。 秘密キーが侵害されると、暗号テキストを直接復号化でき、保護されなくなります。 |
CA5391: ASP.NET Core MVC コントローラーで偽造防止トークンを使用 | 偽造防止トークンを検証せずに POST 、PUT 、PATCH 、または DELETE 要求を処理すると、クロスサイト リクエスト フォージェリ攻撃に対して脆弱になる可能性があります。 クロスサイト リクエスト フォージェリ攻撃では、認証されたユーザーから悪意のある要求を ASP.NET Core MVC コントローラーに送信する可能性があります。 |
CA5392: P/Invokes に DefaultDllImportSearchPaths 属性を使用する | 既定では、DllImportAttribute を使用して P/Invoke 関数は、ライブラリが読み込む現在の作業ディレクトリなど、多数のディレクトリをプローブします。 これは、特定のアプリケーションのセキュリティの問題となり、DLL ハイジャックにつながる可能性があります。 |
CA5393: 安全でない DllImportSearchPath 値を使用しないでください | 既定の DLL 検索ディレクトリとアセンブリ ディレクトリに悪意のある DLL が存在する可能性があります。 または、アプリケーションの実行場所によっては、アプリケーションのディレクトリに悪意のある DLL が存在する可能性があります。 |
CA5394: 安全でないランダム性 を使用しない | 暗号に弱い擬似乱数ジェネレーターを使用すると、攻撃者は、生成されるセキュリティに依存する値を予測できる可能性があります。 |
CA5395: アクション メソッドに対する HttpVerb 属性の欠落 | データを作成、編集、削除、または変更するすべてのアクション メソッドは、クロスサイト リクエスト フォージェリ攻撃から偽造防止属性で保護する必要があります。 GET 操作の実行は、副作用がなく、永続化されたデータを変更しない安全な操作である必要があります。 |
CA5396: HttpCookie に対して HttpOnly を true に設定する | 多層防御として、セキュリティの機密性の高い HTTP Cookie が HttpOnly としてマークされていることを確認します。 これは、Web ブラウザーがスクリプトによる Cookie へのアクセスを禁止する必要があることを示します。 挿入された悪意のあるスクリプトは、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