文章《Unforgivable Vulnerabilities》由Steve Christey 2007年撰写,主要探讨了在软件安全领域中那些本可以避免的漏洞,即“不可原谅的漏洞”。这些漏洞通常由于开发者忽视了基本的安全开发实践而存在,且容易被发现和利用。文章提出了建立一套漏洞评估保证级别(VAAL)的概念,以评估软件产品的相对安全性。以下是文章的主要内容总结和示例,原文章可以在我的资源中下载:
文章内容总结:
-
不可原谅的漏洞定义:
- 这些漏洞是那些在设计、开发和测试阶段本应被识别和修复的,但由于开发者对安全重视不够而遗留的问题。
- 它们通常涉及最常见的功能点,如身份验证、文件处理等,且攻击手段简单,易于被未技能化的攻击者利用。
-
漏洞评估保证级别(VAAL):
- VAAL旨在提供一个框架,通过不同的维度(如SDLC成熟度、访问限制、功能频率等)来评估软件产品的安全性。
- 通过VAAL,消费者可以更直观地了解产品的安全状况,而开发者可以据此改进安全实践。
-
漏洞历史阶段:
- 产品从最初的明显漏洞(如缓冲区溢出)到更复杂的漏洞类型,经历一系列发展阶段。
- 每个阶段都反映了产品在安全方面的成熟度和开发者对安全问题的认识程度。
-
不可原谅漏洞的标准:
- 包括先例、文档记录、明显性、攻击简单性和快速发现性等五个标准。
- 满足这些标准的漏洞表明开发者缺乏安全意识和测试。
示例:
假设一个Web应用程序存在以下问题:
-
缓冲区溢出:
- 用户名或密码字段在身份验证过程中,通过输入超长字符串“A”字符,导致服务器端应用程序崩溃。
- 这是一个典型的不可原谅漏洞,因为它是一个已知的、文档记录充分的安全问题,且攻击手段简单。
-
跨站脚本(XSS):
- 在用户输入的用户名或密码中,通过插入
<script>
标签执行恶意脚本。 - 这也是一个不可原谅的漏洞,因为它是一个广泛记录和教育的安全问题,且攻击手段明显且简单。
- 在用户输入的用户名或密码中,通过插入
-
SQL注入:
- 在用户名或密码字段中,通过输入单引号
'
字符,破坏SQL语句结构,从而操纵数据库查询。 - 同样,这是一个不可原谅的漏洞,因为它是一个常见的安全问题,且易于通过简单的输入验证来防御。
- 在用户名或密码字段中,通过输入单引号
这些示例展示了不可原谅漏洞的特征:它们是基本的安全问题,由于缺乏基本的安全措施而存在,且易于被发现和利用。通过识别和修复这些漏洞,可以显著提高软件产品的安全性。