基于攻击场景的安全测试生成方法

第44卷 第4期 2011年4月

天 津 大 学 学 报 Journal of Tianjin University V ol.44 No.4Apr. 2011

收稿日期:2010-01-22;修回日期:2010-07-02.

基金项目:国家高技术研究发展计划(863计划)资助项目(2007AA01Z130);国家自然科学基金资助项目(90718023). 作者简介:何 可(1981— ),男,博士研究生,kehe@https://www.360docs.net/doc/9d415161.html,. 通讯作者:冯志勇,zyfeng@https://www.360docs.net/doc/9d415161.html,.

基于攻击场景的安全测试生成方法

何 可1,李晓红1,冯志勇1,AARON Marback 2

(1. 天津大学计算机科学与技术学院,天津 300072; 2. 美国北达科他州立大学计算机科学系,法戈58108)

摘 要:为了更加有效地开发安全可信的软件,需要在软件开发生命周期中尽早考虑安全问题.为了解决这一问题,提出了一种基于设计级别的攻击场景生成安全测试的方法,该方法包括建模并验证攻击场景,用攻击场景生成安全测试序列,基于输入语法生成测试输入数据,生成模型级别的安全测试用例,将模型级别的安全测试用例转化为可执行的安全测试用例.设计并实现了一个实验,验证了所提出方法的可行性和有效性. 关键词:软件安全;攻击场景;安全测试序列;安全测试生成;可信软件

中图分类号:TP309 文献标志码:A 文章编号:0493-2137(2011)04-0344-09

Attack Scenario Based Approach to Security Test Generation

HE Ke 1,LI Xiao-hong 1,FENG Zhi-yong 1,AARON Marback 2

(1. School of Computer Science and Technology ,Tianjin University ,Tianjin 300072,China ;

2. Department of Computer Science ,North Dakota State University ,Fargo 58108,ND ,USA )

Abstract :In order to build secure and trusted software in a cost-effective way ,it is necessary to consider security

problems as early as possible in the software development life cycle. To solve this problem ,an approach to security test generation based on design level attack scenario was presented. This approach consists of modeling and validating attack scenario ,generating security test sequences from attack scenario ,generating security test input based on input syntax ,generating model level security test cases ,and converting model security test cases into executable security test cases. An experiment has been conducted to validate the feasibility and effectiveness of the presented approach.

Keywords :software security ;attack scenario ;security test sequence ;security test generation ;trusted software

随着互联网的普及,软件安全性已经成为一个严重的问题.人们普遍认识到应该在软件开发生命周期中尽早考虑安全问题[1].安全性已经成为软件系统的一个重要可信性质[2].设计级别的安全问题难以解决使得安全设计(如设计阶段的威胁建模)成为安全软件开发成功的关键[1].Li 与He [3]提出了一种统一威胁模型,在设计阶段能够有效地分析与评估软件可能面临的威胁,改进软件设计的安全性.但是,软件实现可能违背设计引入安全漏洞,安全设计并不能确保软件实现的安全性.使用安全设计的产物(如统一威胁模型)测试软件实现的安全性成为必要.

软件安全测试通过运行安全测试用例发现系统

中的安全漏洞,是一种确保系统安全性的有效方 法[4].从安全设计的产物生成安全测试用例需要解决2个关键问题.

(1)从设计产物生成模型级别的安全测试用例.攻击通常是由攻击者的恶意行为和故意选择的无效输入所造成.软件结构和输入空间的复杂性使得测试一个软件的所有无效输入极其困难.因此,自动或者半自动的安全测试成为关键.

(2)生成可执行的安全测试用例.由于软件设计先于实现,从设计级别的产物生成的安全测试用例不是直接可执行的.将设计级别的安全测试用例转化为实现级别的可执行的安全测试用例时,需要解决将模

2011年4月何可等:基于攻击场景的安全测试生成方法 ·345·

型级别的元素(如事件)映射到实现级别的结构(如面向对象程序中的方法),以及为安全测试参数提供输入等问题.

为了解决上述问题,本文提出了一种基于攻击场景的安全测试生成方法,使用设计级别的攻击场景模型生成可执行的安全测试用例,设计并实现了一个实验验证了该方法的可行性和有效性.

1 相关工作

