APP下载

基于安全控制点的软件安全

2016-09-04吴海燕戈金钟

中国建设信息化 2016年8期
关键词:安全漏洞控制点生命周期

文|吴海燕 戈金钟

随着网络的普及,目前几乎所有的信息化应用都是基于网络的,软件技术主要包括C/S、B/S两类。近年来随着服务器硬件技术、网络技术的发展,B/S应用以其开放性、通用性、灵活性的优点,逐步占据了信息化应用开发技术的主流地位。随着web应用的普及,web应用也成为了黑客攻击的首选目标,但是,不容乐观的是,目前各类web应用的安全性并不高。

根据360发布的《2015年中国网站安全报告》,2015年全年360网站安全检测平台共扫描各类网站231.2万个,其中,存在安全漏洞的网站为101.5万个,占扫描网站总数的43.9%,存在高危安全漏洞的网站共有30.8万个,占扫描网站总数的13.0%。2015年(截至11月18日)补天共收录的各类网站漏洞总数为37943个,平均每月3161个。其中,高危漏洞占比为71.2%;从漏洞性质上看,事件型漏洞占86.3%,通用型漏洞占比13.7%。

在此背景下,信息系统所面临的安全威胁也从网络和系统层面的攻击上移到应用层面,近年来频发的web应用被攻击的安全事件,也验证了信息安全的重点上移的趋势。网络或者系统层面的安全问题通常可以通过打补丁或者使用成熟的安全设备(如防火墙)来解决,与之相比,应用安全问题更难以处理,而且往往要花费昂贵的代价。

考虑到web应用是目前信息系统的主要应用类型,本文将以web应用为例,对信息系统的安全开发方法进行探讨。

Web软件安全威胁

开源Web应用安全计划(Open Web Application Security Project,OWASP)是一个致力于对抗不安全的Web应用软件的非营利组织,在Web应用安全方面做了很多工作。随着存在安全隐患的Web应用程序数量的增长,OWASP也总结出了Web应用程序的十大安全漏洞。在这个10大安全漏洞中,不但包括了Web应用程序的脆弱性介绍,还包括了OWASP的建议内容,帮助程序开发人员和企业尽量避免这些脆弱点给企业系统带来的风险。下面列举了2013年版的OWASP十大安全漏洞。

注入式攻击。Web应用可能使用许多外部系统,比如系统调用、SQL database和模版系统。Web 应用使用这些程序时往往要传入参数。恶意代码可以通过参数传给解释程序,然后被执行。

失效的账户和session管理。会话令牌,比如密码、钥匙和会话cookies需要得到保护,否则认证机制形同虚设。

跨站点脚本攻击。浏览器执行来自站点的代码,比如javascript、 fl ash等。攻击者将可执行的恶意代码脚本作为输入的一部分传给Web应用,这些脚本然后在其他用户的浏览器中运行,从而对使用它的其他用户造成损害。造成的结果是盗取会话令牌,攻击机器或者哄骗用户。

不安全的直接对象引用。当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控 这些引用去访问未授权数据。

不安全的配置管理。网站和应用程序服务器有许多安全相关的配置选项给服务器带来的潜在的危险。

敏感信息泄露。许多Web应用程序没有正确保护敏感数据,如信用卡,身份验证凭据等。

失效的访问控制。很多站点的访问控制策略过于复杂或者实现不当。攻击者可以看到自己本不应当看到的内容,并且提高自己的权限。通过正确的实现访问控制,确保用户只能看到自己有权限看到的东西。

跨站请求伪造(CSRF)。一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求发送到一个存在漏洞的web应用程序。这就允许了攻击者迫使用户浏览器向存在漏洞的应用程序发送请求,而这些请求会被应用程序认为是用户的合法请求。

使用含有已知漏洞的组件。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。

未验证的重定向和转发。Web应用程序经常将用户重定向和转发到其他网页和网站,并且利用不可信的数据去判定目的页面。

软件安全保障方法研究

