Skip to main content

セキュリティ制御

セキュリティ制御とは、コード内でデータを安全に使用するためのメソッドです。Contrastで認識される組み込みのセキュリティ制御を通過した情報は信頼できる情報とされます。Contrastは、サードパーティライブラリの多くのメソッドを監視して、データフローが安全かどうかを判断します。

組織によっては、Contrastで認識されない独自のセキュリティ制御の構築が必要な場合があります。その場合は、カスタムメソッドをContrastに認識させるためにセキュリティ制御を作成します。カスタムのセキュリティ制御を追加すると、Contrastはより正確な結果を報告します。

セキュリティ制御の種類

  • 入力バリデーション:バリデーションは、適切な形式とフォーマットのデータのみを入力として受け入れることを保証するメソッドであり、アプリケーションの他の部分にデータが渡される前に適用されます。入力フィールドが、特定の文字を受け入れるか拒否するかを制御するように設計されています。

    入力バリデーションは、SQLインジェクション、クロスサイトスクリプティング、その他の入力検証に関連する攻撃を防ぐための主要な方法です。

  • 正規表現バリデーション:正規表現バリデーションは、入力文字列に含まれる特定の正規表現パターンを検証し、安全かどうかを判断します。文字列がセキュリティ制御で指定された正規表現に一致する場合、Contrastは関連する脆弱性を報告しません。正規表現バリデーションは、アプリケーションごとに適用されます。

  • 無害化:入力を検証する代わりに、データベースなどのアプリケーションの他の部分に渡される前に、入力を安全にレンダリングします。例えば、潜在的なインジェクション攻撃で使用される可能性のある一重引用符を取り、それを二重引用符に変更します。

セキュリティ制御を行うタイミング

アプリケーションで使用しているメソッド、クラス、ライブラリをContrastが正確に把握できない場合にセキュリティ制御を作成し、アプリケーションを入力検証の問題(無害化、入力バリデーション、正規表現バリデーション)から守ります。

アプリケーションで使用するバリデーションや無害化が分かっている場合は、それらを手動で追加したり、Contrastが自動的に検出した推奨のセキュリティ制御をアプリケーションに適用するセキュリティ制御として追加することができます。

セキュリティ制御を追加して有効にすると、Contrast Assessで、そのセキュリティ制御で緩和するように定義した入力に関する脆弱性が表示されなくなります。セキュリティ制御を適切な脆弱性ルールに適用することが非常に重要です。

セキュリティ制御の影響

セキュリティ制御は、指定されたルールの脆弱性と検出に影響を与えます。入力バリデーションと無害化は、通常、特定の種類のデータ、特定のフィールドやページ、または特定のアプリケーションのために定義・適用されます。すべてのルールに対してセキュリティ制御を有効にすると、検知漏れとなる可能性があります。

セキュリティ制御の使用は、慎重に行って下さい。セキュリティ制御の適用は、特定のルールにのみに必要な場合があります。例えば、バリデーションや無害化によってXSSからアプリケーションを保護できても、SQLインジェクションに対しては効果的ではない可能性があります。すべてのルールにセキュリティ制御を適用すると、SQLiの脆弱性が非表示になり、結果として検知漏れとなる可能性があります。

セキュリティ制御は、さまざまな攻撃からアプリケーションを保護することを保証するためのものであるべきです。

セキュリティ制御の管理ロール

RulesAdmin以上の組織ロールが割り当てられたユーザーのみが、セキュリティ制御を表示または変更できます。

サポートされる言語

入力バリデーションと無害化のセキュリティ制御は、Java、.NET Framework、.NET Core言語にのみ適用されます。

正規表現バリデーションのセキュリティ制御は、Java言語にのみ適用されます。

セキュリティ制御の例

安全でない暗号化アルゴリズムの使用について報告されているcom.Acme.OldSecurityというクラス内にDoLegacySecurity()というメソッドがあると仮定します。セキュリティ制御を作成し、次のメソッドシグネチャを指定します。

com.Acme.OldSecurity.DoLegacySecurity(java.lang.String*)
Image shows the Add Security Control window with the API entry highlighted

この例では、Java.lang.String*がマークされたパラメータで検査対象となります。

セキュリティ制御の作成時には、末尾のパラメータ定義や余分な文字が含まれないように注意します。

Contrastでは、検出された脆弱性のスタックトレースとこのメソッドシグネチャが照合され、マッチする脆弱性が非表示になります。