最近接到一個活,要對 python 代碼進行代碼掃描,之前只用過 fortify 掃描 Java 類的代碼,搜索了一下支持 python 類代碼掃描,和常規的方式不一樣 記錄一下過程。
一、前期準備#
- Fortify Static Code Analyzer (SCA):Windows 232.2 版本。
- 安裝 VS Code
- 安裝 Fortify VSC 插件:
- 打開 VS Code。
- 進入 Extensions 視圖 (快捷鍵
Ctrl+Shift+X
)。 - 搜索 "Fortify",找到並安裝 "Fortify VSC" 插件。
二、Fortify VSC 插件配置#
在 VS Code 中,打開 Fortify 插件界面(通常在左側活動欄找到 Fortify 圖標)。打開顯示如下。
第一個不用管,直接切換到 Static Code Analyzer executable path 視圖。
2.1 配置 SCA 可執行文件路徑#
- 字段:
Static Code Analyzer executable path
- 說明: 指定
sourceanalyzer.exe
的路徑。 - 設置:
- 推薦: 如果已將 Fortify SCA 的
bin
目錄添加到系統環境變量Path
中,則此處直接輸入sourceanalyzer
即可。
- 推薦: 如果已將 Fortify SCA 的
- **備用:** 如果上述方法不行,點擊右側的 `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 版本和依賴庫路徑。
- 設置:
- 勾選
Add translation options
復選框。 - 在勾選後出現的文本框中,輸入以下參數。請根據 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
:使用最新的漏洞檢測規則。
三、執行掃描#
- 完成上述所有配置後,點擊 Fortify VSC 插件界面底部的
Scan
** 按鈕 **。 - 掃描過程將在後台運行。可以在 VS Code 的
OUTPUT
面板或終端中查看掃描進度和詳細日誌。
五、查看掃描結果#
- 掃描完成後,會在
Scan results location (FPR)
中指定的路徑生成一個.fpr
文件(例如:python_results.fpr
)。 - 打開 Fortify Audit Workbench 客戶端應用程序。
- 點擊 "File" -> "Open Project",然後選擇生成的
.fpr
文件。 - 在 Audit Workbench 中,可以詳細查看掃描到的安全漏洞、漏洞類型、嚴重程度、受影響的代碼行、數據流分析以及修復建議。