Fortify自定义规则笔记(二)

摘要:

对于自定义规则,我们需要掌握每条规则的所代表的可以检查的漏洞类型,这样,才能编写有效的自定义规则,伴随着自定义规则库的增多,Fortify SCA发现漏洞,和降低误报率会越来越低,一定程度上可以智能化的扫描系统。

如下是fortify自定义规则向导中的规则选项:

1) Access Control: Database  Validation Rule
定义验证对数据库中所存储的信息的访问权限的函数 (授权函数)。这个规则可以发现与未经授权的访问相关的漏洞Alias Rule
在安全编码规则包或自定义规则的范围内定义核心和扩展API 所发现的能够模拟其他函数行为的函数。
2) Allocation Rule
定义内存分配的函数。这个规则有助于跟踪缓冲区大小并检测 buffer overflow 漏洞
3) Buffer Overflow Detection Rules for 'scanf' Family of Functions
定义像 scanf() 家族函数一样运行的函数。这些规则有助于跟踪缓冲区大小并检测 buffer overflow 漏洞
4) Buffer Overflow Detection Rules for 'sprintf' Family of Functions
定义像 sprintf() 家族函数一样运行的函数。这个函数可以在格式化字符串中并置多个起始缓冲区,并将格式化字符串的多个内存单位复制到目标缓冲区。这个规则有助于跟踪缓冲区大小并检测 buffer overflow 漏洞

5) Buffer Overflow Detection Rules for 'strcat' Family of Functions
定义像 strcat() 家族函数一样运行的函数。它在目标缓冲区的末端并置了多个起始缓冲区的内存单位。这些规则有助于跟踪缓冲区大小并检测 buffer overflow 漏洞
6) Buffer Overflow Detection Rules for 'strcpy' Family of Functions
定义像 strcpy() 家族函数一样运行的函数。它可以将多个内存单位从起始缓冲区复制到目标缓冲区。这些规则有助于
跟踪缓冲区大小并检测 buffer overflow 漏洞
7) Cross-Site Scripting Sink Rule
定义在输入参数没有进行适当验证的情况下有可能在浏览器中执行恶意代码的函数
8) Cross-Site Scripting Source Rule
定义充当输入源的函数,如果这样的函数没有经过适当的验证,会导致浏览器执行恶意代码。
9) Cross-Site Scripting Validation Rule
定义发送到网页前需要进行适当的数据验证的函数
10) Generic Pass-Through Rule
定义一个其输入参数会和输出参数交互数据的函数。
11) Generic Semantic Rule
定义可能出现的 dangerous function
12) Generic Sink Rule
定义在输入参数没有进行适当验证的情况下有可能带来多种安全漏洞风险的函数
13) Generic Source Rule
定义充当输入源的函数,如果这样的函数没有经过适当的验证,会导致多种安全漏洞。
14) Generic Validation Rule
定义能够针对多种安全漏洞而进行适当验证的函数
15) HTTP Response Splitting Sink Rule
定义在输入参数没有进行适当验证的情况下有可能破坏 HTTP 响应头文件的函数
16) HTTP Response Splitting Validation Rule
定义加入 HTTP 响应头文件之前已进行适当的数据验证的函数
17) Integer Overflow Sink Rule
定义易于发生 integer overflow 漏洞的函数,这种漏洞会在输入参数验证不当的情况下导致逻辑错误和 buffer overflow。
18) Log Forging Sink Rule
定义在输入参数没有进行适当验证的情况下有可能向日志文件写入恶意或伪造条目的函数
19) Pass-Through Rule that Indicates that Outgoing Value does not End with a Newline Character
定义未在输出参数中附加换行符的参数
20) Pass-Through Rule that Indicates that Outgoing Value does not End with a Null Character
定义没有适当地以 "\0" 结束输出缓冲区的函数
21) Pass-Through Rule that Indicates that Outgoing Value Ends with a Newline Character
定义在输出参数中附加换行符的参数
22) Pass-Through Rule that Indicates that Outgoing Value Ends with a Null Character
定义适当地以 "\0" 结束输出缓冲区的函数

23) Pass-Through Rule that Indicates  that Outgoing Value is  Deobfuscated
定义充当去模糊化例程的函数
24) Pass-Through Rule that Indicates  that Outgoing Value is not  Numeric
定义处理输入参数的函数,以使其输出参数不为数字。
25) Pass-Through Rule that Indicates that Outgoing Value is Numeric
定义处理输入参数的函数,以使其输出参数为数字。
26) Pass-Through Rule that Indicates  that Outgoing Value is Poorly  Encrypted
定义对输入参数所执行的加密方式较差的函数,如基于 64位的编码。
27) Pass-Through Rule that Indicates  that Outgoing Value Represents  the Length of the String
定义输出参数可以表示字符串长度的函数
28) Password Management Sink Rule
定义采用永远不会被破译或去模糊化的明文密码作为参数的函数
29) Password Management: Weak Cryptography Sink Rule
定义采用加密方式较差的密码作为参数的函数
30) PCI Violation Sink Rule
定义有可能将信用卡数据显示给攻击者的函数
31) PCI Violation Source Rule
定义将信用卡数据引入应用程序的函数
32) PCI Violation Validation Rule
定义信用卡数据显示给攻击者前可以对这些数据进行适当验证的函数
33) Privacy Violation Sink Rule
定义在输入参数处理不当的情况下由于向攻击者显示私人信 息而导致可能危及用户隐私的函数
34) Privacy Violation Source Rule
定义作为私人数据源的函数,如果处理不当,会危害用户隐私。
35) Privacy Violation Validation Rule
定义能适当处理私人数据且不会危及用户隐私的函数。
36) SQL Injection Sink Rule
定义在输入参数没有进行适当验证的情况下有可能执行恶意SQL 或对数据库所存储的数据提供未经授权的访问权限的函数
37) SQL Injection Source Rule
定义充当输入源的函数,如果这样的函数没有经过适当的验证,会导致 SQL 被注入到数据库查询中。
38) SQL Injection Validation Rule
定义在利用数据进行 SQL 查询之前能够对这些数据进行适当验证的函数
39) String Length Rule
定义能够计算字符串长度的函数。这个规则有助于跟踪字符串的长度,以便检测 buffer overflow 漏洞。
40) String Termination Error Sink Rule
定义在输入参数没有适当地以 "\0" 结尾的情况下可能会容易导致 buffer overflow 漏洞
41) String Termination Error Source Rule
定义由于输入数据源没有适当地以 "\0" 结尾而容易导致buffer overflow 漏洞。

42) String Termination Error Validation Rule
定义适当地以 "\0" 结束缓冲区的函数。
43) System Information Leak Sink Rule
定义在输入参数处理不当的情况下可能向攻击者显示有用的系统信息的函数
44) System Information Leak Source Rule
定义作为系统信息数据源的函数,如果处理不当,会向攻击者泄漏有用的数据。
45) System Information Leak Validation Rule
定义能够适当处理系统数据的函数

你可能感兴趣的:(静态分析)