软件测试技术在电力系统安全防护中的应用

时间:2022-05-17 11:04:15

软件测试技术在电力系统安全防护中的应用

电力监控系统安全防护是保障电网安全稳定运行的必要措施,为提高电力监控系统的安全防护能力,本文在分析电力监控系统安全防护现状的基础上,分析了应用系统层面的安全测评中存在缺乏安全性测评标准、测评手段有限和现有测试工具无法直接用于测评在线生产系统等问题。针对这些问题,本文提出将软件测试方法应用于应用系统测试的技术方案,分别是通过搭建模拟环境进行自动化的动态测试,以及对应用系统源代码进行静态测试。通过二者的有机结合,可以有效的发现应用系统中的缺陷,及早采取有效措施避免电力生产中软件缺陷导致的事故和不良后果,从而保障电网的安全稳定运行。

【关键词】电力监控系统 安全防护 信息安全 等级保护测评 软件测试

1 背景

随着世界经济形势和能源格局的悄然变化以及通信与信息技术的飞速发展,电网这一现代人造网络也发生着新的变化。由于能源需求节节攀升,新能源不断接入,电网规模日益扩大,资源优化配置的能力得到了有效提升;利用现代化的通信与信息技术,电网的各个系统之间能够有效互联,大大提高了电网的智能程度。但在规模不断扩大、智能化不断提高的同时,电网的安全运行也面临着新的挑战。这是因为庞大的电网规模增加了电网运行与控制的复杂程度,而开放互联的结构增加的电网各系统之间的耦合度,也增加了系统受到攻击的风险,给监控系统的安全防护增加了难度。

电力监控系统,是指用于监视和控制电力生产及供应过程的、基于计算机及网络技术的业务系统及智能设备,以及作为基础支撑的通信及数据网络等。为贯彻落实公安部、国家电力监管机构对电力监控系统的安全防护要求,遵照国家信息系统等级保护的相关要求,电力监控系统的安全性测评包括二次安防整体安全、网络整体安全、交换/路由安全、防火墙安全、操作系统安全、数据库安全、应用系统安全、物理安全和数据管理安全共9个类别的测评内容,从不同的维度规定了电网监控系统安全防护的标准。

在这些维度中,应用系统安全是一个值得关注的内容。电力监控系统的应用系统安全直接关系电力生产的安全,应用系统的缺陷完全可以导致大规模停电事故的发生。使用有效手段检测电力监控系统中的软件缺陷刻不容缓。如图1所示。

2 问题分析

软件缺陷是软件制品的属性,它通常是指程序中静态存在的所有与预期需求不符的问题。软件缺陷给系统运行带来的影响包括:会导致系统意外宕机等不稳定现象的发生,为恶意攻击者入侵及破坏系统提供通道。这些问题都可能成为电力安全生产的隐患。

目前的应用系统的安全测评主要存在以下几方面的问题:

2.1 缺乏安全性测评标准

目前,对国家的信息系统等级保护相关标准,以及电力行业监管部门的电力监控系统安全防护的规定中,对应用安全的检测内容尚不充分。应用安全的检测项目如图2所示,主要侧重于对软件身份鉴别、安全标记、访问控制等方面的功能性测试,以及对软件的配置(如:用户口令的配置)等进行检查,但是对软件自身的缺陷、安全漏洞等未有明确的检测标准。

2.2 测评手段有限

对于软件功能的检查,除部分测评项目能够实地通过使用软件检查外,另一些测评项只能通过访谈系统管理员或查看系统设计文档来了解。但由于系统管理员的知识水平不同、对系统的理解程度不同,以及文档缺失、文档未及时更新等原因,软件真实的功能特性、安全特性通常难以获知。

2.3 现有软件测试工具无法直接应用于电力监控系统

