banner
毅种循环

毅种循环

请将那贻笑罪过以逐字吟咏 如对冰川投以游丝般倾诉

Fortify SCA (Windows + VS Code プラグイン) が Python コードをスキャンします

最近、Python コードのスキャンを行う仕事が入りました。以前は Fortify を使って Java クラスのコードをスキャンしたことしかありませんでしたが、Python クラスのコードスキャンをサポートする方法を調べました。通常の方法とは異なるため、プロセスを記録しておきます。

一、前期準備#

  1. Fortify Static Code Analyzer (SCA):Windows 232.2 バージョン。
  2. VS Code のインストール
  3. Fortify VSC プラグインのインストール
    • VS Code を開く。
    • 拡張機能ビューに移動 (ショートカットキー Ctrl+Shift+X)。
    • "Fortify" を検索し、"Fortify VSC" プラグインを見つけてインストールします。

image

二、Fortify VSC プラグインの設定#

VS Code で Fortify プラグインのインターフェースを開きます(通常は左側のアクティブバーに Fortify アイコンがあります)。表示は以下のようになります。

最初の部分は無視して、Static Code Analyzer executable path ビューに切り替えます。

image

2.1 SCA 実行ファイルパスの設定#

image

  • フィールド:Static Code Analyzer executable path
  • 説明: sourceanalyzer.exeのパスを指定します。
  • 設定:
    • 推奨: Fortify SCA のbinディレクトリをシステム環境変数Pathに追加している場合、ここにsourceanalyzerと入力するだけで大丈夫です。

image

- **代替:** 上記の方法がうまくいかない場合は、右側の`Browse...`ボタンをクリックし、Fortify SCAのインストールディレクトリに移動して`bin`フォルダを見つけ、`sourceanalyzer.exe`を選択します。
    * **例のパス:** `C:\Program Files\Fortify\Fortify_SCA_and_Apps_<バージョン番号>\bin\sourceanalyzer.exe`

基本的な設定はこれで完了です。残りは vscode でスキャンするディレクトリを開き、Fortify プラグインのボタンをクリックするだけで自動的に入力されます。

2.2 ビルド ID の設定#

  • フィールド:Build ID
  • 説明: 今回のスキャンタスクに一意の識別子を設定します。

2.3 スキャン結果出力パスの設定 (FPR)#

  • フィールド:Scan results location (FPR)
  • 説明: スキャン結果ファイル(.fprファイル)の保存パスとファイル名を指定します。Fortify Audit Workbench はこのファイルを使用します。デフォルトではコードベースのルートディレクトリのフォルダにこのファイルが保存されます。

2.4 ログパスの設定#

  • フィールド:Log location
  • 説明: SCA スキャンのログファイルパス。
  • 設定: 通常はデフォルトのままで大丈夫です。右側のOpenボタンをクリックしてログを確認できます。

2.5 オプションの設定 (Python 特有)#

  • フィールド:Add translation options
  • 説明: Python コードに対して、ここで Python のバージョンと依存ライブラリのパスを指定する必要があります。
  • 設定:
    1. Add translation options チェックボックスをオンにします。
    2. チェック後に表示されるテキストボックスに以下のパラメータを入力します。Python 環境に応じてパスを調整してください。
      • まず、コマンドラインでpython3 -c "import sys; print(sys.path)"を実行して取得した Python モジュール検索パスです。私の環境では以下のようになります:
['', 'D:\\Scoop\\apps\\python311\\current\\python311.zip', 'D:\\Scoop\\apps\\python311\\current\\DLLs', 'D:\\Scoop\\apps\\python311\\current\\Lib', 'D:\\Scoop\\apps\\python311\\current', 'D:\\Scoop\\apps\\python311\\current\\Lib\\site-packages', 'D:\\Scoop\\apps\\python311\\current\\Lib\\site-packages\\win32', 'D:\\Scoop\\apps\\python311\\current\\Lib\\site-packages\\win32\\lib', 'D:\\Scoop\\apps\\python311\\current\\Lib\\site-packages\\Pythonwin']
    * したがって、Fortifyプラグインには以下のように入力する必要があります:
-python-version 3 -python-path "D:\Scoop\apps\python311\current\DLLs;D:\Scoop\apps\python311\current\Lib;D:\Scoop\apps\python311\current\Lib\site-packages"
        + `-python-version 3`:Pythonのバージョンを3に指定します。
        + `-python-path "..."`:Pythonが標準ライブラリとサードパーティライブラリを探すパスを列挙し、セミコロン`;`で区切ります。これらのパスは`sys.path`の出力から来ています。

2.6 その他のオプション (任意)#

  • Add scan options:SCA スキャンフェーズの追加パラメータを追加するためのもので、通常はデフォルトのままで大丈夫です。
  • Update security content:最新の脆弱性検出ルールを使用します。

三、スキャンの実行#

  1. 上記のすべての設定が完了したら、Fortify VSC プラグインインターフェースの下部にあるScanボタンをクリックします。
  2. スキャンプロセスはバックグラウンドで実行されます。VS Code のOUTPUTパネルまたはターミナルでスキャンの進行状況と詳細なログを確認できます。

五、スキャン結果の確認#

  1. スキャンが完了すると、Scan results location (FPR)で指定されたパスに.fprファイル(例:python_results.fpr)が生成されます。
  2. Fortify Audit Workbenchクライアントアプリケーションを開きます。
  3. "File" -> "Open Project" をクリックし、生成された.fprファイルを選択します。
  4. Audit Workbench では、スキャンされたセキュリティ脆弱性、脆弱性の種類、深刻度、影響を受けたコード行、データフロー分析、および修正提案を詳細に確認できます。

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。