Fortifyは、ソフトウェアコードのセキュリティの脆弱性を見つけるために使用されるSCAです。このソフトウェアが内部でどのように機能するのか興味がありました。コードを実行するための一連のルールを構成する必要があることを私は知っています。しかし、コードの脆弱性をどれだけ正確に見つけることができるか。
誰かがこれについて何か考えを持っていますか?
前もって感謝します。
HP Fortify SCA には、データ フロー、制御フロー、セマンティック、構造、構成、およびバッファーの 6 つのアナライザーがあります。各アナライザーはさまざまなタイプの脆弱性を検出します。
データ フロー このアナライザーは、汚染されたデータ (ユーザー制御の入力) が潜在的に危険な用途に使用される可能性がある潜在的な脆弱性を検出します。データ フロー アナライザーは、グローバルな手続き間の汚染伝播分析を使用して、ソース (ユーザー入力のサイト) とシンク (危険な関数呼び出しまたは操作) の間のデータ フローを検出します。たとえば、データ フロー アナライザーは、無制限の長さのユーザー制御の入力文字列が静的サイズのバッファーにコピーされているかどうかを検出し、ユーザー制御の文字列が SQL クエリ テキストの作成に使用されているかどうかを検出します。
制御フロー このアナライザーは、潜在的に危険な一連の操作を検出します。制御フロー アナライザーは、プログラム内の制御フロー パスを分析することにより、一連の操作が特定の順序で実行されているかどうかを判断します。たとえば、制御フロー アナライザーは、チェック時間/使用時間の問題と初期化されていない変数を検出し、XML リーダーなどのユーティリティが使用前に適切に構成されているかどうかをチェックします。
構造 これは、プログラムの構造または定義における潜在的に危険な欠陥を検出します。たとえば、構造アナライザーは、Java サーブレットのメンバー変数への割り当てを検出し、静的最終宣言されていないロガーの使用を識別し、述語が常に false であるために決して実行されないデッド コードのインスタンスにフラグを立てます。
セマンティック このアナライザーは、関数および API の潜在的に危険な使用を手続き内レベルで検出します。基本的には賢いGREPです。
構成 このアナライザーは、アプリケーションの展開構成ファイルの誤り、弱点、およびポリシー違反を検索します。
バッファー このアナライザーは、バッファーが保持できる以上のデータの書き込みまたは読み取りに関連するバッファー オーバーフローの脆弱性を検出します。
@LaJmOnには非常に良い答えがありますが、まったく異なるレベルの抽象化で、別の方法で質問に答えることができます:
ソース コードは、SCA による分析用に最適化された中間モデルに変換されます。
一部のタイプのコードでは、複数の段階の変換が必要です。たとえば、C# ファイルは、最初にデバッグ .DLL または .EXE にコンパイルする必要があり、次に、.NET SDK ユーティリティ ildasm.exe によって、その .NET バイナリ ファイルを Microsoft Intermediate Language (MSIL) に逆アセンブルする必要があります。一方、Java ファイルや ASP ファイルなどの他のファイルは、その言語に適した Fortify SCA トランスレーターによって 1 回のパスで翻訳されます。
SCA はモデルをメモリにロードし、アナライザーをロードします。各アナライザーはルールをロードし、それらのロールをプログラム モデル内の関数に調整された方法で適用します。
一致は FPR ファイルに書き込まれ、脆弱性一致情報、セキュリティ アドバイス、ソース コード、ソース相互参照とコード ナビゲーション情報、ユーザー フィルタリング仕様、カスタム ルール、およびデジタル署名がすべてパッケージに圧縮されます。
はい - Fortify SCA は、iOS 用の Objective-C と Swift のスキャン、およびその他の約 20 の言語と多数のフレームワークをサポートしています。詳細については、Fortify SCA データシートを参照してください。
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