基于风险点知识库的银行业务安全测试方法研究

2021-10-30 05:19刘沅斌
网络安全技术与应用 2021年10期
关键词:安全漏洞测试用例知识库

◆刘沅斌

基于风险点知识库的银行业务安全测试方法研究

◆刘沅斌

(中国农业银行研发中心 北京 100161)

结合当前业务安全漏洞攻击日益增多,商业银行内部逐渐重视系统业务安全测试的现状,本文提出一种基于风险点知识库的业务安全测试方法。该方法通过设计业务安全测试流程,规范风险点知识库的形式化描述,基于规则的实体识别构建风险点知识库,实现业务安全测试流程的标准化和业务安全测试用例设计的自动化。

安全测试;业务安全;风险点知识库;测试用例

1 引言

随着互联网的飞速发展,银行信息系统受到的安全攻击逐年增加。安全测试作为一种评估银行信息系统安全性的手段,逐步受到重视。而银行系统对于传统安全漏洞防护的技术和设备日趋成熟,基于传统安全漏洞攻击也变得日益困难,增加了黑客的攻击成本,使得基于业务安全漏洞的攻击日益增加,业务安全测试重要性凸显。安全测试作为一项专业性强的工作,其测试效果取决于安全测试人员的专业知识、技能和经验,缺乏成熟的方法和模型。如何充分利用内外部已有知识,构建组织级资产,降低安全测试的准入门槛?

攻击图是目前较常用的安全评估方法,文献[1]基于对系统业务数据流,攻击流和安全措施要素统一建模分析的结果构建节点间脆弱性利用图,基于攻击成功率识别出攻击者获取某种可能危害到业务系统安全属性的攻击能力节点的最短攻击路径。该方法主要目的是评估信息系统安全措施的效用。文献[2]利用基于逻辑表达式和条件偏好网络的推理机制,提出一套静态分析攻击图的系统方法。文献[3]提出一种基于AEGM的网络攻击渗透测试预案生成系统,文献[4]提出一种基于设计级别的攻击场景生成安全测试的方法,文献[5]提出一种基于攻击图的安全威胁识别和分析方法,文献[6]设计网络渗透测试的实施流程,提出可复用的渗透测试用例管理框架。上述方法均是覆盖传统安全漏洞,没有关注系统业务安全层面的测试方案,且存在工作量大,人力成本高,耗时较长的问题。本文提出一种基于风险点知识库的银行业务安全测试方法,制定规范化的业务安全测试流程,同时基于以业务风险点知识库为核心的组织级资产,达到知识共享的目的,使测试用例设计自动化,降低了设计门槛,有效提升业务安全测试质量和效率。

2 业务安全测试现状

当前银行信息科技的安全测试主要分为两类:行内安全测试和行外安全测试。行内安全测试又可分为投产前安全测试和已投产系统安全测试。而行外安全测试一般是采用专业安全机构安全测试服务和安全众测两种类型的测试。

本文研究内容主要针对行内安全测试部分,行内安全测试部分可划分为源代码扫描,自动化漏洞扫描、人工测试三种类型。源代码扫描采用的静态应用程序安全测试(Static Application Security Testing)技术,通常在编码阶段分析应用程序的源代码或二进制文件的语法、结构、过程、接口等来发现程序代码存在的安全漏洞。自动化漏洞扫描一般采用动态应用程序安全测试(Dynamic Application Security Testing)技术,模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该应用是否易受攻击。2012年Gartner公司新提出了交互式应用程序安全测试(Interactive Application Security Testing)方案。

上述自动化扫描方案均只能发现传统安全漏洞,不能或极少能发现业务安全漏洞,业务安全漏洞主要依靠人工进行业务安全测试来检测。但业务安全测试由于缺乏通用的规则,其测试对象和测试内容取决于系统提供的业务功能,在实际测试过程中,可能存在如下问题:

(1)缺乏统一的标准,安全测试过程不受控,测试效率和质量难以度量。

(2)测试人员的技能水平不一,技能和经验无法有效地共享,无法成为组织的公共资源,当相应人员流失时,也意味着组织技能的缺失。

(3)测试人员的业务领域知识缺乏,无法对不同业务领域的系统进行有效的测试。