软件工程领域的研究人员已经提出了多种基于场景的测试方法.Ryser与Glinz[5]提出了一种基于场景的软件验证与测试方法.Thomas等[6]提出了一种使用场景和状态机的目标驱动测试方法.Tsai等[7]提出了一个基于场景的面向对象测试框架用于快速测试.但是,上述方法都不支持开发与安全测试相关的场景和测试用例.Mouratidis和Giorgini[8]提出了一种基于场景的安全测试方法(M&G方法),用于信息系统设计阶段的安全测试.本文提出的方法与M&G方法存在3点不同:①M&G方法采用Tropos方法作为基础,而本文采用扩展活动图和统一威胁模型作为基础,UML活动图和威胁树分别是扩展活动图和统一威胁模型的基础,广泛应用于软件功能建模和威胁建模[1];②本文引入信任边界和攻击路径的概念,使得设计人员能够更好地理解攻击者可能从何处以及采用何种方法渗透系统以实现威胁;③M&G方法没有提供生成可执行的安全测试用例的方法,而本文提出了一种从攻击场景生成可执行的安全测试用例的方法,并通过实验验证了该方法的可行性和有效性.威胁建模[1]已经成为一种有价值的安全软件开发实践.威胁建模过程简洁抽象地描述了攻击者渗透系统实现威胁的方法,可以用于各种抽象级别或者不同的软件开发阶段,例如需求分析、设计、实现,甚至测试阶段.Wang等[9]提出了一种威胁模型驱动的安全测试方法,用于发现运行时的威胁行为.该研究用UML顺序图建模违背安全策略的威胁,再从设计级别的威胁模型中提取威胁踪迹集合.其中,每条威胁踪迹是系统运行期间不应该发生的一个事件序列,否则便是一个威胁.与此工作不同,本文的工作基于攻击场景,用扩展活动图建模系统功能,用统一威胁模型建模系统可能面临的威胁,并从攻击场景生成可执行的安全测试用例.

陈小峰[10]提出了一种用于可信平台模块的形式化分析与测试方法,以可信平台模块的密码子系统为例,用Z语言给出了该子系统的形式化规格说明,并且基于该规格说明给出了扩展有限状态机模型.最后将该有限状态机模型应用于测试用例的自动生成.与此工作不同,本文的工作是基于设计阶段的攻击场景模型来生成可执行的安全测试用例.

2 攻击场景

基于攻击场景的安全测试生成方法中,建模设计级别的攻击场景需要对系统的功能和可能面临的威胁建模[11].其中,威胁被认为是由数据跨越不同信任等级时所作的错误假设造成的.为此,扩展UML活动图,引入新的建模元素——信任边界,基于扩展的UML活动图建模系统功能,并采用统一威胁模型建模系统可能面临的威胁.

定义1信任等级、信任边界和扩展活动图(extended activity diagram).信任等级是系统某一部分所达到的信任程度,记为TL,TL∈{low,m edium,high,unknown}.信任边界是不同信任等级的物理或虚拟边界,记为TB.称带有信任边界扩展的活动图为扩展活动图,记为EAD.

定义2 AND节点和OR节点[12].AND节点是指父节点的所有子节点之间存在AND逻辑关系,即当且仅当实现所有子节点时,才能实现父节点.其中,实现子节点的默认顺序为从左到右.OR节点是指父节点的所有子节点之间存在OR逻辑关系,即当且仅当实现任一子节点时,就能实现父节点.

定义3 统一威胁模型(unified threat model).统一威胁模型是一个表示、分析与评估系统可能面临的威胁的模型,记为UTM,UTM(Tr,Al,)H

=,其中

(1)Tr是具有一个或多个AND/OR节点的统一

威胁树,Tr(,,At)

N E

=.N为一个非空有限AND/OR 节点的集合.节点分为3种:根节点、中间节点和叶节点.根节点N root_node表示攻击要实现的最终威胁目标,代表达到最终攻击目标的攻击方式,可以分解为若干个子目标.中间节点N intermediate_nodes表示为实现父节点目标而分解出的若干个子目标,代表达到最终威胁目标的中间级攻击方式,可以分解为若干个低一级的子目标.叶节点N leaf_nodes表示具体目标,代表达到最终威胁目标的具体攻击方式,不再分解.这3种

节点满足

root_node intermediate_nodes leaf_nodes

N N N=?

∩∩和root_node

N∪

intermediate_nodes leaf_nodes

N N

∪N

=.E为N N

×的子集.如果节点1,2

N N N N

∈∈,且存在一条由1N指向2N的有向边,则称1N为前提目标,2N为后继目

·346· 天 津 大 学 学 报 第44卷 第4期

标.At 为统一威胁模型的属性集合,包括实现威胁的前置条件和后置条件等等.

(2)Al 为分析与评估系统可能面临的威胁的算法集合.

