10.6.2 安全漏洞的分类和分级
1.安全漏洞分类
目前业界比较流行的5种分类方法如下。
1)由GrayMcGraw等人提出的软件安全问题领域“7+1”分类。
2)由OWASP提出的CLASP(综合轻量级应用安全过程)定义的分类。
3)由MHoward,D LeBlanc和J Viega提出的“软件安全24宗罪”。
4)由OW ASP提出的Web应用程序安全漏洞前十名(OWASP Top 10)。
5)由MITRE建立的CVE以及CWE(Common Weakness Enumeration,常见弱点列举)。
其中,Gray McGraw等人提出的软件安全问题领域“7+1”分类影响较广,且具有较强的实际操作意义,被多种安全编码规范及源代码安全审核工具广泛引用。“7+1”分类为:
1)7类代码安全问题:输入验证和表示法、滥用API、安全特性、时间和状态、错误处理、代码质量、封装。
2)1类环境安全问题:环境。
其中前7项关注源代码安全,最后1项注重配置、环境相关安全[75]。
2.安全漏洞分级
一般来讲,软件安全漏洞按严重性级别可以分为四级。目前主流源代码安全审核工具均采用了类似的漏洞严重性分级方法,例如HP的Fortify将漏洞分为Critical、High、Medium、Low四级;IBM的AppScan将漏洞分为高、中、低、参考四级;CheckMarx的CxSuite将漏洞分为High、Medium、Low、Information四级。四级分类的漏洞大体可归纳为:
(1)致命的(Fatal) 造成系统和应用程序崩溃、死机、系统悬挂,数据丢失、主要功能完全丧失等。
(2)严重的(Critical) 功能或特性没有实现,主要功能丧失,导致严重的问题,或致命的错误声明。
(3)一般的(Major) 不影响系统的级别使用,但没有很好的实现功能,没有达到预期的效果。如次要功能丧失、操作时间长等。
(4)轻微的(Minor) 对功能几乎没有影响,产品及属性仍可使用。
关于安全漏洞分级,OWASP基于“风险=可能性×影响”的模型,给出了一种“漏洞风险评级方法论”。该方法论在模型基础上,将“可能性”从三个方面考量,分别是漏洞可利用性、漏洞普遍性、漏洞可检测性;将“影响”从技术、业务两方面考量,如图10-18所示。增加了多方面考量后,该模型即变换为以下公式[76]:
风险=(漏洞可利用性+漏洞普遍性+漏洞可检测性)/3×(技术影响+业务影响)/2
根据计算出的风险值即可确定风险的严重程度,然后结合企业的风险容忍度策略,确定漏洞风险级别。
图10-18 OWASP漏洞风险评级方法论应用示例[76]