(4)安全测试人员在测试过程中,过分依赖自动化测试工具,自动化测试工具通常只能覆盖传统通用型漏洞诸如sql注入,跨站脚本攻击等,不能覆盖系统业务逻辑相关漏洞如越权类,篡改类漏洞。

上述问题的存在,导致安全测试的测试效率和结果难以保证。业务安全测试亟需一套有效的行之有效的测试方法,既能规范测试过程,又实现知识共享和复用。

3 业务安全测试流程

PTES(Penetration Testing Execution Standard)标准是一个旨在为企业和安全服务提供商提供的执行渗透测试的通用语言和范围的标准。该标准定义的渗透测试过程环节包含7个阶段:前期交互阶段、情报搜集阶段、威胁建模阶段、漏洞分析阶段、渗透攻击阶段、渗透测试阶段、撰写报告阶段。但企业内部的业务安全测试与渗透测试存在区别的,体现在三个方面:

渗透测试假定测试人员是在对目标系统一无所知的状态下进行测试工作,除知道目标的基本范围外,所有的信息都依赖测试人员自行发掘。主要是模拟来自互联网的攻击者,让用户了解自己系统对外来攻击者的真实安全情况。而企业内部的业务安全测试假定测试人员是对目标系统的比较了解的情况下进行测试工作,如测试范围、业务功能,测试相关的信息都可在前期与系统开发维护人员沟通获取,主要目的是为检测系统功能在实现过程中是否由于逻辑不严谨而引入安全漏洞。

渗透测试的目的除发现目标系统存在的漏洞外,还需利用目标系统安全漏洞,真正入侵系统当中,获得访问控制权。而企业内部的业务安全测试只需发现业务漏洞,通过一定的手段证明漏洞存在,并不需要利用漏洞入侵系统。

攻击者对于目标所进行的渗透测试一般是没有时间限制的,而企业内部的业务安全测试一般是遵循着项目管理的原则,有明确的起始时间。

业务安全测试和渗透测试的差异,使得业务安全测试无法复用渗透测试的流程。本文将业务安全测试过程划分为测试计划、测试设计、测试执行、测试总结四个阶段,每个测试阶段对应着不同的子任务。在这四个阶段的测试过程中组织级的资产:业务风险点知识库、漏洞分类标准、漏洞管理系统、漏洞分级标准提供基础支撑。

图1 业务安全测试流程

3.1 业务安全测试计划

在业务安全测试实施前,需要进行严谨的计划,包括:明确业务安全测试的范围,评估测试工作量,测试的方法、测试的工具、测试人员和测试时间计划、测试通过的标准、测试过程中可能存在的风险和应对措施。

3.2 业务安全测试设计

业务安全测试设计阶段,其核心的工作就是业务安全测试用例设计,业务安全测试用例设计的质量关系到业务安全测试执行的效果。本文第四章提出了一种基于业务风险点分析的业务安全测试方法,通过在构建业务风险点知识库的基础上,对被测系统需求采用分而治之的结构化分析方法,按照界面要素、业务规则、业务流程这三种类型细化每个功能的具体组成部分,然后对每个部分在风险点知识库中按图索骥,形成业务安全测试用例。

当然业务风险知识库的搭建和维护应该是一项常规的工作,同时业务安全测试实施的结果又会对业务风险点知识库的效果进行一个反馈,促进业务风险点知识库的优化。

3.3 业务安全测试执行

业务安全测试执行阶段,就是按照业务安全测试设计阶段编写的测试用例,逐条进行执行,如果发现漏洞,则提交到漏洞管理系统进行管理,并对漏洞的修复情况进行跟踪,在漏洞修复后进行复测。漏洞应该有明确的分类标准和分级标准。漏洞的分类标准在本文3.1中进行了说明。

漏洞分级即明确漏洞严重程度划分的标准,为判断修复漏洞的优先级提供依据。目前业界常用的三个漏洞等级划分模型Common Vulnerability Scoring System(简称CVSS)和微软提出的DREAD模型的思路均是制定业务安全漏洞分级相关的指标,并对每个指标赋值标准的定义和赋予一定的权重,通过加权求和计算得分,不同得分区间对应相应漏洞级别。

3.4 业务安全测试总结

在测试完成后,应该及时整理业务安全测试数据,编撰业务安全测试总结报告,重点是识别存在的风险,给出明确的结论。

4 基于风险点知识库的业务安全测试方法

