APP下载

一种基于威胁模型的软件安全性测试需求框架研究*

2020-09-27冯亚玲

通信技术 2020年9期
关键词:安全漏洞威胁框架

徐 莺,辜 彬,冯亚玲

(中国电子科技集团第三十研究所,四川 成都 610041)

0 引言

随着信息化、互联网的快速发展,软件产品应用越来越广泛,基于开放的网络系统下的软件安全性问题日益突出。针对软件或产品进行安全性测试是保证软件安全性和降低软件安全风险的重要手段。目前,针对软件系统的安全性测试技术的研究较为普遍,成果较多,逐步形成了相关的技术与方法。现有安全性测试技术的研究大多基于测试技术本身探索测试方法深度、效果,能够解决一定范围内安全性测试效果和安全功能验证问题。在安全性测试需求方面,一直以来缺乏系统、完整的研究,以解决对特定软件产品或系统完整有效的安全性测试到底测什么和怎么测的问题。针对这一核心问题,本文基于安全威胁模型提出了一套安全性测试需求框架,提供了一套通用、系统的解决思路,是提升软件安全性测试能力和效果的重要参考。

1 安全性测试的应用现状及面临的问题

软件安全性通常有两种定义。在国标GJB5236-2004 中,安全性被定义为软件的重要功能正确且可靠,避免造成人员、财务等损失,是质量属性的一种,本质是失效安全性。随着信息技术的高速发展,人们更加关注软件的抗风险能力,即保密安全性(SecurityTesting)。保密安全性强调了软件抗攻击能力,确保在受到攻击时能正确完成功能,避免秘密泄露等。本文主要关注保密安全性。

当前主要的安全性测试技术及概况如下。

(1)形式化安全测试。通过建立软件的数学模型,提供软件的规格形式化说明,通过定理证明或者模型检测的方法发现软件中的漏洞。形式化安全测试重视理论分析,定理证明的方法很难自动化或者形成工具,只能手工实施,且一般需要高素质分析人员的参与。测试范围主要也限于设计阶段的程序而非实际代码。

(2)白盒测试。典型的安全性缺陷一般都可以通过代码分析捕获,静态分析通过对数据流的分析,可有效发现相关安全性问题。目前,基于白盒的COBOT 静态分析工具应用较为广泛,是一种有效的安全性测试方法。

(3)模糊测试。模糊测试是一种通过向目标系统提供非预期输入并监视异常结果以发现软件缺陷的方法。模糊测试将随机产生的乱数据注入被测对象,类似一种数据攻击过程,可用于发现软件漏洞和缺陷。模糊测试方法的非预期及随机性,也注定其结果的不可靠和不完整性。

(4)基于模型的安全功能测试。通过软件建立有限状态机、UML 模型等方式,对一般的安全功能进行测试,适用于容易建模的安全功能。通过覆盖遍历安全功能的分支,确保实现的正确性和健壮性[1]。

2 安全性测试需求框架的构建思路

根据保密安全性的定义内涵,将安全性需求分为2 个维度,即以安全功能为核心的验证和测试,以及基于外部攻击、威胁的安全漏洞测试。安全漏洞是指系统在设计、实现、操作、管理上存在的可被利用的缺陷或弱点,漏洞被利用可能造成软件受到攻击,使软件进入不安全状态。安全漏洞测试则是从攻击者的角度,以发现软件的安全漏洞为目的的测试,是安全性测试的重点和难点。目前的漏洞发现、扫描技术的基本原理是基于知识库中已知漏洞库对产品、系统进行扫描和检查,是一种到点的覆盖,难以解决完整的安全漏洞发现[2]。

基于以上问题,提出了一种完整的安全性测试构建思路,即基于产品安全目标进行分解,形成安全机制框架,基于框架从外部威胁入手,建立开放网络应用下产品的威胁模型,进一步对各种威胁进行概率、影响评估,导出完整的、系统的安全性测试需求框架及要素。研究思路如图1 所示。

图1 安全性测试需求框架的构建思路

3 基于威胁模型的安全性测试框架

3.1 安全目标模型

国际通用准则CC 于1999 年发布(15015408:1999),是前国际通用的信息安全测评的重要依据和基础。CC 标准在原TCSEC 的基础上提出系统的实际使用目的和安全性要求,定义了7 个评估级别EALI 到EAL7,首次提出保护轮廓的概念。保护轮廓就是针对某类产品的功能和保证要求的集合。