(3)H 为安全事件的历史统计信息集合. 统一威胁模型是扩展的威胁树模型,威胁树模型常应用于威胁建模过程[1].建模统一威胁模型时,统一威胁树的根节点分解为若干个中间节点,而中间节点进一步分解,直到叶节点.这是一个逐步求精的过程,最终,根节点由叶节点集合所构成的若干个序组实现.一个序组表示一种攻击者实现威胁的潜在方法,称为攻击路径,由分解过程中节点之间的AND/OR 逻辑关系决定. 定义4攻击路径(attack path ).攻击路径是实现统一威胁树Tr 根节点所需要的若干个相关叶节点构成的序组的集合,记为Pa ,Pa {,,,|Ni Nj Nk =<>

leaf_nodes ,,,}Ni Nj Nk N ∈ .攻击路径,i N <,j N ,k N >

是Tr 的一个最小割集.其中,割集Cu 满足条件: ①是Tr 的叶节点构成的一个n 元序组,1n ≤≤

leaf_nodes ||N ;

②当按照顺序实现该序组中所有叶节点时,能够实现Tr 的根节点.最小割集min Cu 满足条件:①是一个割集;②若去掉该割集的任一叶节点就不再

成为割集.

场景已经广泛应用于计算机科学研究的多个领域[6-8].攻击场景由扩展活动图、统一威胁模型和攻击连接构成.攻击场景架起了系统功能设计和安全分析之间的桥梁,缩小了二者之间的差距. 定义5攻击场景(attack scenario ).攻击场景描述了系统的功能、参与者、可能面临的威胁,攻击者及其意图和目标,表示了攻击者渗透系统实现威胁的方法及其与系统功能之间的关联,记为ASc ,ASc = (EAD,UTM,ALink).其中,EAD 表示了系统功能,EAD 中的泳道和对象节点分别表示了参与者和攻击

目标.UTM 表示了系统可能面临的威胁,UTM 中的

攻击路径表示了攻击者渗透系统实现威胁的方法.攻击连接(ALink )表示了具体攻击方式和攻击目标之间的关联.

3 基于攻击场景的安全测试生成方法

基于攻击场景的安全测试生成方法致力于识别攻击者的意图和目标,并从攻击场景生成安全测试用例以测试系统的安全性.该方法包括6个步骤:①用扩展活动图建模系统功能,用统一威胁模型建模系统可能面临的威胁,建模攻击场景;②验证攻击场景;③从攻击场景生成安全测试序列;④基于语法生成安全测试输入;⑤将安全测试输入整合到安全测试序列中,生成模型级别的安全测试用例;⑥结合领域知识和实现知识将模型级别的安全测试用例转化为可执行的安全测试用例.图1表示了各个步骤之间的关系.首先,构建并验证攻击场景.然后,生成安全测试序列和安全测试输入,并将安全测试输入整合到安全测试序列中构成模型级别的安全测试用例.最后,基于领域知识和实现知识,将模型级别的安全测试用例转化为实现级别的可执行的安全测试用例.为了系统地阐明所提出的安全测试用例生成方法,以实验中为被测的基于Web 的电子商务系统osCommerce 建模的一个SQL 注入攻击场景(图2)为例进行说明.值得指出的是,虽然本文的实验是针对一个基于Web 的电子商务系统,但是本文所提出的方法具有一定的普适性,能够用于建模各种类型Web 系统(如基于Web 的电子政务系统、网上银行系统、内容管理系统、远程教育系统等)的攻击场景,并基于攻击场景生成安全测试用例.因为本文建模的攻击场景(如SQL 注入、URL 跳跃、目录遍历、跨站点脚本、信息泄露等攻击场景)不仅存在于基于Web 的电子商务系统中,也存在于其他类型的Web 系统中[13].

图1 基于攻击场景的安全测试生成方法的流程

Fig.1 Process of the attack scenario based approach to security test generation

2011年4月何可等:基于攻击场景的安全测试生成方法 ·347·

图2osCommerce系统的SQL注入攻击声景

Fig.2Attack scenario of SQL injection in osCommerce system

3.1攻击场景建模与验证

分析攻击者的意图和目标所获得的信息使开发人员能够理解攻击者可能从何处渗透系统,以及攻击者如何渗透系统.这些信息为建模攻击场景奠定了基础.攻击场景建模包括3个步骤:①用扩展活动图建模系统功能;②用统一威胁模型建模系统可能面临的威胁;③用攻击连接关联统一威胁模型中的具体攻击方式和扩展活动图中的攻击目标.用扩展活动图建模系统功能的过程中,引入的信任边界建模元素指出了系统功能模型中数据跨越不同信任等级的地方,经过这些地方的数据常成为攻击目标.信任边界确定了攻击者的潜在攻击目标以及从何处渗透系统.如图2所示的SQL注入攻击场景中,osCommerce系统为用户提供了浏览网上商店,选择商品,向购物车中添加商品,移除商品,更新购物车,结账等功能.当用户选择了商品,将相关信息由客户端提交到服务器端时,该信息跨越了互联网终端(信任等级为低)和osCommerce网上商店(信任等级为中)之间的信任边界,但是缺乏足够的保护措施,导致攻击者可以进行SQL注入攻击.