4.1 安全风险点知识库要素规范

安全风险点知识库是业务安全测试的核心,它基于具体漏洞,从漏洞的角度阐述风险。业务安全测试风险点可以分成风险点关键部分和辅助部分,在风险点关键部分主要包含风险点ID,业务安全漏洞类型、漏洞对应的具体元素类型,元素类型赋值有三类:界面要素、业务规则、业务流程,元素、该风险点的来源,也分为三种来源:漏洞知识库、企业内部的历史漏洞、专家经验。在风险点辅助部分主要包含针对该漏洞的测试方法、测试工具、以及漏洞修复建议。

对于安全风险点知识库的形式化描述如下,其表现形式为Ri={RIi,VTi,ETi,Ei,Ri,Di,Mi,Ti,Si},其中,RI为风险点ID,是业务风险点的唯一标识;VT为业务安全漏洞类型,ET为元素类型三元组,其值为界面要素、业务规则和业务流程。E为元素,诸如登录用户名,R为安全测试风险点来源,D为风险点描述,M为针对该风险点的测试方法,T为测试工具,S为漏洞修复建议。

表1 风险点知识库结构表

其中业务安全漏洞类型需进行标准化的定义。目前《GB∕T 33561-2017 信息安全技术安全漏洞分类》[6]提供了三种类型的漏洞分类方法,第一种是按成因分类;第二种是按空间分类;第三种是按照时间分类。不论采取哪种分类方法,业务安全漏洞分类都应遵循唯一性原则,即按照分类标准,安全漏洞可明确归属到某一类,不能同时属于两个或以上类别。

综合分析风险点知识库的来源之一的外部漏洞库的分类方法,同时考虑元素类型与漏洞类型的适配,本文提出一种新的漏洞类型划分方法,首先按照表1中的元素类型划分为界面要素类型、业务规则类型、业务流程类型三类,然后针对每个类型按照漏洞影响划分,如信息泄露漏洞、水平越权漏洞,如无法按照漏洞影响划分,则继续按照漏洞检测方法划分,如暴力破解,如无法按照漏洞检测方法划分,则继续按照成因划分,如万能密码。漏洞类型划分示例如图2所示。

4.2 安全风险点知识库构建

安全风险点知识库的来源主要有三类,一是CNNVD、CNVD、CVE、CWE等漏洞知识库;二是企业内部的历史漏洞;三是专家经验。由于内部漏洞集和专家经验的成果可以从管理上规范格式化的描述,统一口径,并以结构化的形式进行存储管理。本文重点阐述以外部漏洞库为来源的安全风险点知识库的构建。通过对外部公开漏洞库进行网络爬取、页面解析、信息抽取等过程获取多个数据源的漏洞库数据,再通过特征提取,制定实体识别的规则,基于规则进行实体识别,在同一框架规范下进行异构数据整合加工,生成风险点知识库。图3展示了该过程。

图2 业务安全漏洞分类示例

图3 安全风险点知识库构建流程

由于外部漏洞库的信息既有结构化的信息,如编号、漏洞类型等,又有非结构化的文本信息,如漏洞简介中的文字描述,因此需要从大量信息中识别出在4.1中规范的风险点知识库的实体。实体识别方法常用的有基于条件随机场(Conditional Random Field, CRF)的方法、基于规则的方法,基于统计的方法,文献[8]提出了基于条件随机场的汉语词汇特征研究,文献[9] 提出一种集规则方法与统计方法于一体的汉语连动句识别方法。通过对CNNVD、CNVD等漏洞库中的安全漏洞描述形式的分析,发现漏洞名称和漏洞简介/漏洞描述均遵循一定的规则,因此采用基于规则的实体识别方法,同时由于漏洞类型划分的不一致,并且部分字段无法通过漏洞库获取的情况,通过建立实体的字典来进行字段的匹配。图4为安全风险点知识库构建过程中的基于规则的实体识别子流程。

图4 安全风险点知识库构建-实体识别子流程

4.3 业务安全风险点知识库的应用

安全风险点知识库以系统的形式对组织内部进行展现,可以提供知识的检索和更新等功能,并提供实时可视化交互接口便于在测试用例设计过程中进行测试用例的自动化生成。基于安全风险点知识库的测试用例设计包含两大步骤:业务需求结构化分析和安全测试用例自动生成两个步骤。