在软件测试领域,动态测试是工业界已采用的成熟的软件测试手段。动态测试是指通过在抽样测试数据上运行程序来检验程序的动态行为和运行结果,以期发现程序缺陷。基于黑盒的渗透测试,是目前广泛采用的软件安全性检测方法,其实质就是动态测试。采用自动化工具对软件进行渗透测试可能消耗大量的计算资源,使系统CPU及内存负载过高;同时,由于动态测试直接应用于正在运行中的被测系统,可能对系统的稳定性带来一定的风险。对于电力监控系统这种对稳定性、可靠性要求极高的系统,动态的自动化的测试手段可能会影响系统的正常运行,尤其对于处于生产控制大区的应用系统,这会妨碍生产的安全性,因此动态测试方法并不适合于直接应用在电力监控系统中。

综上所述,有必要对电力监控系统中的软件安全性的检测方法进行探讨。

3 软件测试技术在电力监控系统安全防护中的应用

软件自动化测试,通常是指使用自动化测试工具对软件进行测试的过程,这类测试一般不需要人干预。软件测试是发现软件缺陷的有效手段,按照是否需要执行程序,可以将软件测试方法分为动态测试和静态测试。动态测试需要运行程序,它的实施步骤通常包括:生成测试用例、运行程序和验证程序运行结果三个核心内容。静态测试是指不执行程序而寻找程序代码中可能存在的缺陷或评估程序代码的过程。静态测试包括主要由人工进行的代码审查、代码走查、桌面检查以及主要由软件工具自动进行的静态分析。

静态测试与动态测试方法各有优缺点。静态测试方法的分析对象通常是应用程序的源代码,不需要运行程序,因此不会影响被测系统的正常运行,它能够覆盖所有的执行路径,但是由于方法本身的近似性,分析过程中会包含一些不可达的路径,而给测试带来一些误报。动态测试方法是通过向应用程序输入数据、运行程序、观察运行结果的方式来进行测试,因此测试的覆盖率与输入的测试集有关,通常无法覆盖程序中的所有执行路径,而使得程序中的一些漏洞无法被检测出来,给测试结果带来影响。

根据上述分析,在电力监控系统的安全防护中,我们可以在以下几方面应用软件测试技术,发现电力监控系统中的安全漏洞。

3.1 搭建模拟环境,进行自动化的动态测试

由于对在线系统进行测试可能破坏电力监控系统的正常运行,因此可以通过搭建模拟环境的方法,对电力监控系统的应用进行测试。在测试环境中,可以使用自动的测试工具对应用进行安全性测试。这种方法的优点是,自动化测试工具的测试过程高效,人工干预较少,可以检测出应用软件中的漏洞。

渗透测试工具是目前应用最为广泛的动态测试工具,其原理是对于B\S架构的应用系统利用网页爬虫算法遍历网站的URL资源,识别每个URL的交互数据,对数据进行有针对性的变异并进行重放测试,根据返回结果判断安全问题。许多软件厂商都有针对各自技术研发出的渗透测试产品,如表1所示。

通过搭建模拟环境进行动态测试的方案,其缺点在于模拟环境可能与软件应用的真实环境存在差异,给测试结果带来影响,其差异包括以下几个方面:

(1)数据不同: 测试环境中的数据通常与真实数据不同,例如测试环境中用户口令、用户权限分配等业务数据。

(2)软件配置不同:如软件运行的操作系统、中间件版本不同。

(3)硬件环境不同:由于成本等因素,在测试环境下,通常难以按照真实应用环境中的硬件设置进行部署,例如:数据的发送端通常用模拟软件代替。

这些差异都可能导致模拟环境中测试结果与真实环境下的测试结果的不同。另外,随着Web2.0的发展,AJAX、Webservice等技术的广泛应用,如今的Web应用交互方式不再只通过URL进行交互,而是通过多种方式,所交互的数据格式也不尽相同,因此自动化工具可能无法适应这种交互方式,存在部分安全风险无法被自动工具检测到的情况,而导致漏报。因此,在实际测试中,还可以通过手工测试的方法,弥补自动测试的遗漏。

3.2 使用静态测试方法检测应用的源代码