用统一威胁模型建模系统可能面临的威胁的过程中,攻击路径表示了攻击者渗透系统的方法.实验中,对osCommerce系统建模了7个攻击场景,在此详述其中5个攻击场景的统一威胁模型.图2所示的SQL注入攻击场景中,统一威胁模型有3条攻击路径.osCommerce系统中,变量$option和$value是从shoppingCart类中的$this→contents获得,而$this→contents是由shopping_cart.php文件中的$cart→get_products()函数调用获得.这些变量的值是从会话数据中取得,但是系统对会话数据没有进行恰当的转义处理,攻击者将一个商品添加到购物车时可以通过id[]数组控制会话数据.攻击者向id[]数组中注入SQL脚本可以获得用户的信用卡信息、个人信息或登录信息.

图3为URL跳跃攻击场景的统一威胁模型,有3条攻击路径.在用户结账的流程中,缺乏保护措施确认用户的请求流程页面与规定的结账流程页面是否一致,导致攻击者能够使用URL跳跃攻击跳过支付信息

图3URL跳跃攻击场景的统一威胁模型

Fig.3Unified threat model of URL jumping

·348·天津大学学报第44卷 第4期

图4为目录遍历攻击场景的统一威胁模型,有2条攻击路径.由于osCommerce系统没有验证请求file_manage.php页面和admin目录的变量,导致攻击者能够以假的URL执行目录遍历命令,下载保密文件(例如Linux系统中存储用户名和密码的文件).

图4目录遍历攻击场景的统一威胁模型

Fig.4Unified threat model of directory traversal

图5为跨站点脚本攻击场景的统一威胁模型,有4条攻击路径.osCommerce系统的多个php文件中传递给“page”参数的输入,以及admin目录下geo_zones.php文件中传递给“zpage”参数的输入都没有经过恰当的净化处理就返回给用户.这导致攻击者能够利用这些受影响的php文件执行任意HTML 代码和脚本代码.攻击者能够通过发送隐藏图片、表单、浮动DIV或IFrame脚本获取用户的会话

ID.

图5跨站点脚本攻击场景的统一威胁模型

Fig.5Unified threat model of cross site scipt

图6为信息泄露攻击场景的统一威胁模型,有2条攻击路径.osCommerce系统对用户登录时尝试用户名和密码的次数缺乏限制,使得攻击者能够通过多次尝试获取用户名和密码,并登录系统更改用户账户信息.攻击者能够通过字典攻击或暴力破解的方式获得用户名和密码.

图6信息泄露攻击场景的统一威胁模型Fig.6Unified threat model of information disclosure

软件审查是一种有效的验证方法[11],因此采用这种方法验证攻击场景.验证过程包括2个步骤:①识别并解决扩展活动图和统一威胁模型语法中可能存在的不一致问题;②识别并解决攻击场景之间可能存在的不一致性问题.使用软件审查方法进行验证后得到的攻击场景称为有效攻击场景.

3.2 安全测试序列生成

建模并验证攻击场景后需要从攻击场景生成安全测试序列.安全测试序列是以攻击路径为模板生成的,因为攻击路径表达了攻击者渗透系统的潜在攻击方法.以下是基于攻击场景生成安全测试序列的算法.该算法采用递归设计从攻击场景生成安全测试序列.其中,

root_node

N、

leaf_nodes

N、OR

N和AND

N分别是根

节点、叶节点、OR节点和AND节点;

root_node

n是root_node

N的子节点个数;i B是父节点

root_node

N的第i个

子节点;

i

n是i B的子节点个数..Pa

i

B是到达节点i B的攻击路径集合.

算法:generateSecurityTestSeqence (

root_node

N,root_node

n)

输入:

root_node

N,

root_node

n.

输出:

root_node

.Pa

N.

1.

root_node

.Pa;

N←?

2. For i from 1 to

root_node

n

2.1 If

leaf_nodes

i

B N

∈ Then

2011年4月 何 可等:基于攻击场景的安全测试生成方法 ·349·

Return .Pa ;i i B B ←

2.2. Else generateSecurityTestSeqence(i B ,i n );

3. End For

4. If OR root_node N N ∈ Then 4.1. For i from 1 to root_node n root_node

root_node 1

.Pa .Pa;n i i N B =←∪

4.2. End For

4.3. Return root_node .Pa;N

5. Else //AND root_node N N ∈

5.1. For i from

1 to root_node n root_node 12.Pa .Pa .Pa N B B ←××× root_node

.Pa .Pa i n

B B ×× ;

5.2. End For

5.3. Return root_node .Pa;N

