源代码检测 Fortify SCA 进阶——自定义规则

首页    行业资讯    源代码检测 Fortify SCA 进阶——自定义规则

Fortify SCA 是目前市场上流行的一款静态代码扫描分析工具,能够精准地发现代码中的潜在漏洞和缺陷,拥有高占比的市场份额和较好的用户口碑。Fortify SCA 的工作原理是在编译代码后再利用其强大的内置规则库来深入探测和识别潜在的安全漏洞。所以,可以认为 Fortify 规则库是 Fortify SCA 工具的核心

通常,Fortify SCA 使用其默认安全编码规则包检查源代码的安全性,这些规则深入分析了受支持语言的核心 API 包以及扩展功能。对于发现的问题,Fortify SCA 还会提供详尽的描述以及推荐的解决方案,使用户能够快速理解和应对。

在实际项目检测中,用户还可以根据特定需求自定义规则,进一步增强 Fortify SCA 的漏洞识别能力,满足准确分析特定应用程序、提高静态代码检查的完整性和准确性等个性化的需求。

编写有效的自定义规则需要专业的开发人员进行操作。不仅需要深入了解已知的安全漏洞类别,还要熟悉与这些漏洞相关的函数类型。此外,识别并熟悉与安全相关的函数特性也至关重要,正确理解函数的行为和漏洞类别之间的关系,才能够编写出既准确又高效的自定义规则。

 

 

规则元素介绍

 

RulePack

在 Fortify 规则库中,<RulePack> 元素用于定义一组规则或规则集合。其结构如下:

  • <RulePack> 是规则库的根元素,包含了所有的规则定义和相关信息;

  • <RulePackID> 包含了规则库的唯一标识符,通常是一个 GUID(全局唯一标识符);

  • <Name> 记录规则库的名称;

  • <Version> 记录规则库的版本号;

  • <Language> 记录规则库适用的编程语言,可以指定一种或多种语言或技术;

  • <Description> 提供对规则库的简要描述,以便用户了解规则集合的内容和目的;

  • <Rules> 是规则列表元素,这个元素内部包含了一组规则,每个 <Rule> 元素定义了一个具体的规则,包括规则 ID、名称、描述、优先级等信息。

 

Rules

在 Fortify 规则库中,<Rules> 元素包含了具体的规则定义,用于静态代码分析工具进行代码扫描和检测。其结构如下:

  • <Rules> 元素包含了一系列的规则定义,每个规则定义由一个子元素表示。同时,<Rules> 元素可能会包含一个 version 属性,用于指定规则的版本号。这个版本号通常与整个规则库的版本相关联;

  • <RuleDefinitions> 标识包含一个或多个顶级规则;

  • <abcRule> 子元素代表一个具体的规则定义,包含了规则的各种属性和条件,其中,abc 表示有效的规则类型,如 <DataflowRule>、<StructuralRule> 等。

 

Rule

<Rule> 元素是定义具体规则的重要部分,包含了一个具体规则的所有信息,是规则库中的一个条目。根据具体需要和规则的复杂程度,<Rule> 元素可能会包含各种自定义元素或属性来提供更多的信息和功能。但通常 Fortify 规则定义中会使用一些共同的元素来描述规则的属性和条件。其结构如下:

  • <RuleID> 记录规则的唯一标识符,使用全局唯一标识符 (GUID) 生成器生成,用于在规则库中唯一标识和引用规则;

  • <MetaInfo> 包含了规则的元信息,提供了关于规则的额外信息,通常包括一些评估指标;

  • <Group> 指定了规则的评估组别和对应的评分,其中的 name 属性是评估组别的名称,元素值是评估组别的评分值,用于表示规则的准确性、影响和发生概率等;

  • <Notes> 包含了关于规则的注释或说明信息,提供了关于规则背后原理、应用场景和建议的更多信息,是可选的一部分。

 

 

自定义规则

编写自定义规则,我们可以使用 Fortify 内置的规则编辑器(也可以使用其他 XML 编辑器),如下图所示,在 Fortify SCA 安装的 bin 目录下打开自定义规则编辑器:

启动后,新建一个规则包并选择规则向导:

自定义规则向导中的规则选项非常繁多,但总体可以分为:数据污染源 tainted 规则,数据控制流规则,数据传递规则,以及漏洞缺陷爆发的 sink 规则这几类,在理解这些向导模板的基础上就能够更加高效地建立自定义规则。

通过自定义规则,企业能够针对性地满足其个性化的安全标准或安全法规。例如,可以创建规则以识别与特定安全标准不符的代码模式,并及时发现并解决这些问题。此外,自定义规则还能有效整合企业内部的安全最佳实践,例如对敏感数据处理、身份验证机制等方面的要求。通过自定义规则,可以确保代码符合内部安全最佳实践,从而降低潜在的安全风险。

以 Fortify 安装目录下自带的 php 示例代码为例,由于缺乏加密机和密码托管平台,数据库密码只能明文写在代码或配置文件中,为了避免 Fortify 重复报出这一安全隐患,我们可以通过自定义规则进行覆盖。

除此之外,还可以通过自定义规则,使漏洞详情和修复建议以更符合我们工作需求和习惯的方式呈现,从而提升团队的工作效率和响应速度。

 

 

以上就是小叶为大家带来的有关 Fortify SCA 自定义规则的简要介绍。

更多的技术探讨欢迎致电咨询小叶,我们为您提供最完整的软件测试产品和技术支持。

 
 

文字及图片侵删

 

2024年5月24日 09:35
浏览量:0
收藏