セキュリティ制御
セキュリティ制御とは、コード内でデータを安全に使用するためのメソッドです。Contrastで認識される組み込みのセキュリティ制御を通過した情報は信頼できる情報とされます。Contrastは、サードパーティライブラリの多くのメソッドを監視して、データフローが安全かどうかを判断します。
組織によっては、Contrastで認識されない独自のセキュリティ制御の構築が必要な場合があります。その場合は、カスタムメソッドをContrastに認識させるためにセキュリティ制御を作成します。カスタムのセキュリティ制御を追加すると、Contrastはより正確な結果を報告します。
セキュリティ制御の種類
入力バリデーション:バリデーションは、アプリケーションの他の部分にデータが渡される前に、適切に形成され、フォーマットされたデータのみが入力として受け入れられることを確認するためのメソッドです。入力フィールドで特定の文字を受け入れたり拒否したりできるように定義されます。
入力バリデータは、SQLi、XSS、およびその他の入力検証に関連する攻撃を防ぐための主要な方法です。
無害化:入力を検証する代わりに、データベースなどのアプリケーションの他の部分に渡される前に、入力を安全にレンダリングします。例えば、潜在的なインジェクション攻撃で使用される可能性のある一重引用符を取り、それを二重引用符に変更します。
セキュリティ制御を行うタイミング
アプリケーションで使用しているメソッド、クラス、ライブラリをContrastが正確に把握できない場合にセキュリティ制御を作成し、アプリケーションを入力検証の問題(無害化や入力バリデーション)から守ります。
アプリケーションで使用するバリデーションや無害化が分かっている場合は、それらを手動で追加したり、Contrastが自動的に検出した推奨のセキュリティ制御をアプリケーションに適用するセキュリティ制御として追加することができます。
セキュリティ制御を追加して有効にすると、Contrast Assessで、そのセキュリティ制御で緩和するように定義した入力に関する脆弱性が表示されなくなります。セキュリティ制御を適切な脆弱性ルールに適用することが非常に重要です。
セキュリティ制御の影響
セキュリティ制御は、指定されたルールの脆弱性と検出に影響を与えます。入力バリデーションと無害化は、通常、特定の種類のデータ、特定のフィールドやページ、または特定のアプリケーションのために定義・適用されます。すべてのルールに対してセキュリティ制御を有効にすると、検知漏れとなる可能性があります。
セキュリティ制御の使用は、慎重に行って下さい。セキュリティ制御の適用は、特定のルールにのみに必要な場合があります。例えば、バリデーションや無害化によってXSSからアプリケーションを保護できても、SQLインジェクションに対しては効果的ではない可能性があります。すべてのルールにセキュリティ制御を適用すると、SQLiの脆弱性が非表示になり、結果として検知漏れとなる可能性があります。
セキュリティ制御は、さまざまな攻撃からアプリケーションを保護することを保証するためのものであるべきです。
セキュリティ制御の管理ロール
RulesAdmin以上の組織ロールが割り当てられたユーザーのみが、セキュリティ制御を表示または変更できます。
サポートされる言語
セキュリティ制御が適用される言語は、Java、.NET Framework、.NET Coreのみです。
セキュリティ制御の例
安全でない暗号化アルゴリズムの使用について報告されているcom.Acme.OldSecurity
というクラス内にDoLegacySecurity()
というメソッドがあると仮定します。セキュリティ制御を作成し、次のメソッドシグネチャを指定します。
com.Acme.OldSecurity.DoLegacySecurity(java.lang.String*)

この例では、Java.lang.String*
がマークされたパラメータで検査対象となります。
セキュリティ制御の作成時には、末尾のパラメータ定義や余分な文字が含まれないように注意します。
Contrastでは、検出された脆弱性のスタックトレースとこのメソッドシグネチャが照合され、マッチする脆弱性が非表示になります。