从攻击场景生成可执行的安全测试用例时可以应用不同的测试覆盖准则,包括:①叶节点覆盖:统一威胁模型中每一个叶节点至少被一个安全测试用例覆盖;②攻击路径覆盖:统一威胁模型中的每一条攻击路径至少被一个安全测试用例覆盖.在攻击场景中,攻击路径是依据统一威胁模型节点之间的AND/OR 逻辑关系生成的,包含了节点的有序排列情况(AND 逻辑关系),一个叶节点可能在多条攻击路径中出现,故叶节点覆盖准则是攻击路径覆盖准则的子集合,因此选择攻击路径覆盖准则. 应用安全测试序列生成算法,图2所示SQL 注入攻击场景生成3个安全测试序列:①用户浏览osCommerce 网上商店→选择商品→编辑商品信息→注入获取用户信用卡信息的SQL 脚本→将商品加入到购物车;②用户浏览osCommerce 网上商店→选择商品→编辑商品信息→注入获取用户个人信息的SQL 脚本→将商品加入到购物车;③用户浏览osCommerce 网上商店→选择商品→编辑商品信息→注入获取用户登录信息的SQL 脚本→将商品加入到购物车.

安全测试序列是从设计级别的攻击场景生成,需要将它转化为可执行的安全测试用例.攻击场景中可能存在一些攻击方式(即事件)难以转化为可执行的安全测试用例(如社会化攻击、硬件篡改等)或者可以与其他的攻击方式进行合并.为了解决这一问题,开发安全测试用例的人员需要对安全测试序列中必要和可行的事件进行绑定以生成可执行的安全测试用例.以SQL 注入攻击场景为例,用户浏览osCommerce 网上商店事件不是必要的操作,可以直

接通过传递商品id 参数(http ://https://www.360docs.net/doc/9d415161.html,/product_

info.php?products_id =2)完成打开osCommerce 网上商店和选择商品的操作.编辑商品信息事件与对id[]数组进行SQL 注入事件的测试代码是合并在一起的,这种情况下不需要将其转化为单独的可执行的测试代码片段.

攻击操作还需要关联参数.因为一个安全测试序列可能包含多个事件,而每个事件可能有多个参数.跟踪全部事件的所有参数并维护参数的顺序成为一个难点.为了解决这一难点,首先在统一威胁模型的叶节点中为事件指定参数,这些参数最终会导出到生成的安全测试序列中;然后,生成安全测试序列后,遍历序列中的事件为参数创建一个参数列表;该参数列表随后以注释语句的形式生成到最终的可执行安全测试代码的顶端,提醒安全测试用例的开发人员注意参数的正确个数.在SQL 注入攻击场景中,选择一个商品的事件有2个参数(product_id 和options_id ) .

3.3 基于语法的安全测试输入生成

获得安全测试序列和参数以后,需要为安全测试用例提供实际输入.采用基于语法的测试方法,这是一种基于语法的输入数据驱动测试方法[3].

SQL 注入攻击场景的示例中,需要参数product_id ,该参数所满足的最简单语法是正则表达式*a .其中,a 是任一可打印的ASCII 字符,这个集合的势是无穷大,因此不实用.可以限制字符串长度来减少输入数据总量.这种情况下一个长度为L 的字符串的输入数据总量为95L (95为可打印的ASCII 字符数).可见指定长度约束后的输入数据总量还是过于庞大.为了减少输入数据总量,采用等价划分和边界值分析的方法对输入数据进行分组.通常情况下,输入数据划分为以下4类.

(1)有效输入:这些输入满足设计需求并且使得系统功能正常运行.

(2)被处理过的无效输入:这些输入是无效的,但是系统设计了一些错误处理机制进行处理.

(3)未被处理过的无效输入,但没有导致安全威胁:这些输入是有意义的,但不是本文的研究重点.

(4)未被处理过的无效输入,但导致安全威胁:这些数据可能导致系统漏洞,是本文安全测试输入生成部分的重点研究内容.

为了进行边界值分析,必须检查被测系统osCommerce 的设计文档以发现等价划分的边界.在SQL 注入攻击场景的示例中,通过检查设计文档发现

·350·天津大学学报第44卷 第4期

product_id的赋值为32位的整数值.使用数据库存储常用的有效或无效字符串.例如,SQL注入脚本字符串和跨站点脚本字符串.数据库还能提供功能以组合某些互相依赖的参数.例如,在数据库中为product_id 参数创建一个可被osCommerce系统接受的赋值表.一些product_id参数(如显卡)有一些相应的options_id参数选择(如一个显卡可以选择配备128 MB显存或者256 MB显存).在数据库的表中,配备不同容量显存(128 MB的options_id=0,256 MB的options_id=1)的显卡(product_id=2)所对应的可被接受赋值是{(2,0),(2,1)}.为了观察安全测试用例中独立的参数对系统安全性造成的影响,对安全测试序列中事件的独立参数至少生成一个可执行的安全测试用例.

