Fortify软件是如何工作的?

Fortify是一种用于在软件代码中查找安全漏洞的SCA。 我只是好奇这个软件如何在内部工作。 我知道你需要configuration一组运行代码的规则。 但是究竟能够在代码中find漏洞呢?

有没有人有这个想法?

提前致谢。

HP Fortify SCA有6个分析器:数据stream,控制stream,语义,结构,configuration和缓冲区。 每个分析器都会发现不同types的漏洞。

数据stream这个分析器检测潜在的漏洞,涉及被污染的数据(用户控制的input)被潜在危险的使用。 数据stream分析器使用全局的程序间污点传播分析来检测源(用户input站点)和接收器(危险函数调用或操作)之间的数据stream。 例如,数据stream分析器检测用户控制的无限长inputstring是否被复制到静态大小的缓冲区中,并检测用户控制的string是否用于构buildSQL查询文本。

控制stream程该分析仪检测潜在危险的操作序列。 通过分析程序中的控制streampath,控制stream分析器确定是否以一定顺序执行一组操作。 例如,控制stream分析器检测使用问题的时间/使用时间和未初始化variables,并在使用之前检查诸如XML读取器的实用程序是否被正确configuration。

结构检测程序结构或定义中潜在的危险缺陷。 例如,结构分析器检测对Java servlet中成员variables的赋值,标识未声明为静态最终的logging器的使用,以及标记由于始终为假的谓词而永远不会执行的死代码的实例。

语义该分析器在程序内层次上检测函数和API的潜在危险使用。 基本上是一个聪明的GREP。

configuration此分析器在应用程序的部署configuration文件中search错误,弱点和策略违规。

缓冲区此分析器检测缓冲区溢出漏洞,涉及写入或读取比缓冲区容纳的数据更多的数据。

@LaJmOn有一个非常好的答案,但是在完全不同的抽象层次上,我可以用另一种方式来回答这个问题:

  1. 您的源代码被转换为中间模型,该模型已经过优化,可供SCA分析。

  2. 某些types的代码需要多个翻译阶段。 例如,一个C#文件需要首先被编译成一个debugging.DLL或.EXE,然后.NET二进制文件通过.NET SDK实用程序ildasm.exe反汇编到Microsoft中间语言(MSIL)中。 而其他文件(如Java文件或ASP文件)则由相应的适用于该语言的Fortify SCA转换程序一遍转换。

  3. SCA将模型加载到内存中并加载分析器。 每个分析器加载规则并以协调的方式将这些angular色应用于程序模型中的函数。

  4. 匹配被写入FPR文件,漏洞匹配信息,安全build议,源代码,源交叉引用和代码导航信息,用户过滤规范,任何自定义规则和数字签名都被压缩到包中。

同样是@Doug的附录以上评论…从Fortify 16.20开始,SCA现在支持直接扫描.Net C#/ ASP / VB源代码 – 不再需要预编译。

是的 – Fortify SCA支持iOS和大约20种其他语言和众多框架的Objective-C和Swift扫描。 有关详细信息,请参阅Fortify SCA数据表:

https://www.hpe.com/h20195/V2/GetPDF.aspx/4AA5-6055ENW.pdf

您还可以在Fortify on Demand上通过SaaS利用Fortify SCA,并让专家运行扫描并审核结果:

http://www8.hp.com/us/en/software-solutions/application-security-testing/index.html

Interesting Posts