通过静态检测应用的二进制代码或源代码,同样可以在不影响程序运行的情况下发现程序中的漏洞。

静态分析是在不运行软件的前提下进行分析的过程,分析的对象可以是源代码或目标代码,甚至是程序文档。静态分析技术种类繁多,其中基本的分析方法包括词法分析、语法分析、控制流分析、数据流分析等。控制流和数据流分析通常被用于程序缺陷检测、程序优化、程序安全性分析等各个方面。但是由于分析过程中对程序进行了一些抽象和近似,会导致分析结果不精确。例如路径的可达性分析:给定一条路径,判断是否有变量的初始取值,使得程序沿该路径执行。路径可达性分析问题在理论上是一个不可判定的问题,各种精度的数据流分析方法计算出的都是近似结果。为了提高分析的准确度,研究人员采用了数学上比较成熟的形式化方法,单独或与基本的程序分析技术相结合,对程序进行更有效的分析。其中具有代表性的技术包括模型检测、约束求解等。源代码分析工具如表2所示。

动态的程序分析技术通常从可执行程序开始,通过运行程序触发程序失效,通过可观察到的程序失效分析程序中的可疑代码,从而发现程序中的缺陷。动态分析能够利用程序的输入执行程序,获得更精确的结果。但它通常只分析对某一输入下的程序路径,而不能覆盖程序所有可能的执行情况。而静态程序分析,分析程序所有可能的执行路径,分析范围更加全面,更容易发现不易覆盖的程序路径中的缺陷。

4 结论

电力监控系统对应用软件的稳定性和安全性都有着极高的要求,将软件测试方法应用于这类系统,利用动态测试技术对模拟环境中的应用系统进行测试,利用静态测试技术对软件源代码进行测试,将动态测试与静态测试有机的结合起来,能够准确的发现电力监控系统中的缺陷,及早采取有效措施避免电力生产中软件缺陷导致的事故和不良后果,从而保障电网的安全稳定运行。

参考文献

[1]钟清.智能电网关键技术研究[M].北京:中国电力出版社,2011.

[2]李小平,钟宏,丁俨.关于应用系统安全的研究[J].北京理工大学学报(英文版),2002,11(2):198-202.

[3]王青.WU Shu-jian,李明树.软件缺陷预测技术[J].软件学报,2008,19(7):1565-1580.

[4]王升保.信息安全等级保护体系研究及应用[D].合肥:合肥工业大学,2009.

[5]范渊.应用层等级保护测评工具应用实例分析[J].信息网络安全,2012(z1):127-131.

[6]张健,徐宝文.软件测试(专辑前言)[J].计算机学报,2011,34(6):951-952.

[7]潘古兵.Web应用程序渗透测试方法研究[D].重庆:西南大学,2012.

[8]单锦辉,姜瑛,孙萍.软件测试研究进展[J].北京大学学报(自然科学版),2005,41(1):134-145.

[9]孟云秀,赵正旭.基于源代码分析的软件静态测试[J].河北省科学院学报,2013,30(2):16-21.

[10]张健.精确的程序静态分析[J].计算机学报,2008,31(9):1549-1553.

[11]安金霞,王国庆,李树芳.基于多维度覆盖率的软件测试动态评价方法[J].软件学报,2010.

[12]蒲石.Web安全渗透测试研究[D].西安:西安电子科技大学,2010.

[13]杨宇,张健.程序静态分析技术与工具[J].计算机科学,2004,31(2):171-174.

[14]林惠民,张文辉.模型检测:理论、方法与应用[J].电子学报,2002, 30(z1):1907-1912.

[15]严俊.基于约束求解的自动化软件测试研究[D].北京:中国科学院软件研究所,2007.

作者简介

伍晓泉(1984-),女,工学博士,计算机软件与理论专业。主要研究方向为软件工程、电力系统自动化、电力系统信息安全。

作者单位

广东电网公司电力科学研究院 广东省广州市 510080

上一篇:电力作业接地线安全检测报警系统设计 下一篇:如何做好信息系统项目开发中的需求分析