3.4 实 现

为了支持基于攻击场景的安全测试生成方法,用Java语言开发了一个原型工具.该工具包括以下3种模块:①攻击场景建模与安全测试序列生成模块,该模块提供图形化的攻击场景建模功能,并从攻击场景生成安全测试序列;②安全测试用例赋值模块,该模块允许用户为安全测试序列中事件的参数赋值;③可执行的安全测试用例生成模块,该模块将模型级别的安全测试用例转化为可执行的安全测试用例.可执行的安全测试用例包括:安全测试用例ID、前置条件、后置条件、安全测试参数和安全测试代码.其中安全测试用例ID、前置条件、后置条件、安全测试参数都是以注释的形式置于安全测试代码的顶端.实验中,用Selenium IDE的Firefox扩展和Selenium Remote Control测试环境来运行大部分安全测试用例.对于一些过于复杂而不能用Selenium运行的安全测试用例,则借助Perl语言的WWW:: Mechanize和LWP包.所有可执行的安全测试用例都用Perl语言编写.

以SQL注入攻击场景的第1个安全测试序列为例.需要安全测试用例执行:①选择一个商品;②注入获取用户信用卡信息的SQL脚本;③将商品加入到购物车.需要注意的是,如前文所述,该安全测试用例中并不包含用户浏览osCommerce网上商店和编辑商品信息这2个事件.为了完成这个安全测试用例,需要为安全测试序列中的每一个事件开发相应的测试代码,然后将代码组合成一个完整的安全测试用例,并为其提供输入.下文为SQL注入攻击场景中第1个安全测试序列对应的一个可执行的安全测试用例.该安全测试用例需要用户选择一个商品(product_id)并确定其相应的选项(options_id).这些输入数据可以从测试数据库中相应表的字段中获取.使用设计文档和测试数据库提供所需要的安全测试输入.

#/usr/bin/perl –w

#testid: 1

#precondition: system is on

#postcondition: obtain user’s credit card informa-tion

#parameters:p0:username,p1: product_id,p2:

options_id

use WWW::Mechanize;

use HTTP::Cookies;

use WWW::Mechanize::FormFiller;

use URI::URL;

my $agent = WWW::Mechanize->new(autocheck => 1);

$agent→cookie jar(HTTP::Cookies->new);

$testparas = 0;

$agent→get(’https://www.360docs.net/doc/9d415161.html,/product info.php?

products id=’.”$ARGV[$myargs]”);

$testparas = $testparas + 1;

$agent→field(”$ARGV[$myargs]”, ’99\’ UNION

SELECT

null,CONCAT(’cc number’), null,null FROM

customers’);

$testparas = $testparas + 1;

需要特别指出的是,生成可执行的安全测试用例时需要考虑尽量减小安全测试的破坏性.例如,在信息泄露攻击场景中,生成的可执行的安全测试用例只需要确认攻击者的攻击方法能够成功破解用户登录信息即可,而不需要执行修改用户账户信息的事件,这样能够减小安全测试对被测系统的破坏性.

4 实 验

为了验证基于攻击场景的安全测试生成方法的可行性和有效性,设计并实现了一个实验,使用该方法对osCommerce系统进行安全测试.

4.1 实验设计与环境

实验使用的被测系统osCommerce是一个基于Web的网上购物系统,用PHP语言编写并使用MySQL数据库存储后台数据.osCommerce系统是一个开源平台,是大多数愿意自己部署网上购物系统的零售商的一个主要选择.实验一共建模了7个攻击场景:①SQL注入攻击场景;②URL跳跃攻击场景;③目录遍历攻击场景;④跨站点脚本攻击场景;⑤信息泄

2011年4月何可等:基于攻击场景的安全测试生成方法 ·351·

露攻击场景;⑥数据篡改攻击场景;⑦登录信息篡改攻击场景.在第3节详细描述了前5个攻击场景的统一威胁模型.使用开发的工具生成了41个安全测试序列和1 532个带有输入的可执行的安全测试用例.实验是在同一台主机的2台虚拟机(其中一台为客户端机器,一台为服务器)上进行.客户端机器的操作系统为Ubuntu 8.10,服务器端操作系统为openSUSE 11.1.服务器运行Apache作为HTTP服务器以及MySQL作为后端数据库.值得注意的是网络连接速度对运行安全测试的时间有直接影响,在同一台主机的2台虚拟机上进行实验可以提供一个接近最优的网络连接速度.

4.2 实验结果与讨论

