Fortify は、ソフトウェアコード内のセキュリティ脆弱性を見つけるために使用されるSCAです。このソフトウェアが内部でどのように機能するかについて興味がありました。コードが実行されるルールのセットを構成する必要があることを知っています。しかし、コードの脆弱性をどの程度正確に見つけることができますか。
誰もこれについて考えていますか?
前もって感謝します。
HP Fortify SCAには、データフロー、制御フロー、セマンティック、構造、構成、およびバッファーの6つのアナライザーがあります。各アナライザーは、さまざまなタイプの脆弱性を検出します。
データフローこのアナライザーは、潜在的に危険な使用にさらされた汚染データ(ユーザー制御入力)に関連する潜在的な脆弱性を検出します。データフローアナライザーは、グローバルなプロシージャ間汚染伝播分析を使用して、ソース(ユーザー入力のサイト)とシンク(危険な関数呼び出しまたは操作)の間のデータフローを検出します。たとえば、データフローアナライザーは、無制限の長さのユーザー制御入力文字列が静的サイズのバッファーにコピーされているかどうかを検出し、SQLクエリテキストの構築にユーザー制御文字列が使用されているかどうかを検出します。
制御フローこのアナライザーは、潜在的に危険な一連の操作を検出します。プログラム内の制御フローパスを分析することにより、制御フローアナライザーは、一連の操作が特定の順序で実行されるかどうかを判断します。たとえば、制御フローアナライザーは、チェック時間/使用時間の問題と初期化されていない変数を検出し、XMLリーダーなどのユーティリティが使用前に適切に構成されているかどうかをチェックします。
構造これは、プログラムの構造または定義の潜在的に危険な欠陥を検出します。たとえば、構造アナライザーはJavaサーブレットのメンバー変数への割り当てを検出し、静的finalとして宣言されていないロガーの使用を識別し、常に偽である述語。
Semanticこのアナライザーは、プロシージャ内レベルで関数およびAPIの潜在的に危険な使用を検出します。基本的にはスマートGREPです。
構成このアナライザーは、アプリケーションのデプロイメント構成ファイル内の間違い、弱点、およびポリシー違反を検索します。
Bufferこのアナライザーは、バッファーが保持できる以上のデータの書き込みまたは読み取りを伴うバッファーオーバーフローの脆弱性を検出します。
@LaJmOnには非常に良い答えがありますが、抽象化のレベルがまったく異なる場合、別の方法で質問に答えることができます。
ソースコードは、SCAによる分析用に最適化された中間モデルに変換されます。
コードの種類によっては、複数の翻訳段階が必要です。たとえば、C#ファイルをまずデバッグ.DLLまたは.EXEにコンパイルし、次に.NETバイナリファイルを.NET SDKユーティリティildasm.exeによってMicrosoft Intermediate Language(MSIL)に逆アセンブルする必要があります。一方、JavaファイルまたはASPファイルのような他のファイルは、その言語の適切なFortify SCAトランスレーターによって1回のパスで翻訳されます。
SCAはモデルをメモリにロードし、アナライザーをロードします。各アナライザーはルールをロードし、それらのロールをプログラムモデルの機能に調整された方法で適用します。
一致はFPRファイルに書き込まれ、脆弱性一致情報、セキュリティアドバイス、ソースコード、ソース相互参照およびコードナビゲーション情報、ユーザーフィルタリング仕様、カスタムルール、およびデジタル署名がすべてパッケージに圧縮されます。
また、上記の@Doug Heldコメントへの補遺... Fortify 16.20以降、SCAは.Net C#/ ASP/VBソースコードの直接スキャンをサポートするようになりました。プリコンパイルは不要です。
はい-Fortify SCAは、Objective-CおよびSwiftのスキャンをサポートしています。FortifySCAデータシートの詳細を参照してください。
https://www.hpe.com/h20195/V2/GetPDF.aspx/4AA5-6055ENW.pdf
Fortify on DemandでSaaSを介してFortify SCAを活用し、専門家にスキャンを実行して結果を監査させることもできます。
http://www8.hp.com/us/en/software-solutions/application-security-testing/index.html