IT运维管理,创造商业价值!
中国IT运维网首页 | 资讯中心 | 运维管理 | 信息安全 | CIO视界 | 云计算 | 最佳案例 | 运维资源 | 专题策划 | 知识库 | 论坛

应用程序威胁气势汹汹 六大策略助您制胜

2012年04月12日
TechTarget中国/茫然

 

安全损害给企业带来的消极影响巨大且深远。例如,企业有可能会消耗大量的时间和努力来修复系统、打官司及恢复声誉等。在涉及到安全问题时,企业需要做的功课还很多。

许多IT的决策者倾向于将其安全工作的重点几乎完全放在了网络外围。他们忽视了每天都在运行着其日常业务的应用程序,这些操作可以使客户和厂商与内部系统发生交互。这些应用程序往往与信用卡、个人身份信息等有密切的关联,容易被攻击者利用。

但仅仅重视基础架构和应用程序级的安全功能是不够的。企业还必须考虑其设计和实施中的缺陷。搜索企业应用程序内部的安全缺陷的黑客常常能够发现这些缺陷,因而能够不受限制地访问硬件、操作系统和应用程序与其进行交互的数据。事实上,多数安全损害都是由应用程序造成的。

企业等待解决安全问题的时间越长,其代价就越高昂。因为每个应用程序都可能包含安全缺陷,因而尽早地确认和减轻这些缺陷可以为企业节省大量的金钱。所以,不应当忽视或拖延应用程序的安全问题。

有些公司也能够理解应用程序的安全风险,并且为使风险最小化还分配了责任。建立首席信息安全官(CISO)这个角色的目的就是如此。企业应当为每个应用程序的开发小组都指派一个安全专家,确保所有的开发者都可以轻易地访问应用程序的安全问题的解决方法,这应当成为一种常识和惯例。

然而,确认安全漏洞的方法有着很大的不同。例如,在渗透测试中,软件从网络的外部模仿黑客的行为,而且这种测试还可以由“白帽”黑客手工突破应用程序的安全性,对软件测试起到补充作用。很不幸的是,渗透测试的效用是很有限的。在测试结束时,它只能发现问题,并不是解决问题,而且也不能保证发现所有潜在的问题。所以国外有人将“渗透测试”戏称为“恶劣状态指示器”。

还有些企业通过Web应用程序防火墙来解决应用程序的安全问题。这种设备可以监视进出应用程序的通信,进而分析并阻止通信中的异常。这种技术在实际使用时可能会面临困难,因为所发现的异常模式有可能实际上是合法通信。

为保证数据的安全,健全的方法必须能够检查应用程序的内部运作,能够发现产生安全漏洞的代码在哪一行。该方法需要在代码级别上解决这些漏洞。最后,该方法必须用一种全面的防御策略来应对风险因素。

作为一位首席信息安全官,应当采取哪些措施来避免安全危害呢?

一、发现并评估潜在的漏洞

1、对所有的应用程序实施风险管理方法

对所有企业来说,这个阶段的首要一步是部署一种能够创建每个应用程序的最新特征(这包括版本号、更新、补丁、当前配置等)的资产管理系统。这种信息可以与已知的漏洞建立关联,并可以跟踪必要的更改。这种信息还支持应用程序的风险等级排队,并且为保护应用程序的安全,还需要确定为此付出的努力的优先顺序。

2、确认与某个特定应用程序进行交互的所有应用软件进程。

检查端到端的应用程序的数据流,确认每个应用程序与其它应用程序、硬件或数据发生交互的点。这些点最有可能成为攻击者的目标。必须注意,应用程序组件,如web2.0组件、面向服务的架构、开源库、老系统等都常常用于新开发的应用程序内部,并有可能成为数据流的一部分。知道这些组件在哪里,并知道每个组件中会发生什么,就可以更轻松地分析数据和操作通过的路径。

3、区分漏洞的优先顺序

上述步骤会产生一个需要解决的多种漏洞的清单。不要从小漏洞开始,应当优先考虑对企业运营和战略最有可能产生潜在影响的漏洞。虽然你可以也应当使用这个漏洞清单作为下一步的行动指南,但这些漏洞仅仅代表许多企业需要马上就解决的一部分问题。系统性的问题来自于开发过程。许多正在使用中的老应用程序常常易于遭受攻击。
 

