软件安全风险评价
软件安全风险评估 精品管理制度、管理方案、合同、协议、一起学习进步 企业管理,管理制度,报告,协议,合同,标书 1 1 概述概述 1.11.1 安全评估目的安全评估目的 随着信息化的发展,政府部门、金融机构、企事业单位等对信息系统依赖 程度的日益增强,信息安全问题受到普遍关注。对信息系统软件进行安全测 评,综合分析系统测试过程中有关现场核查、技术测试以及安全管理体系评估 的结果,对其软件系统安全要求符合性和安全保障能力作出综合评价,提出相 关改进建议,并在系统整改后进行复测确认。以确保信息系统的安全保护措施 符合相应安全等级的基本安全要求。 根据最新的统计结果,超过 70%的安全漏洞出现在应用层而不是网络层。 而且不只发生在操作系统或者 web 浏览器,而发生在各种应用程序中-特别是关 键的业务系统中。因此,有必要针对 xxx 系统应用软件进行安全风险评估,根 据评估结果,预先采取防范措施,预防或缓解各种可能出现的信息数据安全风 险。 1.21.2 安全评估要求安全评估要求 XXXXXXXX 2 2 软件安全评估具体需求软件安全评估具体需求 2.12.1 安全评估指导原则安全评估指导原则 软件安全风险评估作为一项目标明确的项目,应分为以下五个阶段,每个 阶段有不同的任务需要完成。 1、启动和范围确定:在安全相关软件的合同或任务书中应提出软件安全性 分析的范围和要求。实施方明确责任,管理者检查必备的资源(包括人员、技 术、基础设施和时间安排),确保软件安全性分析的开展; d2 企业管理,管理制度,报告,协议,合同,标书 2、策划:软件安全性分析管理者应制定安全性分析计划,该计划可作为所 属软件过程或活动的计划的一部分。 3、执行和控制:管理者应监控由软件安全性分析计划规定的任务的执行。 管理者应控制安全性分析进展并对发现的问题进行调查、分析和解决(解决方 案有可能导致计划变更)。 4、评审和评价:管理者应对安全性分析及其输出的软件产品进行评价,以 便使软件安全性分析达到目标,完成计划。 5、结束:管理者应根据合同或任务书中的准则,确定各项软件安全性分析 任务是否完成,并核查软件安全性分析中产生的产品和记录是否完整。 2.22.2 安全评估主要任务安全评估主要任务 根据安全评估指导原则,为尽量发现系统的安全漏洞,提高系统的安全标 准,在具体的软件安全评估过程中,应该包含但不限于以下七项任务: 2.2.12.2.1 软件需求安全性分析软件需求安全性分析 需要对分配给软件的系统级安全性需求进行分析,规定软件的安全性需 求,保证规定必要的软件安全功能和软件安全完整性。 评测人员需要根据软件安全性分析准备的结果和系统的初步结构设计文 档,包括系统分配的软件需求、接口需求,完成对系统安全性需求的映射,以 安全相关性分析和对软件需求的安全性评价。通过需求安全性分析,才能够对 软件在系统中的安全性需求作出一个综合性的评价,更好地提交对后续的软件 设计和测试的建议。 2.2.22.2.2 软件结构设计安全性分析软件结构设计安全性分析 需要评价软件结构设计的安全性,以保证软件安全功能的完整性。从安全 角度讲,软件结构设计是制定软件基本安全性策略的阶段,因为这一阶段负责 定义主要软件部件,以及它们如何交互,如何获得所要求的属性,特别是安全 完整性,是软件安全性需求在结构定义中实现的阶段。 d3 企业管理,管理制度,报告,协议,合同,标书 对结构设计进行安全性分析需要将全部软件安全性需求综合到软件的体系 结构设计中,确定结构中与安全性相关的部分,并评价结构设计的安全性。 结构设计是开发人员对系统期望功能和功能实现方式的表示方法,但是沟 通的一致性,和设计的合理性,通常会影响到安全完整。所以有必要对软件设 计进行安全性评估,一方面确认软件安全需求是否在设计中得到体现,另一方 面确认设计是否合理、是否存在漏洞。 2.2.32.2.3 软件编程安全性分析软件编程安全性分析 选择合适的编程语言。所有编程语言无论在其定义还是在其实现中都有其 不安全性。这通常会造成编码人员对语言的误用,而对这些误解,一些相对开 放的语言又缺乏相应的解释。例如: 1、未初始化的变量。除非进行特别的检查,否则单元测试不会发现他们。 而这将导致,一个程序在不同的环境下虽然运行成功,但运行结果却不是期望 值。 2、当要求重新分配存储器的调用时应予以检查,以确保不仅释放指针而且 释放该结构所用的存储器。 3、运算符优先级的规则,一些语言的要求并不是那么严格,容易是程序员 发生误解。 如果某种语言有精确的定义(也有完备的功能性),从逻辑上说是清晰 的,有易管理的规模和复杂度,那么就认为这个语言适用于安全相关性软件。 使用编程语言时,也应该针对该语言的特点,努力满足安全性要求。如果一种 编程经验或编程风格因为能够提高软件安全性而被公认为专用性编码标准,可 以选择这样一种编码标准来约束对不安全语言的使用。 因此进行软件安全评估过程中,需要根据编程语言的特性,对相应易产生 漏洞的不安全因素进行重点分析,可以在提高工作效率的基础上,有针对性的 增强软件的安全性。同时,根据不同编程语言的特性,对编码标准进行分析, 也会一定程度上减少对不安全语法的使用,从而减少漏洞的产生。 d4 企业管理,管理制度,报告,协议,合同,标书 2.2.42.2.4 软件详细设计安全性分析软件详细设计安全性分析 对软件详细设计的安全性分析,主要是评估设计实现是否符合安全性的要 求。软件详细设计进一步细化高层的体系结构设计,将软件结构中的主要 部件划分为能独立编码、编译和测试的软件单元,并进行软件单元的设计。 在安全性分析的这一阶段中,需要依据软件需求、结构设计描述、软件集 成测试计划和之前所获得的软件安全性分析的结果,对软件的设计和实现阶段 是否符合软件安全性需求进行验证。 软件详细设计的目的是进一步对设计实现进行细化,便于编码。所以针对 详细设计的安全分析工作需要包含以下主要内容: 1、软件详细设计是否能追溯到软件需求; 2、软件详细设计是否已覆盖了软件安全性需求; 3、软件详细设计是否与软件结构设计保持了外部一致性; 4、软件详细设计是否满足模块化、可验性、易安全修改的要求。 2.2.52.2.5 软件编码安全性分析软件编码安全性分析 软件编码完成软件详细设计的实现。所以,代码应该体现软件详细设计所 提出的设计要求,实现设计过程中开发的安全性设计特征和方法,遵循设计过 程中提出的各种约束以及编码标准。 对软件代码的安全性分析,可以从两个方面进行:人工分析以及静态代码 分析工具来检查源代码。 人工分析主要从以下几个方面入手: 1、分析软件代码是否能追溯到需求; 2、分析软件代码是否符合支持工具和编程语言分析; 3、分析软件代码是否满足模块化、可验证、易安全修改的要求; 4、分析软件编码中所使用技术的安全性和方法的合理性。 通过静态代码分析工具检查源代码的安全性,需要根据编码语言的特性、 采用的软件框架的特性等,有针对性的对代码进行分析、检查漏洞、并提出相 应的改进建议。 d5 企业管理,管理制度,报告,协议,合同,标书 2.2.62.2.6 软件测试安全性分析软件测试安全性分析 软件