实验目的是验证生成的安全测试用例是否能够发现系统中存在的威胁.表1展示了实验中安全测试用例的运行结果.第1项为攻击场景,第2项为每个攻击场景生成的安全测试序列数目,第3项为每个攻击场景生成的可执行的安全测试用例数目,第4项为发现系统中存在威胁的安全测试用例数目.其中,前5个攻击场景是由系统中存在的威胁建模而成,实验结果表明这5个攻击场景生成的每个安全测试用例都发现了系统中存在的威胁,表明通过安全测试发现了系统中存在的威胁.后2个攻击场景是从osCommerce 系统设计已经恰当处理过的威胁建模而成,实验结果表明这2个攻击场景生成的安全测试用例都没有发现系统中可能存在的威胁,说明系统设计能够防范这2个攻击场景中的攻击方法.运行全部1532个安全测试用例耗时1562.64s,平均每个安全测试用例运行耗时1.02s.这验证了基于攻击场景的安全测试生成方法的可行性和有效性.

表1实验结果

Tab.1Experiment results

攻击场景安全测试序列数安全测试用例数发现威胁的安全测试用例数

SQL注入攻击场景URL跳跃攻击场景目录遍历攻击场景跨站点脚本攻击场景信息泄露攻击场景数据篡改攻击场景登录信息篡改攻击场景3

3

2

4

2

18

9

6

6

2

4

2

1 008

504

6

6

2

4

2

总 计41 1

532 20

实验结果表明,基于攻击场景的安全测试生成方法是一种有效的技术,能够开发安全测试用例用于发现系统中可能存在的威胁.通过这种方法,能够识别攻击者的攻击目标,这些目标正是安全测试的目标,需要测试攻击者是否能够实现这些攻击目标;还能够识别攻击者如何实现攻击目标,一种实现攻击目标的方法就形成一条攻击路径,而攻击路径则成为生成安全测试序列的模板.

尽管实验结果理想,但是实验仍然存在以下不足.

(1)如何建模攻击场景.一方面,由于缺乏实验对象osCommerce系统的全面的设计文档,进行实验时从系统中存在的威胁建模攻击场景而非完全依靠设计文档.另一方面,所提出的方法需要开发人员建模攻击场景并辅助开发安全测试用例,该方法的有效性可能直接受到开发人员建模攻击场景与开发安全测试用例能力的影响.

(2)实验对象缺乏多样性.通过对一个大型、易部署的Web应用程序osCommerce进行真实的安全测试来减少这一不足.

5 结 语

本文提出了一种基于攻击场景的安全测试生成方法以测试软件的安全性,设计并实现了一个实验验证了该方法的可行性与有效性.主要贡献在于:①能够使用攻击场景识别攻击者的攻击目标;②能够从攻击场景中生成可执行的安全测试用例,并通过运行安全测试用例,发现系统的安全漏洞以确保软件安全性;③能够确认系统设计成功防范某些攻击方法,即这些攻击方法想要实现的威胁在系统设计阶段已经被恰当考虑和处理过了,从而确保软件系统的安全性.

参考文献:

[1]Michael H,David L. Writin g Secure Code[M]. 2nd ed.

·352·天津大学学报第44卷 第4期

Redmond,Washington,WA:Microsoft Press,2003. [2]陈火旺,王 戟,董 威. 高可信软件工程技术[J]. 电子学报,2003,31(12A):1933-1938.

Chen Huowang,W ang Ji,Dong W ei. High confidence

software engineering technologies[J]. Acta Electron ica

Sinica,2003,31(12A):1933-1938(in Chinese). [3]Li X,He K. A unified threat model for assessing threat in web applications[C]// Proceedin gs of the 2n d In tern a-

tion al Con feren ce on In formation Security an d Assur-

ance. Busan,Korea,2008:142-145.

[4]Chris W,Lucas N,Dino D Z,et al. The Art of Software Security Testin g:Iden tifyin g Software Security Flaws

(Syman tec Press)[M]. Boston,MA:Addison-Wesley

Professional,2006.

[5]Ryser J,Glinz M. A scenario-based approach to validat-ing and testing software systems using statecharts[C]//

Proceedin gs of 12th In tern ation al Con feren ce on Soft-

ware an d Systems En gin eerin g an d Their Application s.

Paris,France,1999.

[6]Thomas A A,Debra J R,Thomas A S. Scenarios,state machines and purpose-driven testing[C]// Proceedings of

the Fourth In tern ation al Workshop on Scen arios an d

State Machin es:Model,Algorithms an d Tools.St.

Louis,USA,2005:1-5.

[7]Tsai W T,Saimi A,Yu L,et al. Scenario-based object-

oriented testing framework[C]//Proceedings of Third In-

tern ation al Con feren ce on Quality Software.Dallas,

USA,2003:410-417.

[8]Mouratidis H,Giorgini P. Security attack testing(SAT)-testing the security of information systems at design time

