摘 要:随着国家信息化建设的飞速发展,信息系统得到广泛应用,而针对信息系统的攻击也越来越普遍,安全事件时有发生,如何确保信息系统得到足够安全保障,系统符合上线运行条件,将成为一项重要课题。本文提出一套在信息系统上线前开展安全评测的方案,内容包括四个方面:代码安全审计、安全漏洞扫描、安全配置核查和渗透性测试,并给出判别信息系统上线安全标准。此方案能有效的检测出信息系统各层面隐藏的安全漏洞,并可以根据安全标准得出是否符合上线运行的结论,有力的保障信息系统上线运行安全。
关键词:安全评测;信息安全;安全漏洞;信息系统上线
中图分类号:TP309.2 文献标识码:A
1 引言(Introduction)
随着信息技术的飞速发展,信息化建设越来越受到国家的重视,各种各样的信息系统得到广泛应用,信息系统给我们带来工作便利的同时,信息安全问题也不断涌现,信息安全事件时有发生。早在2006年,Gartner公司的调查报告显示,黑客攻击案例中有75%都是源于应用系统层面而非网络层面;同时数据显示,现今的信息系统都很脆弱,易受黑客攻击。
黑客攻击由网络层转向应用层,以应用系统为跳板入侵服务器甚至控制整个网络系统,危害十分严重。究其原因,主要是两个方面:一是各种应用程序的增多,这些应用程序存在很多的安全漏洞;二是用来进行攻击的黑客工具越来越多,黑客活动越发猖獗,经济利益的驱动尤为明显[1]。
信息系统上线前,确保信息系统得到足够安全保障,是否具备上线运行条件,如何开展信息系统上线前的安全评测,将成为一项重要的研究内容。
2 研究意义(Research significance)
开展信息系统上线前的安全评测,可以检测信息系统是否具有足够安全保障措施,断言信息系统是否具备上线运行的条件,能够促进信息安全防护能力和防护水平的提升,最大限度地预防和减少重大信息安全事件的发生。通过开展代码安全审计、安全漏洞扫描、安全配置核查和渗透性测试等评测工作,使得信息安全工作能够居安思危、防患于未然。通过测评工作的实施,深入分析信息系统中存在的安全风险与隐患,根据检查出的安全漏洞,进行安全加固,并在加固完成后进行回归测试,全面提升信息系统上线前的整体防护水平,保障信息系统上线后的整体安全性。
3 方案总体设计(The project of overall design)
信息系统上线前安全评测方案,主要由四部分组成:代码安全审计、安全漏洞扫描、安全配置核查和渗透性测试,如下图所示。其中,代码安全审计是代码层的评测手段,针对应用系统源代码进行安全扫描,找出隐藏在代码层面的安全漏洞;安全漏洞扫描,以应用层、主机层、网络层和数据层作为评测对象,找出潜在的安全漏洞;安全配置核查,以应用层、主机层、网络层和数据层作为评测对象,找出不合规的问题;渗透性测试,是信息安全人员模拟黑客攻击,用来发现信息安全防御体系中漏洞的一种常用方法。
图1 总体评测方案示意图
Fig.1 The diagram of the general evaluation scheme
4 评测方案详述(Evaluation scheme detailed)
4.1 代码安全审计
代码安全审计,是代码安全层面的评测手段,采用专业代码安全扫描工具,对软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则库进行全面地匹配和查找,从而将源代码中存在的安全漏洞扫描出来,并给出测试报告。扫描的结果中不但包括详细的安全漏洞的信息,还有相关的安全漏洞说明,以及修复意见等等。
代码安全审计,依据公共漏洞字典表(CVE)、OWASP十大Web漏洞,以及相关安全、设备、软件厂商公布的漏洞库,结合专业源代码扫描工具对各种程序语言编写的源代码进行安全审计。能够为客户提供包括安全编码规范咨询、源代码安全现状测评、定位源代码中存在的安全漏洞、分析漏洞风险、给出修改建议等。信息安全问题时刻都有新的变化,新的攻击方法层出不穷,黑客攻击的方向越来越侧重于利用软件本身的安全漏洞,例如SQL注入漏洞、跨站脚本漏洞、CSRF漏洞等,这些漏洞主要由不良的软件架构和不安全的编码产生。
开展代码安全审计能够降低源代码出现的安全漏洞,构建安全的代码,提高源代码的可靠性,提高应用系统自身的安全防护能力。代码安全审计能够帮助开发人员提高源代码的质量,从底层保障应用系统本身的安全,从早期降低应用系统的开发成本。
针对系统开发过程中的编码阶段、测试阶段、交付验收阶段、对各阶段系统源代码进行安全审计检测,利用数据流分析引擎、语义分析引擎、控制流分析引擎等技术[2],采用专业的源代码安全审计工具对源代码安全问题进行分析和检测并验证,从而对源代码安全漏洞进行定级,给出安全漏洞分析报告等,帮助软件开发的管理人员统计和分析当前阶段软件安全的风险、趋势,跟踪和定位软件安全漏洞,提供软件安全质量方面的真实状态信息。
依据源代码安全测评结果,对源代码安全漏洞进行人工审计,并依据安全漏洞问题给出相应修改建议,协助系统开发人员对源代码进行修改。
图2 代码安全审核工作流程图
Fig.2 The flow chart of code security audit work
4.2 安全漏洞扫描
信息系统的安全性主要取决于信息系统中最薄弱的环节,如何及时发现信息系统中最薄弱环节,如何最大限度地保证信息系统的安全,最有效的方式就是对上线前的信息系统进行漏洞扫描,及时发现并查找系统漏洞并及时进行修复。
安全漏洞扫描,就是使用专门的漏洞扫描工具对被测信息系统进行全面的安全漏洞扫描。应用漏洞扫描是脆弱性识别的重要手段,能够发现信息系统中存在的严重漏洞,针对扫描结果并结合人工验证,将发现的应用系统漏洞、主机操作系统漏洞、数据库漏洞、逻辑缺陷、弱口令、信息泄露等脆弱性问题[3],形成应用漏洞扫描报告,通过对漏洞的修补完善,避免对信息系统造成严重影响。
漏洞扫描技术,是检测远程或本地信息系统安全脆弱性的一种安全技术,通过与目标主机TCP/IP商品建立连接并请求某些服务,记录目标主机的应答,搜集目标主机相关信息,从而发现目标主机某些内在的安全弱点。安全漏洞扫描技术是一种网络安全性评估技术,可以快速、深入地对信息系统进行评估,漏洞扫描是对信息系统脆弱性的分析评估,能够检查、分析网络范围内的设备、网络服务、操作系统、数据库等的安全漏洞。从而,为信息系统是否能上线运行提供决策的支持。
漏洞扫描工具,是一种自动检测远程或本地信息系统的安全性弱点的程序。通过安全漏洞扫描,可以及时发现信息
系统的应用层、主机层、网络层和数据层的安全漏洞,从而在信息系统安全防护中做到有的放矢,及时修改安全漏洞。漏洞扫描工具的重要性在于把烦琐的漏洞检测工作,通过程序来自动完成,减轻了评测人员的工作量,缩短了检测时间,漏洞发现的更快。
4.3 安全配置核查
随着信息系统的规模不断变大,网络规模日益扩大,其生产、业务支撑系统的网络结构也变得越来越复杂。应用服务的数量和种类不断增多,一旦发生人员的误操作,或者采用系统的初始设置并忽略了安全配置的要求,就可能会影响到系统的正常运转。因此,各行业的信息系统需要建立一套基准安全配置标准。
安全配置核查,就是各行业根据自身信息系统的特点,针对网络层、主机层、应用层和数据层,建立符合本行业特点的安全配置项和操作规范,并形成标准。基准安全配置标准将形成详细配置检查表格和操作指南,为标准化的技术安全操作提供了框架和标准。
通过统一的安全配置标准来规范人员在信息系统上的操作,让配置核查有了检查默认风险的标杆,但是面对网络中种类繁杂、数量众多的设备和软件,完成合规性的系统配置检查和修复,成为一个费时费力的事情。安全配置检查及问题修复都需人工进行,对检查人员的技能和经验要求较高;做一次普及性的细致检查耗费时间较长,而如果改成抽查则检查的全面性就很差;自查和检查都需要登录系统进行,对象越多工作越繁琐,工作效率也不高;每项检查都要人工记录,稍有疏漏就需要重新补测。对自查或检查人员来说,需要花费大量的时间和精力来检查设备、收集数据、制作和配置核查报告,以识别不符合的安全配置项。
利用专业的安全配置核查工具进行基准评测,使得面对种类繁杂、数量众多的应用系统、操作系统及网络设备,可以进行快速、有效的配置核查,识别与安全配置和操作规范不符合的项目,以便进行整改并达到配置合规性的要求。安全配置核查工具,具有完善的安全配置专家库,涵盖了操作系统、网络设备、数据库、中间件、应用服务器等多类设备及系统的安全配置信息及加固建议。安全配置核查工具能够执行计算机的机器语言,自动进行安全配置检查,大大节省传统的手工安全配置检查的时间,并避免人工检查所带来的失误风险,同时能够出具详细的检测报告,提高检查结果的准确性和合规性,对信息系统是否符合上线运行条件提供了技术支持。
4.4 渗透性测试
渗透性测试,整体防御层面的评测手段,信息安全专家根据已掌握的安全漏洞,模拟黑客攻击方法,对信息系统进行非破坏性的攻击性测试,用来发现信息系统防御体系漏洞的一种常用方法。所有的渗透性测试,必须在书面明确授权和签署保密协议下进行。
渗透性测试的目的在于充分挖掘和暴露信息系统的弱点,从而了解信息系统所面临的威胁。渗透性测试工作是信息系统上线前安全评测工作的重要环节,同时也为风险评估提供重要的始参考数据。
渗透测试不同于其他三个评测层面,不是在已知系统上,对已知弱点进行排查,而是测试者模拟黑客,在未知系统中发现弱点,而且还要验证弱点,甚至还会挖掘出一些未知的弱点。渗透测试是其他三项评测内容的一种最好的补充。
另外,渗透测试的攻击路径及手段不同于常见的安全产品,所以它往往能暴露出一条甚至多条被人们所忽视的威胁路径,从而暴露整个信息系统的威胁所在。最重要的是,渗透测试最终的成功一般不是因为某一个信息系统的某项单一问题所直接引起的,而是由一系列看似没有关联而且又不严重的缺陷组合而导致的。在日常工作中,无论对信息系统进行怎样的传统安全检查工作,对于没有相关经验和技能的人员都无法将这些缺陷进行如此的排列组合从而引发安全漏洞,但安全专家却可以靠其丰富的经验和技能将它们进行串联并展示出来。所以,渗透性测试的结果对信息系统是否符合上线运行条件,可以提供决策支持。
5 信息系统上线标准(The on-line standard of the
information system)
信息系统是否具备上线运行条件,主要依照两项测试进行判别[4],第一项就是传统的信息系统验收测试,包括功能测试、易用性测试、可靠性测试、容错性测试、可维护性测试、性能测试和可移植性测试等等。第二项就是安全性测试,包括代码安全审计、安全漏洞扫描、安全配置核查、渗透性测试和安全性功能测试等等。本文重点阐述安全性测试部分,要对评测过程中发现的安全漏洞,进行等级划分。安全漏洞的概念,是指在计算机系统中硬件、软件及协议的具体实现或系统安全策略上存在安全方面的缺陷,从而使攻击者可以非法入侵系统或未经授权访问或破坏系统。漏洞可以按照其对受害信息系统的造成的破坏程度,划分为四个等级[5],从高至低如下所述:
一级漏洞:能够使恶意入侵者远程获得访问权限或管理员权限,从而控制整个信息系统,可以实现对信息系统中的数据进行非法访问、篡改和破坏。
二级漏洞:可以使恶意入侵者可以获得本地用户的非授权访问权限,如读写或执行信息系统上的非管理员用户文件。
三级漏洞:是指存在拒绝服务的漏洞,可以实现DDOS攻击,信息系统不能正常对外提供服务,用户不能对信息系统实现正常的访问。
四级漏洞:是指允许远程用户获取目标主机上的某些信息,但是不会对信息系统造成危害。
信息系统是否符合上线运行条件,主要依靠通过评测发现的漏洞的等级进行判断。原则上,信息系统要求完全没有一级、二级、三级漏洞,可以存在少量四级漏洞,即判定信息系统符合上线要求。各行业的各种信息系统情况也不尽相同,也要具体问题具体分析,如果存在少数一级、二级或三级漏洞,同时上线时间要求紧迫,就要对发现的漏洞进行风险评估,如果造成危害是属于可接受范围内的,也可以考虑系统上线,但是,发现的漏洞终归是要修复的,一定要在漏洞的“天窗”时间内完成修复,保证信息系统安全。
6 结论(Conclusion)
信息系统上线前,要开展哪些安全性评测,本文就此问题,提出了提出一套在信息系统上线前的安全评测方案。代码安全审计,保障了软件代码层面的安全;安全漏洞扫描,能够及时发现应用层、主机层、网络层和数据层的安全漏洞,保障信息系统安全;安全配置核查,保障了信息系统基准配置的安全性;渗透性测试,检验了信息系统的整体安全性和防攻击能力。最后,本文给出判别信息系统上线安全标准,依靠评测发现漏洞的等级进行判断,无一级、二级、三级,即可以考虑上线。本文所述方案能有效的检测出信息系统各层面的安全漏洞,并可以根据漏洞等级判别信息系统是否符合上线要求,有力的保障信息系统的运行安全。
参考文献(References)
[1] 杨云,刘君.WEB安全设计之道[M].北京:人民邮电出版社,
2009.
[2] Brian Chess,Jacob West.董启雄,等,译.安全编程代码静态分析
[M].北京:机械工业出版社,2008.
[3] 赵喜明.计算机网络安全与漏洞扫描技术研究[J].网络安全技
术与应用,2014(1):123-125.
[4] 陈威,季佳育,王刚.如何做好信息系统上线前安全测试[J].华
北电力技术,2011(12):42-46.
[5] 刘奇旭,等.安全漏洞等级划分关键技术研究[J].通信学报,
2012,33(Z1):79-86.
作者简介:
车翔飞(1992-),女,本科生.研究领域:信息安全.