DoSECU 安全分析 3月6日消息:安全应用软件安全是所有软件研发过程中的关键部分,它包含了软件研发周期内为了防止程序缺陷所采取的所有步骤。那些可能存在于应用软件需求,设计,研发,配置,升级或者维护环节中的瑕疵都可能成为招致网络攻击的漏洞。
应用软件中如果缺少能应对程序漏洞的安全措施就会为黑客制造可趁之机,就可能因为数据泄露和知识产权被盗导致巨额的经济损失。这就是为什么说安全是应用软件研发领域中不可或缺的部分,"敏捷流程"也不例外。
"敏捷流程"据称可以追溯到2001年11月。这种软件研发的方法在最近几年引起了大家的关注。"敏捷流程"主要集中在反复求证和按照用户需求的企业目标去灵活的进行软件研发。也就是说,"敏捷流程"的基本特性就是在企业功能建立以后安全就算大功告成。笔者还发现很多时候安全都没有被包括在最初功能的设计中,从而让敏捷安全容易被忽视。
在检验应用软件安全的问题上,笔者将他们归纳为两个范畴–企业逻辑缺陷和技术漏洞。安全应该是应用软件研发的应有的特性而不是留到最后才被提起已经是业界公认的事实。这也让应用软件研发使用敏捷方法时面临挑战,敏捷流程还会在在应用软件的适应性上引起较大的争议,因为这会涉及敏感的安全信息或者为其他系统提供隐蔽路径的应用程序。
许多人认为敏捷流程不适用于安全敏感型应用软件。最初主要是由于敏捷流程非正式,随意性等自身特点。安全必须是内置的,不能事后弥补,所以应用软件必须与敏捷流程相结合。
必须在项目开始之前部署安全措施。安全战略和目标必须从头开始构建。然后在项目定义的步骤中,还必须建立高水平的安全需求和目标以及研发团队的文件和联系方式。一旦我们为安全设置奠定好这些基础,我们就必须评估满足这些目标要做些什么工作。在规划和评估的环节中,必须有足够的时间根据需求的发展来重新评测和提炼这些安全需求和目标。安全评估完成后的步骤是说明评估结果的级别,高水平的安全计划还在发展之中。当你正在致力于这些高水平安全计划的研发时,你必须建立能在每个点上评估安全措施的安全协调机制,确保每项措施都安排的当。目前基础已经建立,我们可以在Sprints中向安全迈进了。
研发的第一个步骤是为每个定义研发能力类型的Sprints确立主题。因为每个Sprints的主题都很明确的,在研发过程中安全执行的程度会被发现和记录在案。Stubbing是一种能允许部分应用软件在无需完整功能性编译的情况下进行研发的技术。它对于捕捉与安全有关的细节上也非常重要。
因为安全需求未被涉及,用户需要自行决定是否将安全性能包括在内,将他们植入稍后必须建立的Sprints中。对这种决策最显著的影响是软件是否能被配置,并且在安全风险发生或者涉及敏感信息时被激活。
如果决定配置这种类型的软件,安全就必须作为Sprints的组成部分来进行创建和测试。如果不配置软件,stubbing或者推迟配置也是两项可行的选择。反复研发从这点开始。软件会作为演示版和用户预排代码来进行编译和经历初级的测试过程。这些测试案例和环节会对安全措施起到历练的作用。也就是说,与功能和特性有关的安全都必须进行演练和展示。必须给予测试和代码审核以足够的重视和关注以避免紊乱状况,交叉脚本,信息泄露和SQL注入等方面的漏洞。这四个代码编译问题通过过往的经验证明是网络应用软件中最常见的软件漏洞。一旦完成了基础测试,软件就可以被移植到模拟配置环境中。
作为Sprint组成部分来交付的软件可以被安装在具有代表性的应用环境中。从很大程度上来说配置环境与运行环境是完全不同的。运行环境可能会导致软件发生运行问题和安全事故。所以需要进行模拟生产环境的配置来解决这些问题。所有使用的测试案例和环节之前都会形成衰退测试的基础。重新播放自动测试脚本来验证新环境中软件能否正常运行。另外也会产生新的测试脚本来从头到尾的全面测试软件,并对安全漏洞进行审核和测试。一旦所有的测试都成功完成,软件就可以推进到下一个阶段,而这个阶段也是用户可以接受这款软件的基础。
在这个阶段,作为Sprint组成部分而交付的软件会进行演示,评估和校验,最终得到企业用户的认可或拒绝。这个阶段必须包括对安全的审核。因为用户有自己企业可接受的标准,他们也应该创建相应的安全认可标准。有可能被列入白名单或者黑名单,也可能什么都不是。附条件承诺就是标准。发起者将只能接受Sprint交付。接受条件得到确认后,重新编译就被列入日程。一旦规划完成,满足接受条件的重新编译工作就可以进行了。重新编译任务圆满完成并通过测试后,再交给企业用户进行审核和演示,以此来确保所有的接受条件都得到了满足。
吸取教训是收集,记录和分析Sprint期间收到的用户反馈的过程。这个步骤也是至关重要的,因为随后的Sprint能从前车之鉴中受益。而且从中吸取的教训还能让研发团队的成员有机会对Sprint期间执行的任务,事件和行动进行反省,这对克服安全缺陷是有好处的。除此之外,吸取教训还能风险管理执行过程重新审视,保证软件编译的成功和避免错误。
把到目前为止的所有软件研发步骤都放在一起进行验证。集成完成后,就必须通过验证流程来确保功能的正确运行。同时还需要在短期内对软件进行监控和跟踪来确保所有的软件和系统组件都能正常的配合运行,而且不会产生安全漏洞。系统间的互联必须从安全的角度进行测试。在这个阶段需要对新的安全测试环节进行研发和完成。
另外正如我们之前所讨论的,在测试阶段需要格外关注交叉脚本,信息泄露和SQL注入。一旦每个环节都能完好运转并且安全无误,那么这款软件就可以放到生产环境中运行了。Release Management是所有软件研发方法和计划中相对新鲜的组成部分。Release Management是所有的业务单元和IT部门之间的纽带。最后软件研发过程就到达了下一个Sprint。这个步骤正式宣布Sprint的结束。除此之外,这个阶段还会产生项目说明,保证代码的正确归档,记录和备份。有时这个阶段还需要根据安全监控流程和企业需求做出改动。
结论
由于大量敏感信息安全缺口事件频频发生,让安全领域将2008年视为"数据丢失年"。National Intelligence的总监丹尼斯.布莱尔在国际性会议上坦言,去年全球企业由于数据被盗导致的知识产权损失可能超过了1万亿美元。软件漏洞是招致数据泄露频发的罪魁祸首之一。安全涉及到应用软件研发方法的每个环节和每个人员。也应该被视为确保安全的敏捷研发流程的警告。