最新应用安全评估方法资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1.1应用安全评估
应用评估概述
针对企业关键应用的安全性进行的评估,分析XXX应用程序体系结构、设计思想和功能模块,从中发现可能的安全隐患。全面的了解应用系统在网络上的“表现”,将有助于对应用系统的维护与支持工作。了解XXX应用系统的现状,发现存在的弱点和风险,作为后期改造的需求。本期项目针对XXX具有代表性的不超过10个关键应用进行安全评估。
在进行应用评估的时候,引入了威胁建模的方法,这一方法是一种基于安全的分析,有助于我们确定应用系统造成的安全风险,以及攻击是如何体现出来的。
输入:
对于威胁建模,下面的输入非常有用:
⏹用例和使用方案
⏹数据流
⏹数据架构
⏹部署关系图
虽然这些都非常有用,但它们都不是必需的。但是,一定要了解应用程序的主要功能和体系结构。
输出:
威胁建模活动的输出结果是一个威胁模型。威胁模型捕获的主要项目包括:
威胁列表
漏洞列表
应用评估步骤
五个主要的威胁建模步骤如图 1 所示。
图1
我们把应用系统的安全评估划分为以下五个步骤:
1.识别应用系统的安全目标:其中包括系统业务目标和安全目标。目
标清晰有助于将注意力集中在威胁建模活动,以及确定后续步骤要做多少工作。11
2.了解应用系统概况:逐条列出应用程序的重要特征和参与者有助于
在步骤 4 中确定相关威胁。
3.应用系统分解:全面了解应用程序的结构可以更轻松地发现更相
关、更具体的威胁。
4.应用系统的威胁识别:使用步骤 2 和 3 中的详细信息来确定与您的
应用程序方案和上下文相关的威胁。
5.应用系统的弱点分析:查应用程序的各层以确定与威胁有关的弱
点。
步骤1:识别安全目标
业务目标是应用系统使用的相关目标和约束。安全目标是与数据及应用
程序的保密性、完整性和可用性相关的目标和约束。
以约束的观点来考虑安全目标利用安全目标来指导威胁建模活动。请考虑这个问题,“您不希望发生什么?”例如,确保攻击者无法窃取用户凭据。
通过确定主要的安全目标,可以决定将主要精力放在什么地方。确定目标也有助于理解潜在攻击者的目标,并将注意力集中于那些需要密切留意的应用程序区域。例如,如果将客户帐户的详细信息确定为需要保护的敏感数据,那么您可以检查数据存储的安全性,以及如何控制和审核对数据的访问。
业务目标:一个应用系统的业务目标应该从如下几个方面入手进行分析:
⏹信誉:应用系统发生异常情况以及遭到攻击造成的商业信
誉的损失;
⏹经济:对于应用系统,如果发生攻击或者其它安全时间造
成的直接和潜在的经济损失。
⏹隐私:应用系统需要保护的用户数据。
⏹国家的法律或者政策:例如:等级化保护要求、SOX法案
等。
⏹公司的规章制度。
⏹国际标准:例如:ISO17799、ISO13335等。
⏹法律协议。
⏹公司的信息安全策略。
安全目标:一个应用系统的安全目标应该从如下几个方面入手进行分析:
⏹系统的机密性:明确需要保护哪些客户端数据。应用系统
是否能够保护用户的识别信息不被滥用?例如:用户的信息被盗取
用于其它非法用途;
⏹系统的完整性:明确应用系统是否要求确保数据信息的有
效性。
⏹系统的可用性:明确有特殊的服务质量要求。应用系统得
可用性应该达到什么级别(例如:中断的时间不能超过10分钟/
年)?根据系统可靠性的要求,可以重点保护重点的应用系统,从
而节约投资。
通过访谈的方式确定应用系统业务目标和安全目标,对业务目标和安全目标进行细化,得到应用系统安全要求。
输入:访谈备忘录
输出:应用系统业务目标、安全目标和安全要求。
在本步骤中,概述应用系统的行为。确定应用程序的主要功能、特性和客户端。
创建应用系统概述步骤:
⏹画出端对端的部署方案。
⏹确定角色。
⏹确定主要使用方案。
⏹确定技术。
⏹确定应用程序的安全机制。
下面几部分将对此逐一进行说明:
画出端对端的部署方案:
画出一个描述应用程序的组成和结构、它的子系统以及部署特征的粗略图。随着对身份验证、授权和通信机制的发现来添加相关细节。
部署关系图通常应当包含以下元素:
⏹端对端的部署拓扑:显示服务器的布局,并指示Intranet、
Extranet 或 Internet 访问。从逻辑网络拓扑入手,然后在掌握详细信
息时对其进行细化,以显示物理拓扑。根据所选的特定物理拓扑来
添加或删除威胁。
⏹逻辑层:显示表示层、业务层和数据访问层的位置。知道物
理服务器的边界后,对此进行细化以将它们包括在内。
⏹主要组件:显示每个逻辑层中的重要组件。明确实际流程和
组件边界后,对此进行细化以将它们包括在内。
⏹主要服务:确定重要的服务。
⏹通信端口和协议。显示哪些服务器、组件和服务相互进行
通信,以及它们如何进行通信。了解入站和出站信息包的细节后,
显示它们。
⏹标识:如果您有这些信息,则显示用于应用程序和所有相
关服务帐户的主要标识。
⏹外部依赖项:显示应用程序在外部系统上的依赖项。在稍
后的建模过程中,这会帮助您确定由于您所作的有关外部系统的假
设是错误的、或者由于外部系统发生任何更改而产生的漏洞。
随着设计的进行,您应当定期复查威胁模型以添加更多细节。例如,最初您可能不了解所有的组件。应根据需要细分应用程序,以获得足够的细节来确定威胁。
确定角色:
确定应用程序的角色:即,确定应用程序中由谁来完成哪些工作。用户能做什么?您有什么样的高特权用户组?例如,谁可以读取数据、谁可以更新数据、谁可以删除数据?利用角色标识来确定应当发生什么以及不应当发生什么。
确定主要的使用方案:
确定的应用程序的主要功能是什么?它可以做什么?利用应用程序的用例来获得这些信息。确定应用程序的主要功能和用法,并捕获Create、Read、Update 和 Delete 等方面。
经常在用例的上下文中解释主要功能。可以帮助理解应用程序应当如何使用,以及怎样是误用。用例有助于确定数据流,并可以在稍后的建模过程