Fortify常见问题解决方法
.Net环境匹配问题
由于Fortify SCA版本对于支持.Net环境的版本有限,比如蕞大支持到Microsoft SDK 7.0A
版本的SDK,如下脚本:
1、echo Searching VS Version....
2、reg QUERY 'HKLM﹨SOFTWARE﹨Microsoft﹨Microsoft SDKs﹨Windows﹨v7.0A' 2>NUL >NUL
3、IF %ERRORLEVEL%==0 (
4、set LAUNCHERSWITCHES=-vsversion 10.0 %LAUNCHERSWITCHES%
5、echo Found .NET 4.0 setting to VS version 10.0
6、GOTO VSSELECTED
通过Windows注册表中的SDK信息设置扫描依赖版本;
而且,由于Windows版本和.Net Framework版本的差异,环境上往往需要自己增加许多配置项,蕞常见的配置如下:
(1)SDK版本设置:
比如是8.1版本的,我们可以修改脚本文件:
reg QUERY 'HKLM﹨SOFTWARE﹨Microsoft﹨Microsoft SDKs﹨Windows﹨v8.1A' 2>NUL >NUL
(2)ildasm路径设置
Unable to locate ildasm是一个常见问题,河北源代码扫描工具fortify,在转换中没有寻找到ildasm程序,可以通过以下方法设置:
1、fortify-sca.properties文件增加一行com.fortify.sca.IldasmPath=C:﹨Program Files (x86)﹨Microsoft SDKs﹨Windows﹨v8.1A﹨bin﹨NETFX 4.5.1 Tools﹨ildasm(一定是双斜杠)
Fortify Summary(摘要):
Summary(摘要)选项卡显示了关于当前所选问题的以下信息:
问题审计面板中的摘要选项卡
下表描述了“Summary(摘要)”面板中的各个选项:
Details(详细信息):
Details(详细信息)选项卡提供了有关所选问题的详细说明,并提供了用于解决该问题的指导方针。每项说明均包括下表中所述的部分或全部栏目。
Recommendat(建议)
“Recommendat(建议)”选项卡包含有关如何避免引发该漏洞或修改该漏洞方法的建议与示例。
History(历史记录)
显示完整的审计操作列表,源代码扫描工具fortify sca,其中包括以下详细信息:日期和时间、执行审计的计算机以及修正该问题的用户名称。
Fortify扫描Qt项目
Fortify对于C++类型的代码扫描需要结合编译指令实现,源代码扫描工具fortify哪里有卖,但Fortify支持的C++指令并不多,源代码扫描工具fortify代理商,所以有些类似使用Qt工具开发的项目就需要做一定调整来适配Foritfy的扫描。使用gcc或者cl级别的命令来实现会很麻烦,因为需要对于Qt的qmake工具运行逻辑有一定深入分析,熟知其生成的Makefile以来的环境和make工具,难度较大,所以更建议以Visual Studio的Fortify插件为入口,先将Qt项目转成Visual Studio项目,再使用插件扫描,这样就会*很多。
我们简单介绍一下流程:
1、在Visual Studio中安装Qt Visual Studio Tools插件和Fortify插件。
2、在Qt插件的Qt Opt选项中配置编译套件,该套件位置可以在Qt对应版本下面,比如Qt﹨Qt5.12.8﹨5.12.8﹨msvc2017。
3、使用Qt插件的Open Qt Project File (.pro)...打开对应的Qt项目,并使用插件的Convert custom build steps to Qt/MSBuild选项,将项目转成vs项目,并生成对应的.vcsproj文件。
测试能成功运行后,就可以使用Fortify进行扫描了。步骤类似与上面的Android项目,即可生成对应的fpr文件。另外,如果想要使用命令来自动化的进行项目扫描,但不知道一个类型的项目如何进行适配,可以解压使用插件生成的fpr文件。查看其中audit.fvdl文件中的mand属性内容,里面包含了该项目生成扫描中间文件的指令参数,可以参考了解如何配置自动化的扫描平台。