二、培养风险意识和解决问题

1、向相关人员发出风险警告及补救的需要

仅仅告知相关人员:应用程序的安全是整个信息安全的一个关键组成部分,这是远远不够的。他们需要理解不安全的应用程序威胁企业的特定方面及其潜在后果:损害客户信息、违规、丢失客户、影响销售等。安全专业人员要教育IT人员,特别是要教育应用程序的所有开发者,发现并解决安全漏洞。

2、教育开发人员

修复错误的最佳方法是一开始就不犯错误。不幸的是,多数培训机构(包括大学)都没有教育程序员如何安全地编程。用高效的教育方法,向软件的开发人员展示其代码中的漏洞,就可以强调在开发周期的多个时点上审计和测试源代码的重要性。

3、强化内部人员的安全意识

企业可使用海报、T恤衫、重要会议等方式来强化安全意识,要求开发人员的安全培训能够传递保障应用程序安全的概念和重要性。在安全有重要影响的企业中,安全也是性能评估过程的一部分。

三、创建并部署、配置应用程序安全功能

1、制定保障应用程序环境安全的要求

企业必须从明确定义的要求开始。每一个应用程序以及应用程序环境都要作为一个整体,必须包含能够将预防、检测和纠正问题作为一个安全整体的特性,必须包含防止安全损害的能力,必须在用户无法防止时能够检测安全损害,并能够补救由于未检测到的威胁所造成的任何损害。

2、为应用程序制定多层安全访问控制机制

当今的应用程序不能仅靠口令来保障其安全。新的认证方法可以使公司领先于黑客社团的有组织犯罪,而深度防御是应对日渐猖獗的间谍软件一种好方法。关于深度防御,本人在日后的文章中将深入阐述。

3、将防止、检测、修复安全损害的功能纳入到已经购买的、外包的、内建的或其它来源的应用程序中

首先,购买的应用程序往往包含自己的防御和检测功能,却很少包括修复和恢复功能。应向开发人员或厂商要求已知漏洞的补丁,并要知道已经应用了哪些安全补丁。在签订任何合同之前,要求加入一条必须对任何确认的漏洞立即打补丁的条款,还要规定相应的违约责任。

其次,外包的应用程序通常也包含安全功能,但未必满足公司的所有需求。你必须批判地分析这些功能,并用内部开发的方案或插件来补充。对于已经为公司定制的外包应用程序,你必须确保该程序能够与客户端身份管理系统或其它访问控制机制相集成。

第三,内部开发的应用程序必须根据已经认可的可用组件并包含防御、检测、纠正等功能。所有的内部开发人员必须对每一个应用程序使用同样的安全组件,以确保连续性并使创建的代码数量最少化。必须在多个时点上在多个应用程序之间测试这些可用组件,以确保跨应用程序的安全性。

第四,开源软件必须与内建软件一样遵循同样的规则,内部的开发人员要能够影响可用组件的创建和可用性。开发人员最好是开源社区的一部分,只有这样他们才能参与到确认安全问题并针对漏洞打补丁的过程中。

4、在打补丁或编码后,要测试修复程序,以确保该过程能够解决漏洞及其根源。

在应用了补丁后,要执行压力测试,检查整个系统的安全性而不仅仅是检查补丁是否正常工作。例如,假设你的登录功能有一个漏洞,其中的系统能够将口令中的星号(*)当作是一个通配符,从而可以使任何人都可以访问系统。在常规测试中,开发人员要增加一个补丁程序,用星号测试大量的口令,确保系统不会将星号当作通配符,然后再把打了补丁的软件投入到实际的工作(生产)环境中。而在压力测试中,开发人员必须测试每一类用户名和口令,确保系统不会将某个其它符号当作一个通配符。

发表评论请到:http://bbs.cnitom.com

相关阅读

图文热点

Power架构产品创新 IBM推动其本土化发展
Power架构产品创新 IBM推动其本土化发展自从1990年,IBM推出基于RISC系统的新产品线RS/6000(现称eServer p系列)之后,...
WAF:高校Web应用安全守护者
WAF:高校Web应用安全守护者最近几年高校网站被攻击的事件时有发生,造成了不良影响,因此越来越多的高校开始...

本类热点