我国强制性国家标准《计算机信息系统安全保护等级划分准则》(GB17559-1999)是在参考美国的CC 基础上,从自主访问控制、强制访问控制、标记、身份鉴别、客体重用、审计、数据完整性、可信路径和可信恢复等方面,将计算机信息系统安全保护等级划分为5 个安全等级,从而建立我国信息系统安全性测评的基本通用评估基础。第1 级,用户自主保护级;第2 级,系统审计保护级;第3 级,安全标记保护级;第4 级,结构化保护级;第5 级,访问验证保护级。

参考相关测评标准的主要内容,将CC 标准中的保护轮廓作为产品安全目标要素,考察不同的软件产品主要的业务功能、安全防护设计、识别产品的主要过程及数据,建立产品安全性机制框架作为安全性测试研究的基础。

3.2 威胁模型及主要应用

威胁建模是识别软件安全漏洞的重要方法,通过识别要保护的对象,分解应用程序(识别入口点、出口点、信任边界、数据流描述等),识别软件面临的安全威胁,找出威胁可能的实现过程,通过攻击树对威胁实施过程建模,评估威胁(威胁分级,级别高的威胁应设计较多的测试用例),确定降低威胁的对策。最常用的威胁分类方法是STRIDE,即Spoofing(欺骗)、Tampering(篡改)、Repudiation(否 认)、Informationdisclosure(信息泄露)、Denial ofservice(拒绝服务)和Elevationofprivilege(特权提升)。以产品的安全机制为对象,开展威胁分析与风险识别,提出安全性测试需求要素[3]。表1 列出安全属性与安全威胁的对应关系。

表1 安全属性与安全威胁的对应关系

3.3 安全性测试需求框架分析

3.3.1 产品分类及威胁建模

根据软件产品的功能、组成和边界,将软件产品及系统分为设备类和软件类2 大类。设备类分为网络承载类和安全设备类,软件产品则分为基础软件和应用软件[4],如表2 所示。

根据软件产品的组成、形态及边界、面临的主要安全风险,提出软件/产品运行过程中的通用威胁部署模型,如图2 所示。

表2 产品分类

图2 软件/产品运行过程中的通用威胁部署模型

对典型分布式信息系统下的软件产品基于保护对象和不同的边界进行风险识别,归纳形成6 大类安全目标,分别为管理防护、用户数据保护、用户边界防护、密码系统边界防护、计算环境安全防护和物理安全一级安全目标;对一级安全目标进行细化,每种安全目标对应多种安全属性(即为实现安全目标而实施的保护设计机制),进一步分析安全属性对应的每种安全威胁,根据威胁级别、风险程度进行梳理和分析。图3 提出了基于用户数据保护的威胁分析的思路及主要内容。

3.3.2 安全测试需求框架

对细分的安全属性进行威胁分析,采用DREAD 方法量化潜在损失(DamagePotential)、重现性(Reproducibility)、可利用性(Exploitability)、受影响的用户(AffectedUsers)以及可发现性(Discoverability)等,计算出每种威胁的风险值,进而决定每种威胁的优先次序[5]。

通过威胁评估,分析、归纳、整合通用,选定具有必要性的测试项,提出安全性测试需求要素框架和主要测试内容,如表3 所示。

图3 基于用户数据保护的威胁分析的思路及主要内容

表3 安全性测试需求要素框架及主要测试内容

续表3

续表3

续表3

续表3

4 结语

基于开放网络下的软件产品,它的软件规模和复杂度不断提高,软件的安全缺陷与漏洞也在不断增多,在为用户提供高效、便利服务的同时,软件产品自身安全性问题日益突显,已经成为信息系统整体安全防护的重要方面。本文基于安全威胁模型,提出了一套安全性测试需求框架,为软件产品安全性测试提供了完整、系统的解决思路,是提升软件安全性测试能力和强化软件安全性设计与实现水平的重要参考。

猜你喜欢

安全漏洞威胁框架
有机框架材料的后合成交换
框架
刍议计算机软件中的安全漏洞检测技术
基于模糊测试技术的软件安全漏洞挖掘方法研究
人类的威胁
试论安全漏洞检测技术在软件工程中的应用
智能设备安全漏洞知多少
关于原点对称的不规则Gabor框架的构造
搞笑图片
我国在WYO框架下面对的贸易保护现状及应对