VCG(VisualCodeGrepper)
当前版本:2.3.2
====================================================================================
目录:
VCG 是一款自动化代码安全审查工具,支持 C/C++、Java、C#、VB、PL/SQL、PHP 和 COBOL。它具备一些功能,希望能对任何进行代码安全审查的人有所帮助,尤其是在时间紧迫的情况下:
我试图打造一款不会像某些工具那样返回大量误报的工具,并且能够智能地搜索以识别缓冲区溢出和有符号/无符号比较问题。
新功能: 1) GUI 变更意味着目标语言选择通过下拉列表进行,而不是像 V2.3.1 那样通过菜单进行。 2) Beta 功能现在包括对 R 脚本的扫描(与 V2.3.1 相同)。 3) 修复了一些小错误以处理各种问题,并恢复允许多个应用程序实例的功能。
输入文件/代码库:
在扫描代码之前,请确保已选择正确的语言,因为 VCG 只会检测与所选语言相关的问题,并且只扫描相关的文件类型。可以在设置菜单或选项对话框中选择语言。 使用 File=>New Target... 选择包含要扫描代码的目录。 然后 VCG 将加载所有具有指定扩展名的文件。
默认值如下,但可以通过选项对话框进行修改: C/C++: .c .h .cpp .hpp Java: .java .jsp web.xml config.xml (包含 xml 文件是为了检查 Struts 等的输入验证) PL/SQL: .pls .sql .pkb .pks C#: .cs .asp .aspx web.config (包含 web.config 文件是为了检查输入验证、调试设置等) VB: .vb .asp .aspx web.config (包含 web.config 文件是为了检查输入验证、调试设置等) PHP: .php php.ini (包含 php.ini 文件是为了检查 register_globals 等不良配置) COBOL: .cob .cbl .clt .cl2 .cics R: .r
选项与设置:
文件类型 - 使用此项可更改 VCG 针对每种代码类型扫描的文件类型。要扫描目录中的所有文件,请在列表中添加 .*,或删除所有类型并提交空字符串。 配置文件 - 为每种语言指定一个配置文件。该文件包含可能被视为风险并需要报告的任何函数或代码片段的列表。此功能实质上是在代码扫描中执行的更复杂操作之上增加了一层额外的检查。 严重性 - 可将 VCG 设置为仅报告高于特定严重性级别的错误。例如,选择“中”以仅在报告中获得中、高和严重级别。 COBOL 设置 - 应指定初始列 - 即行号之后的第一个列。对于不带行号的列表,这通常为 1;对于包含行号的列表,则为 7。如果列表中的代码/注释行从不同的列开始,则可能需要不同的设置。z/OS 设置可用于包含对 CICS API 安全使用等的检查。 OWASP 设置(仅限 Java)- 如果选中,这些设置将识别 OWASP 安全编码页面上列出的 Java 编程 OWASP 最佳实践的两项违规。将报告嵌套类和非 final 公共类 - 由于这些违规可能大量出现且风险不大,因此提供了关闭其中任一扫描的选项。 输出文件 - 如果选中,ASCII 输出将写入此文件。 Beta 功能 - 通过在“选项”->“Beta 功能”中单击相应的复选框,选择是否使用任何 Beta 功能。目前可用的 Beta 功能包括定位 C 中的有符号/无符号比较(非常不可靠),以及扫描 R(经测试运行相当良好 - 接近纳入下一版本)。
扫描:
扫描可通过三种方式进行:
配置文件:
VCG 扫描的六种语言均存在配置文件。这些文件提供了一层额外的扫描,以补充每种语言的内置复杂扫描。 配置文件的内容由要扫描的函数/代码片段列表以及将在结果中显示的关联描述组成。描述包含方括号中的可选严重性设置,并通过“=>”与函数分隔,格式如下: function name[=>][[N]][description] (其中 N 是严重性评级,从 1(严重)到 3(中)(或可选地,0 表示“正常”))
例如: strcat=>[3]String concatenation function which facilitates buffer overflow conditions. Appears in Microsoft's banned function list.
输出:
扫描完成后将显示可视化代码分解。
结果按定位顺序写入结果窗格。结果具有以下格式: SEVERITY: Code issue Line number - File name Description [code fragment]
为清晰起见,问题标题具有以下颜色代码: 严重 - 品红色 高 - 红色 中 - 橙色 标准/正常 - 黄色/棕褐色 低 - 灰蓝色 潜在问题/最佳实践 - 绿色 表明代码损坏的可疑注释 - 深蓝色
结果也会以简略形式写入摘要表,在其中可以通过点击列标题进行排序。双击结果表中的某一项,会在其关联的应用程序中加载该文件。
可以通过点击 File=>Save Results... 将这些结果保存为 ASCII 文本。 可以通过点击 File=>Export Results as XML... 将结果保存为 XML。 可以通过在 Results 窗口中右键单击并点击 Export Filtered XML Results...,将按严重性筛选后的一组结果保存为 XML。 可以通过点击 File=>Export Results as CSV... 将结果保存为 CSV 文件。
命令行参数:
用法: VisualCodeGrepper [Options]
启动选项: (设置 GUI 的所需起始点。如果使用控制台模式,这些选项将设置要扫描的目标。) -t, --target <Filename|DirectoryName>: 设置目标文件或目录。使用此选项可将目标立即加载到 GUI 中,或为控制台模式提供目标。 -l, --language <CPP|PLSQL|JAVA|CS|VB|PHP|COBOL|R>: 设置目标语言(默认为 C/C++)。 -e, --extensions <ext1|ext2|ext3>: 设置要分析的文件扩展名(有关特定语言的默认值,请参阅 ReadMe 或 Options 屏幕)。 -i, --import : 将 XML/CSV 结果导入 GUI。
输出选项: (自动将结果导出为指定格式的文件。如果希望稍后将结果重新加载到 GUI 中,请使用 XML 或 CSV 输出。) -x, --export : 自动将结果导出为 XML 文件。 -f, --csv-export : 自动将结果导出为 CSV 文件。 -r, --results : 自动将结果导出为纯文本文件。
控制台选项: -c, --console: 仅在控制台中运行应用程序(隐藏 GUI)。 -v, --verbose: 将控制台输出设置为详细模式。 -h, --help: 显示帮助。
====================================================================================