Fortify 静态代码分析器 (SCA) 是一种能够深入检测源代码并精准定位安全风险根源的工具。
Fortify 扫描功能会优先处理最关键的安全问题,并为开发人员提供修复漏洞的明确指导。
Fortify 静态代码分析器详解
Fortify 静态代码分析器配备了多种漏洞分析模块,例如缓冲区分析、内容分析、控制流分析、数据流分析、语义分析、配置分析和结构分析。 每个分析器都采用不同类型的规则集,这些规则经过定制,以提供执行相应分析类型所需的信息。
Fortify 静态代码分析器包含以下关键组件:
- 强化扫描向导:此工具允许用户在分析前后执行自定义脚本。
- 审计工作台:这是一个基于图形用户界面的应用程序,用于组织和管理分析结果。
- 自定义规则编辑器:该工具允许开发人员创建和编辑自定义规则,用于代码分析。
- IntelliJ 和 Android Studio 插件:这些插件直接在集成开发环境 (IDE) 中显示分析结果。
- Eclipse 插件:该工具与 Eclipse IDE 集成,并在 IDE 中展示分析结果。
- Bamboo 插件:此插件从 Bamboo 作业中收集运行分析后的结果。
- Jenkins 插件:此插件从 Jenkins 作业中收集分析结果。
Fortify SCA 的特性
#1. 多语言支持
Fortify SCA 支持多种编程语言,包括 ABAP/BSP、ActionScript、ASP(含 VBScript)、COBOL、ColdFusion、Apex、ASP.NET、C# (.NET)、C/C++、Classic VB.NET、VBScript、CFML、Go、HTML、Java(包括 Android)、JavaScript/AJAX、JSP、Kotlin、Visual Basic、MXML (Flex)、Objective C/C++、PHP、PL/SQL、Python、Ruby、Swift、T-SQL 和 XML。
#2. 灵活的部署选项
- Fortify On-Prem:允许组织完全掌控 Fortify SCA 的所有方面。
- Fortify On Demand:使开发人员能够在软件即服务 (SaaS) 环境中工作。
- Fortify Hosted:允许开发人员通过隔离的虚拟环境享受两种部署模式(按需和本地)的优点,同时拥有完全的数据控制权。
#3. 与 CI/CD 工具无缝集成
- 开发人员可以轻松地将 Fortify SCA 与主流 IDE(如 Visual Studio 和 Eclipse)集成。
- 该工具与 Sonatype、WhiteSource、Snyk 和 BlackDuck 等开源工具集成,使开发人员能够控制各种操作。
- Fortify SCA 还可以与远程代码仓库(例如 Bitbucket 和 GitHub)集成。该工具可以检查推送到这些平台的代码是否存在漏洞,并生成相应的报告。
#4. 实时警报
Fortify SCA 在您编码的同时提供实时更新,无需等到编码完成后再进行测试。该工具具有专门为提高速度和效率而构建的配置和结构分析器,从而帮助您构建安全的应用程序。
#5. 机器学习驱动的审计助手
借助使用机器学习算法的审计助手,可以快速执行系统审计。该助手能够识别所有漏洞,并根据置信度对其进行优先级排序。该工具生成的报告可帮助组织节省审计成本。
#6. 高灵活性
用户可以根据需要选择扫描类型。例如,如果您需要准确而详细的扫描,可以选择全面扫描选项。如果开发人员只想检测主要威胁,还可以选择快速扫描选项。
Fortify SCA 的作用是什么?
Fortify SCA 在典型的开发生态系统中扮演着多种关键角色。以下是其中一些角色:
静态测试有助于构建更优质的代码
静态应用程序安全测试 (SAST) 有助于在早期开发阶段识别安全漏洞。 幸运的是,大多数此类安全漏洞的修复成本并不高。
这种方法可以降低应用程序的安全风险,因为测试可以针对开发过程中引入的代码问题提供即时反馈。
开发人员也可以通过静态应用程序安全测试了解安全性,从而能够构建更加安全的软件。
Fortify SCA 使用广泛的安全编码规则知识库和多种算法来分析软件应用程序的源代码,以查找安全漏洞。 该方法分析数据和代码中的所有可行路径,以识别漏洞并提供修复建议。
及早发现安全问题
Fortify SCA 的工作方式类似于编译器。 在 Fortify 扫描之后,此工具读取源代码文件,并将其转换为增强的中间结构以进行安全分析。
在中间格式中,所有的安全漏洞都更容易定位。 该工具包含一个由多个专用分析器组成的分析引擎,这些分析器将使用安全编码规则来分析代码是否违反了任何安全编码实践规则。
如果您想扩展静态分析功能并包含自定义规则,Fortify SCA 还提供规则生成器。 在这种设置中,可以根据任务和受众以不同的格式查看结果。
Fortify 软件安全中心 (SSC) 帮助管理结果
Fortify 软件安全中心 (SSC) 是一个集中式管理存储库,可提供对组织的整个应用程序安全程序的可见性。 通过 SSC,用户可以在发现安全威胁时审核、审查、确定优先级和管理补救措施。
Fortify SSC 提供了组织中应用程序安全状况的准确范围和图景。 SSC 驻留在中央服务器中,但会接收来自实时、动态和静态分析等不同应用程序安全测试活动的结果。
Fortify SCA 可以进行哪些类型的代码分析?
在进行代码分析时,强化扫描借鉴了有害王国的体系结构。 这些是 Fortify SCA 执行的分析类型:
- 输入验证和表示:与输入验证和表示相关的问题源自替代编码、数字表示和元字符。 此类问题的示例是“缓冲区溢出”、“跨站点脚本”攻击和“SQL 注入”,这些问题在用户信任输入时出现。
- API 滥用:调用方未能遵守合约是最常见的 API 滥用类型。
- 安全功能:此测试区分软件的安全性和安全软件。 分析将侧重于身份验证、特权管理、访问控制、机密性和密码学问题。
- 时间和状态:计算机可以在不同任务之间快速切换。 时间和状态分析会搜索由线程、信息、进程和时间之间意外交互引起的缺陷。
- 错误:Fortify SCA 会检查错误是否向潜在攻击者提供了过多的信息。
- 代码质量:代码质量差通常会导致不可预测的行为。但是,如果攻击者遇到编写不当的代码,他们就有机会操纵应用程序以谋取利益。
- 封装:这是划分界限的过程。 这种分析可能意味着区分经过验证和未经验证的数据。
下载并安装 Fortify SCA
在开始安装过程之前,您必须:
- 从官方文档中查看系统要求。
- 获取 Fortify 许可证文件。 从 Microfocus 下载页面选择您的软件包。 搜索 Fortify Static Code Analyzer,创建您的帐户并获取 Fortify 许可证文件。
- 确保您已安装 Visual Studio Code 或其他受支持的代码编辑器。
如何在 Windows 上安装
Fortify_SCA_and_Apps_<version>_windows_x64.exe
注意:<version> 代表软件发布版本
- 接受许可协议后单击下一步。
- 选择安装 Fortify 静态代码分析器的位置,然后单击下一步。
- 选择要安装的组件,然后单击“下一步”。
- 如果要安装 Visual Studio 2015 或 2017 的扩展,请指定用户。
- 指定 fortify.license 文件的路径后单击下一步。
- 指定更新安全内容所需的设置。 您可以通过将 URL 指定为 https://update.fortify.com 来使用 Fortify Rulepack 更新服务器。 单击下一步。
- 指定是否要安装示例源代码。 单击下一步。
- 单击下一步安装 Fortify SCA 和应用程序。
- 安装完成后,单击“更新安全内容”,然后单击“完成”。
如何在 Linux 上安装
您可以按照相同的步骤在基于 Linux 的系统上安装 Fortify SCA。 但是,在第一步中,请将其作为安装程序文件运行:
Fortify_SCA_and_Apps__linux_x64.run
您也可以使用命令行提示符安装 Fortify SCA。
打开您的终端并运行此命令:
./Fortify_SCA_and_Apps__linux_x64.run --mode text
按照命令行上的指示执行所有提示,直至完成安装过程。
如何运行强化扫描
安装完成后,您便可以设置安全分析工具了。
- 转到安装目录并使用命令提示符导航到 bin 文件夹。
- 输入 scapostinstall。 然后您可以键入 s 以显示设置。
- 使用这些命令设置区域设置:
键入 2 以选择设置。
键入 1 以选择常规。
键入 1 以选择区域设置。
对于语言,键入 English: en 以将语言设置为英语。
- 配置安全内容更新。 键入 2 以选择设置,然后再次键入 2 以选择 Fortify 更新。 您现在可以通过将 URL 指定为 https://update.fortify.com 来使用 Fortify Rulepack 更新服务器。
- 键入 sourceanalyzer 以检查该工具是否已完全安装。
Fortify SCA 现在将在后台运行并检查所有代码是否存在安全漏洞。
总结
在当今互联网时代,系统被黑客入侵和数据泄露的案例层出不穷。 幸运的是,我们现在有了 Fortify 静态代码分析器等工具,可以在编写代码时检测安全威胁、发送警报并提供处理此类威胁的建议。 Fortify SCA 与其他工具一起使用时,可以提高生产力并降低运营成本。
您还可以探索软件组合分析 (SCA) 来提高应用程序的安全性。