最近接到一个活,要对 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 中,可以详细查看扫描到的安全漏洞、漏洞类型、严重程度、受影响的代码行、数据流分析以及修复建议。