[J]. Information Systems,2007,32(8):1166-1183. [9]Wang L,Wong W,Xu D. A threat model driven approach for security testing[C]// The 3rd International Workshop

on Software En gin eerin g for Secure Systems.Minnea-

polis,2007.

[10]陈小峰. 可信平台模块的形式化分析与测试[J]. 计算机学报,2009,32(4):646-653.

Chen Xiaofeng. The formal analysis and testing of

trusted platform module[J]. Chin ese Journ al of Com-

puters,2009,32(4):646-653(in Chinese).

[11]Aurum A,Petersson H,W ohlin C. State-of-the-art:Software inspections after 25 years[J]. Software Testing,

Verification and Reliability,2002,12(3):133-154. [12]Russell S,Norvig P. Artifical In telligen ce:A Modern Approach[M]. 2nd ed. Upper Saddle River,NJ:Prentice

Hall,2002.

[13]W hittaker J A,Thompson H. How to Break Software Security:Effective Techn iques for Security Testin g[M].

City of Westminster,London:Pearson,2003.

基于攻击场景的安全测试生成方法

作者:何可, 李晓红, 冯志勇, AARON Marback, HE Ke, LI Xiao-hong, FENG Zhi-yong, AARON Marback 作者单位:何可,李晓红,冯志勇,HE Ke,LI Xiao-hong,FENG Zhi-yong(天津大学计算机科学与技术学院,天津,300072), AARON Marback,AARON Marback(美国北达科他州立大学计算机科学系,法戈58108)

刊名:

天津大学学报

英文刊名:JOURNAL OF TIANJIN UNIVERSITY

年,卷(期):2011,44(4)

参考文献(13条)

1.Michael H;David L Writing Secure Code 2003

2.陈火旺,王戟,董威高可信软件工程技术[期刊论文]-电子学报 2003(z1)

3.Li X;He K A unified threat model for assessing threat in web applications 2008

4.Chris W;Lucas N;Dino D Z The Art of Software Security Testing:Identifying Software Security Flaws (Symantec Press) 2006

5.Ryser J;Giinz M A scenario-based approach to validating and testing software systems using statecharts 1999

6.Thomas A A;Debra J R;Thomas A S Scenarios,state machines and purpose-driven testing 2005

7.Tsai W T;Saimi A;Yu L Scenario-based objectoriented testing framework 2003

8.Mouratidis H;Giorgini P Security attack testing (SAT)-testing the security of information systems at design time 2007(08)

9.Wang L;Wong W;Xu D A threat model driven approach for security testing 2007

10.陈小峰可信平台模块的形式化分析和测试[期刊论文]-计算机学报 2009(4)

11.Aurum A;Petersson H;Wohlin C State-of-the-art:Software inspections after 25 years 2002(03)

12.Russell S;Norvig P Artifical Intelligence:A Modern Approach 2002

13.Whittaker J A;Thompson H How to Break Software Security:Effective Techniques for Security Testing 2003

本文读者也读过(7条)

1.刘龙霞.吴军华.LIU Long-xia.WU Jun-hua基于UML活动图的Web应用测试用例生成[期刊论文]-江南大学学报(自然科学版)2011,10(3)

2.缪淮扣.陈圣波.曾红卫.MIAO Huai-Kou.CHEN Sheng-Bo.ZENG Hong-Wei基于模型的Web应用测试[期刊论文]-计算机学报2011,34(6)

3.李玉.钱雪忠.LI Yu.QIAN Xue-zhong启发式遗传算法求解两两组合测试用例集[期刊论文]-计算机工程与设计2011,32(5)

4.李磊芳.徐宝文.陈振宇.章晓芳.董国伟一种新的布尔规格测试用例生成算法[期刊论文]-东南大学学报(自然科学版)2010,40(2)

5.刘新娥.刘宗昌.LIU Xin'e.LIU Zongchang基于同心圆模型的测试用例管理方法[期刊论文]-计算机工程与应用2011,47(7)

6.许蕾.陈林.徐宝文.XU Lei.CHEN Lin.XU Bao-Wen用户需求驱动的Web服务测试[期刊论文]-计算机学报2011,34(6)

7.王俊杰.沈湘衡.张波.权巍.陈磊.WANG Jun-jie.SHEN Xiang-heng.ZHANG Bo.QUAN Wei.CHEN Lei环境参数与状态参数融合的测试用例集约简方法[期刊论文]-光学精密工程2009,17(7)

引用本文格式:何可.李晓红.冯志勇.AARON Marback.HE Ke.LI Xiao-hong.FENG Zhi-yong.AARON Marback基于攻击场景的安全测试生成方法[期刊论文]-天津大学学报 2011(4)

相关文档
最新文档