业务需求结构化分析基于各系统需求文档完整规范的假设。采用自顶向下逐层分解的方式,最终将系统划分成各个功能/交易。完成功能/交易的拆分后,将功能/交易作为基本分析单位。将基本分析单位的被测内容划分为界面要素、业务规则、业务流程三种类型,然后针对这三种类型再细分到原子级,即分到不可再划分的程度。该划分是基于安全领域的“所有用户输入不可信”的原则,用户可控的输入都是可以篡改的,而业务安全漏洞的发生则是由于篡改而导致的。

表2以一个简单的登录功能为例,展示了需求结构化分析的过程示例,表中的元素类型和元素值与本文4.1业务测试风险点知识库中的元素类型和元素值含义一致。

表2 需求结构化分析示例

图5即运用需求结构化分析得到的元素类型和元素值,逐个在业务安全风险点知识库中查找对应风险点,生成测试用例的过程。

图5 业务安全测试用例生成过程

安全测试用例生成基于两部分的内容:需求结构化分析的结果和安全风险点知识库。

表3 业务安全测试用例示例

生成的业务安全测试用例就作为业务安全测试执行的指南,在执行结算若发现安全漏洞,还可以参考安全风险点知识库中漏洞对应的修复建议。

5 结束语

针对当前银行业务系统面临业务安全漏洞攻击日益增加,内部安全测试技能无法有效应对的现状,本文提出一种基于业务安全风险点的银行业务安全测试方法。对业务安全测试流程进行了标准化,同时通过搭建业务安全风险点知识库为核心的组织级资产,结合结构化需求分析方法,实现测试用例设计的自动化。

该方法在某国有大型商业银行进行了实践,搭建包含459个风险点的风险点知识库,在3个测试系统中进行试点和使用,生成287个业务安全测试用例,发现安全漏洞19个,其中高危3个,中危7个,低危9个。有效提升业务安全测试的效率,降低业务安全测试的准入门槛,同时实现组织级资产的知识共享和复用。

本研究仍存在待改进的地方:一是业务安全漏洞分级模型;二是业务安全测试执行自动化。这也是后续进一步研究方向。

[1]吴迪,冯登国,连一峰,陈恺. 一种给定脆弱性环境下的安全措施效用评估模型[J]. 软件学报,2012,23(7).

[2]Kijsanayot hin P,Hewett R. Analytical approach to attack graph analysis for network security//Proceedings of the 2010 International Conference on Availability,Reliability and Security. Krakow,Poland,2010. Washington,DC,USA: IEEE Computer Society Press,2010:25232.

[3]章丽娟,崔颖,王清贤. 基于AEGM的网络攻击渗透测试预案生成系统[J]. 计算机工程与设计,2011,32(4):1254-1259.

[4]何可,李晓红,冯志勇,AARON Marback. 基于攻击场景的安全测试生成方法[J]. 天津大学学报,2011,44(4):344-352.

[5]吴迪,连一峰,陈恺,刘玉岭. 一种基于攻击图的安全威胁识别和分析方法[J]. 计算机学报,2012,35(9):1938-1950.

[6]李亮,楼芳. 网络渗透测试流程、用例管理和风险控制研究[J]. 煤炭技术,2010,29(11):175-176.

[7]GB∕T 33561-2017,信息安全技术安全漏洞分类[S].

[8]黄定琦,史晟辉. 基于条件随机场的汉语词汇特征研究[J]. 计算机应用研究,2020,37(6):1724-1728,1754.

[9]刘雯旻,张晓如. 一种基于规则和统计的连动句识别方法[J]. 电子设计工程,2017,25(22):18-22.

猜你喜欢
安全漏洞测试用例知识库
回归测试中测试用例优化技术研究与探索
基于SmartUnit的安全通信系统单元测试用例自动生成
基于模糊测试技术的软件安全漏洞挖掘方法研究
基于TRIZ与知识库的创新模型构建及在注塑机设计中的应用
智能设备安全漏洞知多少
安全漏洞太大亚马逊、沃尔玛和Target紧急下架这种玩具
安全漏洞检测技术在计算机软件中的应用
高速公路信息系统维护知识库的建立和应用
基于Drupal发布学者知识库关联数据的研究
基于依赖结构的测试用例优先级技术