如果待web应用开发完成后才着手考虑安全问题,那么消耗的代价是巨大的,只能取得事倍功半的效果,业界一直认可的做法是在将安全考虑嵌入到整个软件开发生命周期,也就是 secure Software Development Life Cycle(S SDLC)的方法。EDUCAUSE的SECURITY INITIAL的应用安全建议提出了web应用安全开发的8个步骤,包括规范建设、人员培训、安全需求分析、确定组织安全角色、将安全作为开发或者购买软件的必需环节、应用实施、运行维护、应用终止。美国国家标准技术研究院(National Institute of Standards and Technoligy ,NIST)的标准规范文件从应用的启动、需求、开发、部署、运行几个阶段提出了相应的安全建议。微软提出了安全软件开发生命周期的方法。

这些标准和建议是很有借鉴意义的,但过于复杂,在信息化过程中完全实现是不现实的。为此,美国的GaryMcGraw教授提出了基于安全接触点的软件安全的工程化方法,Gary McGraw博士总结出了七个接触点,即代码审核、体系结构风险分析、渗透测试、基于风险的安全测试、滥用案例、安全需求和安全操作。无论采用什么样的软件开发方法学,你都可以将这些接触点应用到你的开发生命周期中,而不需要完全改变你的软件开发生命周期。这些接触点从“黑帽子”(攻击和破解)和“白帽子”(防御和保护)两个方面综合地考察软件开发中可能出现的问题,结合了它们的开发生命周期就成为“安全的”开发生命周期。“安全的”开发生命周期能够在每一个开发阶段上尽可能地避免和消除漏洞,同时又保留了你熟悉的工作方式。

基于安全控制点的软件安全保障方法

这些标准和建议是很有借鉴意义的,但过于复杂,在信息化过程中完全实现是不现实的。而且这些流程都由国外的组织提出,并没有考虑中国关于信息系统安全保护相关的标准和法律法规。因此我们结合自己的经验提出了适合中国信息化发展阶段特点的、基于安全控制点的软件安全保障方法,基于安全控制点的软件开发流程,流程模型如图1所示。

在此流程中,我们在信息系统生命周期的五个阶段分别设置了安全控制点并建立了所需的技术和管理规范:

立项阶段。立项阶段的主要任务是明确信息系统的安全保护等级,以便根据信息系统的重要性实施分等级的安全防护。参考规范是《信息系统分级规范》。

设计阶段。设计阶段的主要任务是明确信息系统的安全需求,设计相应的安全防护措施。信息系统的安全需求来自于两个方面。一方面是来自于对于相应级别的信息系统的规范要求,目前主要是等保的相关要求及校内规范的要求,另一方面来自于信息系统本身的一些特殊的风险和安全需求。建议建立技术规范,如《软件安全技术规范》、《软件安全准入规范》等,作为此阶段的参考规范。

图1 高校信息系统生命周期安全管理流程

开发阶段。开发阶段可通过程序员培训、制定安全编码规范、开发常用的安全控件等方法提升代码质量,也可以在开发阶段引入单元检查、代码扫描等安全工具,及早发现bug,进行代码修补,提高修补效率、降低修补成本。

上线实施阶段。此阶段主要的安全控制点是上线前的安全检查,参考规范是《软件安全技术规范》、《软件安全准入规范》等。通过安全检查的应用才允许投入运行。

运行阶段。在系统运行阶段,安全管理员会定期进行应用安全扫描,发现高危漏洞后会反馈给项目负责人进行漏洞修复。在系统运行阶段,安全管理员会随时进行漏洞跟踪,发现应用使用的控件、框架等出现安全漏洞需要修复时,会及时将漏洞信息反馈给项目负责人进行漏洞修复。

猜你喜欢

安全漏洞控制点生命周期
全生命周期下呼吸机质量控制
顾及控制点均匀性的无人机实景三维建模精度分析
基于模糊测试技术的软件安全漏洞挖掘方法研究
探析计算机安全漏洞检测技术
从生命周期视角看并购保险
民用飞机全生命周期KPI的研究与应用
试论安全漏洞检测技术在软件工程中的应用
智能设备安全漏洞知多少
企业生命周期及其管理
NFFD控制点分布对气动外形优化的影响