首页 威胁和威胁建模

威胁和威胁建模

举报
开通vip

威胁和威胁建模威胁和威胁建模 威胁和威胁建模 在本单元中 威胁建模使得您可以对最可能影响系统的威胁进行系统地识别和评价。 威胁建模具有一种结构化的方法,该方法与随意应用安全特性的方式(这种随意的方式并不确切了解每种安全特性应对付的威胁是什么)相比更经济,也更有效。 阅读完本单元后,将威胁建模方法应用到 Web 应用程序中,您就可以根据您对应用程序缺陷的充分理解来识别和评价现存的威胁。有了这些信息,您就可以按照一定的逻辑顺序,利用适当的对策来处理现存的威胁,并从具有最大风险的威胁开始。 当 Web 应用程序向诸如 In...

威胁和威胁建模
威胁和威胁建模 威胁和威胁建模 在本单元中 威胁建模使得您可以对最可能影响系统的威胁进行系统地识别和评价。 威胁建模具有一种结构化的方法,该方法与随意应用安全特性的方式(这种随意的方式并不确切了解每种安全特性应对付的威胁是什么)相比更经济,也更有效。 阅读完本单元后,将威胁建模方法应用到 Web 应用程序中,您就可以根据您对应用程序缺陷的充分理解来识别和评价现存的威胁。有了这些信息,您就可以按照一定的逻辑顺序,利用适当的对策来处理现存的威胁,并从具有最大风险的威胁开始。 当 Web 应用程序向诸如 Internet、intranet 或 extranet 等非友善环境公开时,没有 100% 安全的系统。唯一可能的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是承认威胁的存在,减少或控制相关的危险。威胁建模使得您可以进行这种分析,并把资源集中到相关问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 上,使投资回报最大化。 目标 ? 使用本单元: ? 创建威胁模型。 ? 了解如何评价威胁以及如何使用 DREAD 模型。 ? 分解应用程序体系结构,找到其缺陷。 ? 找出并记录与应用程序相关的威胁。 应用于 Web 应用程序 如何使用本单元 本单元概述了能够找出并记录与应用程序相关的威胁的一般过程。要想充分利用本单元: ? 建立威胁建模的过程。如果没有现成的建模过程,就可以把本单元作为起点,在公司内介绍威胁建模的过程。如果已经有了建模过程,就可以把本单元作为参考用来进行比较。 ? 利用本手册的其他单元,熟悉最常见的威胁。阅读“威胁及对策”单元,它概述了网络、主机和应用程序级出现的常见威胁。 ? 有关网络特有威胁的更多信息,参阅“保护网络”单元中的“威胁与对策”。 ? 有关 Web 服务器、应用程序服务器和数据库服务器特有威胁的更多信息,参阅“保护 Web 服务器”、“保护应用程序服务器”,以及“数据库服务器”等单元中的“威胁与对策”。 ? 有关程序集、ASP.NET、服务组件、远程组件、Web 服务和数据访问的特有威胁的更多信息,参阅“构建安全程序集”、“构建安全的 ASP.NET 页和控件”、“构建安全的服务组件”、“构建安全的 Web 服务”、“构建安全的远程组件”,以及“构建安全的数据访问”等单元中的“威胁与对策”。 ? 开发威胁模型。先构建一个威胁模型,再在需要的时候进行开发。这是一项不断改进的工作。安全威胁在发展,应用程序也是如此。用一个文档来找出已知的威胁是什么,并且是如何处理它们的(或者没有处理),这样,您就可以控制应用程序的安全。 本页内容 开始之前 威胁建模的原则 第 1 步:标识资源 第 2 步:创建总体体系结构 第 3 步:分解应用程序 第 4 步:识别威胁 第 5 步:记录威胁 第 6 步:评价威胁 威胁建模之后该做何工作, 小结 其他资源 开始之前 开始威胁建模过程之前,理解下面的基本术语非常重要: ? 资源。重要资源,如数据库中或文件系统上的数据。系统资源。 ? 威胁。潜在事件,恶意的或其他性质的,可能会损坏或危及资源的安全。 ? 缺陷。系统在某方面的弱点或特性,它有可能造成威胁的发生。网络、主机或应用程序级都可能存在缺陷。 ? 攻击(或利用)。某人或者某物采取的、危害资源的行为。该行为可能是某人通过跟踪威胁或者利用缺陷而做出的。 ? 对策。应对威胁、减小危险的安全措施。 考虑一个简单的房子类比:房子中的珠宝物品是财产,而窃贼是攻击者。门是房子的一部分,而开着的门则表示一个缺陷。窃贼可以利用开着的门进入房间、偷珠宝。换句话说,攻击者是利用缺陷来获取财产的。在这种情况下,正确的对策就是关上并锁上门。 返回页首 威胁建模的原则 威胁建模不应该是仅一次就万事大吉的过程。它应该是个重复的过程,从应用程序设计的早期阶段开始,持续经过应用程序的整个生命周期。这有两个原因。首先,不可能一次就找出所有可能的威胁。其次,因为应用程序很少为静态的,需要改善并适应变化的业务要求,所以,随着应用程序的发展,威胁建模过程应该是不断重复的。 过程 图 1 表明利用六个阶段过程,可以实现对威胁的建模。 注 下面的概要过程可用于目前正在开发的应用程序以及现有的应用程序。 图 1. 威胁建模过程概观 ? 标识资源。 找出系统必须保护的有价值的资源。 ? 创建总体体系结构。 利用简单的图表来记录应用程序的体系结构,包括子系统、信任边界和数据流。 ? 分解应用程序。 分解应用程序的体系结构,包括基本的网络和主机基础结构的设计,从而为应用程序创建安全配置文件。安全配置文件的目的是发现应用程序的设计、实现或部署配置中的缺陷。 ? 识别威胁。 牢记攻击者的目标,利用对应用程序的体系结构和潜在缺陷的了解,找出可能影响应用程序的威胁。 ? 记录威胁。 利用通用威胁模板记录每种威胁,该模板定义了一套要捕获的各种威胁的核心属性。 ? 评价威胁。 对威胁进行评价以区分优先顺序,并首先处理最重要的威胁。这些威胁带来的危险最大。评价过程要权衡威胁的可能性,以及攻击发生时可能造成的危害。评价的结果可能是:通过对比威胁带来的风险与为使威胁得到减少所花费的成本,对于某些威胁采取的行动是不值得的。 输出 威胁建模过程的输出结果就是为项目组不同成员提供的文档。该文档使他们可以清楚地了解需要进行处理的威胁,以及如何对其进行处理。威胁模型包括应用程序体系结构的定义和应用程序方案的一系列威胁,如图 2 所示。 图 2.威胁模型的组成部分 返回页首 第 1 步:标识资源 找出需要保护的资源。这可能包括从如客户或定单数据库等机密数据到 Web 页或 Web 站点可用性。 返回页首 第 2 步:创建总体体系结构 在这个阶段,目标是要记录应用程序的功能、体系结构、物理部署配置及组成解决方案一部分的技术。应该寻找应用程序设计和实现中潜在的缺陷。 在此步中,执行下列任务: ? 确定应用程序做什么。 ? 创建体系结构示意图。 ? 确定技术。 确定应用程序做什么 确定应用程序做什么以及它是如何利用和访问资源的。记录用例,帮助您和其他人理解应该如何使用应用程序。这还有助于您推断出误用应用程序的情况。用例在一定的环境中实现应用程序的功能。 这里有一些自助服务、雇员人力资源应用程序的用例示例: ? 雇员查看财务数据。 ? 雇员更新个人数据。 ? 管理人员查看雇员详细资料。 在上述情况下,您可以考虑被误用的业务规则含义。例如,考虑某用户正试图更改另一个用户的个人详细资料。根据所定义的应用程序要求,他或她没有访问那些详细资料的权限。 创建体系结构示意图 创建高级的体系结构示意图,该图说明了应用程序、子系统以及物理部署特点的组成和结构,如图 3 中的示意图。根据系统的复杂性,您可能需要创建重点处理不同区域的其他示意图,如模拟中间层应用程序服务器体系结构的示意图,或模拟与外部系统进行交互的示意图。 图 3. 应用程序体系结构示意图示例 首先画一个大致的示意图,要表示出应用程序及其子系统的组成和结构以及其部署特点。然后,发现(通常在第 3 步,分解应用程序时发现)和添加有关信任边界、身份验证以及授权机制等详细信息,从而改进示意图。 确定技术 确定用于实现解决方案的不同技术。这有助于您在稍后的过程中关注技术特有的威胁。这还有助于确定正确、最恰当的降低危险技术。您最可能确定的技术包括 ASP.NET、Web 服务、企业服务、Microsoft .NET Remoting 以及 ADO.NET。还可以找出应用程序调用的任何非托管代码。 使用类似下面表 1 的表记录技术。 表 1. 实现技术 技术 / 平台 实现详细信息 Microsoft Windows Advanced Server 2000 上的 Microsoft SQL Server 包括登录、数据库用户、用户定义的数据库角色、表、存储过程、视图、约束和触发器。 Microsoft .NET Framework 用于窗体身份验证。 安全套接字层 (SSL) 用来加密 HTTP 传输信息。 返回页首 第 3 步:分解应用程序 在本步骤中,分解应用程序,并根据传统的缺陷区域为应用程序创建 安全配置文件。还要找出信任边界、数据流、入口点和特权代码。对 应用程序结构了解的越多,就越容易发现威胁。图 4 说明了分解过程的不同目标。 图 4. 应用程序分解的目标 在此步中,执行下列任务: ? 标识信任边界。 ? 标识数据流。 ? 标识入口点。 ? 标识特权代码。 ? 记录安全配置文件。 标识信任边界 找出包围应用程序的各实体资源的信任边界。这些资源由应用程序设计确定。对每个子系统,要考虑上游数据流或用户输入是否可信,如果不可信,要考虑对数据流和输入如何进行身份验证和授权。还要考虑调用代码是否可信,如果不可信,考虑如何对其进行身份验证和授权。必须能够保证适当的网关守卫程序可以将所有入口点都看护在一个特定的信任边界中,而且接收者的入口点要全面验证通过信任边界的所有数据。 首先从代码的角度来分析信任边界。程序集代表一种格式的信任边界,是一个非常有用的起始点。哪种程序集信任其他的哪种程序集,某特定的程序集信任调用它的代码吗,它是否使用代码访问安全机制来对调用的代码进行授权, 还要考虑服务器的信任关系。某特定的服务器信任上游服务器对最终用户进行身份验证与授权吗,或者服务器自身提供监视服务吗,还有,服务器信任上游服务器传递给它的具有规范格式的正确数据吗, 例如,在图 3 中,Web 应用程序利用固定的、可信的身份访问数据库服务器,在这种情况下这种身份就是 ASPNET Web 应用程序过程帐户。在该方案中,数据库服务器信任该应用程序对调用者的身份验证和授权,并给授权的用户只发送有效的请求数据。 注 在 .NET FRAMEWORK 应用程序中,程序集定义了最小的信任单元。只要数据通过程序集边界 — 根据定义它包括应用程序域、进程或机器边界 — 接收者入口点应验证其输入数据。 标识数据流 一种简单的方法就是以最高层作为起点,然后通过分析单个子系统间的数据流来以迭代的方式分解应用程序。例如,分析 Web 应用程序和企业服务应用程序间的数据流后再分析单个服务组件间的数据流。 跨信任边界的数据流特别重要,因为从自己的信任边界外部传递数据的代码应当假定这些数据是恶意的,并且应当对数据进行彻底的验证。 注 数据流示意图 (DFD) 和序列示意图有助于规范地分解系统。DFD 是数据流、数据存储区和数据源与目标之间关系的图形化表示。序列示意图说明一组对象在有时间先后顺序的事件中是如何协作的。 标识入口点 应用程序的入口点也是攻击的入口点。入口点可能包括侦听 HTTP 请求的前端 Web 应用程序。该入口点是有意公开给客户端的。其他入口点,如由跨应用程序层的子组件公开的内部入口点,它们的存在只是支持与其他组件的内部通信。但是,您应知道这些入口点位于何处,以及它们接收的输入类型是什么,以防攻击者设法绕过应用程序的前门而直接攻击内部入口点。 对于每个入口点,您应该能够确定网关守卫程序的类型,该程序进行授权并提供验证的程度。 逻辑应用程序入口点包括由 Web 页提供的用户界面、由 Web 服务提供的服务界面、服务组件和 .NET Remoting 组件以及提供异步入口点的消息队列。物理或平台入口点包括端口和插槽。 标识特权代码 特权代码访问特定类型的安全资源,并执行其他特权操作。安全资源类型包括 DNS 服务器、目录服务、环境变量、事件日志、文件系统、消息队列、性能计数器、打印机、注册表、套接字和 Web 服务。安全操作包括非托管代码调用、反射、串行化、代码访问安全性权限及代码访问安全性策略的操作,包括证据。 特权代码必须通过代码访问安全策略被授予适当的代码访问安全性权限。特权代码必须保证它所封装的资源和操作不会公开给不可信的和可能有恶意的代码。.NET FRAMEWORK 代码访问安全机制通过执行堆栈审核检查授权给调用代码的权限。但是,有时覆盖该行为并绕过整个堆栈审核是必要的,例如,当想用沙箱限制特权代码或分离特权代码时。这样做就为引诱攻击公开了代码,恶意代码可以通过可信的中间代码调用您的代码。 覆盖由代码访问安全提供的默认安全行为时要认真,并要采取适当的安全措施。有关检查代码安全缺陷的更多信息,参阅“检查安全代码”单元。有关代码访问安全的更多信息,参阅“代码访问安全实践”及“ASP.NET 和代码访问安全”等单元。 记录安全配置文件 下一步,应该确定输入验证、身份验证、授权、配置管理以及其他应用程序最容易受到攻击的区域等使用的设计和实现方法。这样做就为应用程序创建了一个安全配置文件。 下表说明分析应用程序的设计与实现的各个方面时要询问的问题。有关检查应用程序体系结构和设计的更多信息,参阅“体系结构和设计的安全检查”单元。 表 2. 创建安全配置文件 类别 需要考虑的事项 输入验证 所有输入数据都验证了吗, 攻击者可以把命令或恶意数据注入到应用程序中吗, 当数据在单独的信任边界间传递的时候,验证数据(由接收者入口点验证)了吗, 可以信任数据库中的数据吗, 身份验证 如果凭据在网络上传递,对凭据进行保护了吗, 使用强帐户策略了吗, 执行强密码了吗, 您使用凭据了吗, 用户密码使用密码检验程序(使用单向散列)了吗, 授权 在应用程序入口点处使用了什么网关守卫程序, 数据库中授权是如何执行的, 采用深度防护策略了吗, 失败安全吗,只在成功确认凭据后才允许访问吗, 配置管理 应用程序支持什么样的管理界面, 如何对它们进行保护, 是如何对远程管理进行保护的, 采用了什么样的配置存储区,如何对它们进行保护, 敏感数据 应用程序处理怎样的敏感数据, 在网络上和在永久存储区中是如何进行保护的, 使用了什么类型的加密技术,如何保护密钥的, 会话管理 会话 cookie 是如何生成的, 是如何保护它们不受会话劫持的, 如何保护持久会话状态, 当经过网络时是如何保护会话状态的, 如何对会话存储区进行应用程序身份验证, 凭据在线上传递吗,应用程序对它们进行维护吗,如果是这样,如何保护它们, 加密技术 使用了什么算法和加密技术, 密钥多长,如何保护, 应用程序实施自身的加密技术吗, 密钥多久循环一次, 参数操作 应用程序检测到被篡改的参数了吗, 应用程序验证了窗体字段、视图状态、cookie 数据以及 HTTP 标头中所有参数了吗 异常管理 应用程序是如何处理错误情形的, 允许异常传播回客户端吗, 使用不含可利用信息的一般错误消息了吗, 审核和日志记录 应用程序的审核活动是否遍及所有服务器上的所有层, 如何保护日志文件, 返回页首 第 4 步:识别威胁 在本步骤中,您可以识别出有可能影响系统并危及资源安全的威胁。为了指导识别过程,把开发人员和测试小组集合起来,在白色书写板前进行可增长见识的自由讨论会议。这是识别潜在威胁的虽然简单但有效的方式。理想的情况是,该小组由应用程序架构师、安全专业人士、开发人员、测试人员和系统管理员组成。 您还可以使用两种基本方法: ? 利用 STRIDE 来识别威胁。考虑主要种类的威胁,如欺骗、篡改、拒绝服务,并利用“威胁与对策”单元的 STRIDE 模型,提出与应用程序体系结构和设计的各个方面相关的问题。这是一种基于目标的方法,在这里您考虑的是攻击者的目标。例如,攻击者可以假冒身份访问服务器或 Web 应用程序吗,某人能够篡改网络上或者存储区中的数据吗,某人可以拒绝服务吗, ? 使用分类的威胁列表。这种方法是从常见威胁的细目清单开始的,威胁根据网络、主机和应用程序的种类进行分组。下一步,将威胁列表应用到您自己的应用程序体系结构和在该过程早期发现的任何缺陷中。您将能够立即排除某些威胁,因为它们并不适用于您的方案。 使用下列资源有助于进行威胁识别过程: ? 有关根据网络、主机和应用程序层组织的一系列威胁,以及对威胁的解释和相关对策的信息,参阅“威胁与对策”单元。 ? 有关根据技术分类的一系列威胁的信息,参阅本手册第 3 部分每个“构建”单元开头的“威胁与对策”部分。 在此步中,执行下列任务: ? 识别网络威胁。 ? 识别主机威胁。 ? 识别应用程序威胁。 识别网络威胁 这是网络设计者和管理员的任务。分析网络拓扑、数据包的流动,以及路由器、防火墙和交换机配置,寻找潜在的缺陷。还要注意虚拟专用网 (VPN) 终结点。回顾“威胁与对策”单元中确定的最常见网络层威胁的网络防护。 在设计阶段要考虑的主要网络威胁包括: ? 利用依赖发送方 IP 地址的安全机制。 ?利用假源 IP 地址(IP 欺骗)发送IP 数据包相对比较容易。 ? 通过未加密网络通道传送会话标识符或 cookie。这可能导致 IP 会话劫持。 ? 通过未加密通信通道传送明文的身份验证凭据或其他敏感数据。这可能会允许攻击者监视网络、获取登录凭据,或者获取并可能篡改其 他敏感数据项。 还必须保证网络不易受来自于不安全设备和服务器配置的威胁。例如,多余的端口和协议关闭并禁用了吗,对路由表和 DNS 服务器进行保护了吗,服务器上 TCP 网络堆栈进行强化了吗,有关预防该种缺陷的更多信息,参阅“保护网络”单元。 识别主机威胁 配置主机安全(即 Microsoft Windows 2000 和 .NET FRAMEWORK 配置)时,本手册通篇使用的方法就是将该配置分为单独的几类,这样您就可以以结构化和逻辑的方式应用安全设置。理论上,该方法也适合于检查安全、测定缺陷以及识别威胁。适用于所有服务器角色的常用配置种类包括补丁和更新、服务、协议、帐户、文件和目录、共享、端口、审查和日志记录。对于每一种类,都要识别可能的易受攻击的配置设置。从这些设置中识别威胁。 要考虑的主要缺陷包括: ? 维护未打补丁的服务器,病毒、特洛伊木马、蠕虫和著名的 IIS 攻击都可以攻击这种服务器。 ? 使用非必需的端口、协议和服务,这将增大攻击的范围,可以使攻击者收集信息并攻击环境。 ? 允许未经身份验证的匿名访问。 ? 如果可以蓄意锁定帐户,使用脆弱的密码和帐户策略可以导致破解密码、盗用身份和拒绝服务攻击。 识别应用程序威胁 在前面的几个步骤中,您定义了应用程序的体系结构、数据流和信任边界。您还创建了一个安全配置文件,它说明了应用程序如何处理核心区域,例如身份验证、授权、配置管理以及其他区域。 现在使用主要的 STRIDE 威胁种类与预定义的威胁列表来仔细检查应用程序的安全配置文件的方方面面。集中考虑应用程序威胁、技术特有的威胁和代码威胁。考虑的主要缺陷包括: ? 使用的输入验证不力将导致跨站点脚本编写 (XSS)、SQL 注入和缓冲区溢出攻击。 ? 在未加密的网络链路上传递身份验证凭据或者身份验证 cookie,会导致捕获凭据或者会话劫持。 ? 使用脆弱的密码和帐户策略可能导致非授权访问。 ? 保护应用程序的配置管理方面失败,包括管理界面。 ? 以明文的形式存储配置秘密,例如连接字符串和服务帐户凭据。 ? 使用越权进程和服务帐户。 ? 使用不安全的数据访问编码技术,这可能会增大 SQL 注入造成的威胁。 ? 使用脆弱的或者自定义的加密技术,并且未能充分保护密钥。 ? 依靠从 Web 浏览器传递过来的参数的完整性,例如,窗体字段、查询字符串、cookie 数据以及 HTTP 标头。 ? 使用不安全的异常处理,这可能导致拒绝服务攻击以及泄漏对于攻击者来说非常有用的系统级详细资料。 ? 审核与日志记录不充分,这可能导致否认威胁。 使用攻击树和攻击模式 攻击树和攻击模式是安全专业人员使用的主要工具。这些不是威胁识别阶段的主要的组件,但会发现它们非常有用。它们可以使您在更深层次上分析威胁,识别超出您已知威胁范围的其他可能性。 要点 当您使用以前准备好的已知威胁分类列表时,它展示的只是常见的已知威胁。其他的方法,例如使用攻击树和攻击模式,可以帮助您识别其他潜在的威胁。 攻击树是一种以结构化与层次化的方式收集和记录系统上潜在的攻击的方法。树结构提供给您的是攻击者损害系统安全所使用的各种攻击的细目分类。创建攻击树,就创建了一个可重用的安全问题表示方法,这有助于将精力集中。测试小组可以创建测试 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 来验证安全设计。开发人员可以在实现期间进行权衡,而架构师或者主要开发者可以评估其他方法的安全费用。 攻击模式是一种捕捉企业攻击信息的形式化方法。这些模式有助于您识别常见的攻击方法。 创建攻击树 实践中虽然可以使用几种方法,但普遍使用的方法是识别攻击的目标和子目标,以及攻击成功所必须做的事情。可以使用一个分级示意图来表示攻击树,或者使用一个简单的略图。重要的是最终您有了一张描绘攻击应用程序的轮廓图。然后就可以评估可能的安全风险,并可以使用适当的对策来降低危险,例如更正设计方法、加固配置设置以及其他的解决方案。 通过创建表示攻击者目标的根节点开始构建攻击树。然后添加叶节点,叶节点表示每种攻击的攻击方法。图 5 表示了一个简单的示例。 图 5. 攻击树的表示方法 可以用 AND 和 OR 标签标记叶节点。例如,图 5 中,1.1 和 1.2 都发生时攻击才有威胁。 类似上面显示的攻击树其趋势是很快就会很复杂。创建这些攻击树也很耗时。一些小组喜欢使用的另一种替代方法就是利用诸如下面所示的略图来使攻击树结构化。 1. Goal One 1.1 Sub-goal one 1.2 Sub-goal two 2. Goal Two 2.1 Sub-goal one 2.2 Sub-goal two 注 处理目标和子目标外,攻击树还包括攻击方法和需要的条件。 这里是使用略图方法的示例: Threat #1 Attacker obtains authentication credentials by monitoring the network 1.1 Clear text credentials sent over the network AND 1.2 Attacker uses network-monitoring tools 1.2.1 Attacker recognizes credential data 想看一个完整的示例,请参阅本手册“欺骗表”一节中的“攻击树示 例”。 攻击模式 攻击模式是在各种不同环境中发生的常见攻击的一般表示方法。模式 定义了攻击的目标以及攻击发生所必须存在的条件、实施攻击所需要 的步骤和攻击的结果。攻击模式主要考虑攻击的方法,而基于 STRIDE 的方法主要考虑攻击者的目标。 攻击模式的一个示例就是代码注入攻击模式,它用于以一种通用的方 式来描述代码注入攻击。表 3.3 说明了代码注入攻击模式。 表 3 代码注入攻击模式 模式 代码注入攻击 攻击目标 命令或者执行代码 需要的条件 输入验证不充分 攻击者的代码有足够的服务器特权。 攻击方法 1. 具有输入缺陷的目标系统上的识别程序。 2. 创建注入代码并且利用目标应用程序的安全上下文运行。 3. 构建输入值,将代码注入到目标应用程序的寻址空间,并迫使堆栈崩溃,使应用程序执行跳转到注入代码处。 攻击结果 攻击者的代码运行并实施恶意的行为。 有关攻击模式的更多信息,请参阅本单元末的一节“其他的参考文献”。 返回页首 第 5 步:记录威胁 为了记录应用程序的威胁,使用一个模板,它显示了类似下面一种威胁的几种威胁属性。威胁描述和威胁目标是基本属性。这个阶段风险评价一栏空着。等到威胁建模过程的最后阶段对确定的威胁列表区分优先顺序时才使用。可能想包括的其他属性为攻击方法,它也突出了利用的缺陷,以及针对威胁所需要的对策。 表 4. 威胁 1 威胁描述 攻击者通过监视网络获取身份验证凭据 威胁的目标 Web 应用程序用户身份验证进程 危险 攻击方法 利用网络监视软件 对策 利用 SSL 提供加密通道 表 5 威胁 2 威胁描述 注入 SQL 命令 威胁的目标 数据访问组件 危险 攻击方法 攻击者在用户名后添加 SQL 命令,形成 SQL 查询语句 对策 利用正则表达式来验证用户名,使用带参数访问数据库的存储过程。 返回页首 第 6 步:评价威胁 在建模过程的现阶段,已经有了应用到特定应用程序方案的威胁列表。在建模过程的最后阶段,要根据威胁造成的危险对其进行评价。这样您就能够首先解决危险最大的威胁,然后再解决其他的威胁。实 际上,解决所有找出的威胁也许在经济上是不可行的,您可以进行决策忽略掉一些,因为它们发生的机会很小。即使发生,带来的损失很小。 危险 = 发生的概率×潜在的损失 该公式表明,特定威胁造成的危险等于威胁发生的概率乘以潜在的损失,这表明了如果攻击发生将会对系统造成的后果。 可以用等级 1,10 来衡量概率,这里 1 表示威胁非常不可能发生,而 10 表示几乎肯定发生。同样,可以用等级 1,10 来衡量潜在的损失,这里 1 表示最小的损失,而 10 表示大灾难。用这种方法,发生概率低但潜在损失大的威胁造成的危险等于潜在损失有限但非常有可能发生的威胁所造成的危险。 例如,if Probability=10 and DamagePotential=1, then Risk = 10 * 1 = 10. If Probability=1 and DamagePotential=10, then Risk = 1 * 10 = 10。 这种方法导致分为等级 1,100,可以将这些等级分成高、中、低危险三级。 高、中、低级危险 可以利用简单的高、中、低级别来区分威胁的优先顺序。如果某威胁被评价为高,它对应用程序造成的危险很大,需要尽快进行处理。中级威胁也需要处理,但是不是太紧迫。可以决定忽略低级威胁,这取决于处理该威胁所需要的工作和成本。 DREAD 简单评价系统的问题在于小组成员对评价结果通常 意见 文理分科指导河道管理范围浙江建筑工程概算定额教材专家评审意见党员教师互相批评意见 不一。为帮助解决这个问题,新添加几项来帮助决定安全威胁的影响真正意义是什 么。在 Microsoft,使用 DREAD 模型来协助计算危险。使用 DREAD 模型,通过询问下列问题就可以得到给定威胁的风险评价结果: ? 潜在损失:如果缺陷被利用,损失有多大, ? 重现性:重复产生攻击的难度有多大, ? 可利用性:发起攻击的难度有多大, ? 受影响的用户:用粗略的百分数表示,有多少用户受到影响, ? 可发现性:缺陷容易发现吗, 可以利用上面的几项来评价每一种威胁。也可以根据您的需要扩展上面的问题。例如,您可以添加关于有可能损害信誉的问题: 信誉:风险有多高,有可能导致客户失去信任的信誉危险吗, 评价不需要使用大量的衡量 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,因为这会使相互之间很难在评价威胁方面达成一致意见。可以使用一种简单的方案,例如高 (1)、中 (2)、低 (3)。 当清晰地定义了评价系统中每一个值表示的含义时,就可帮助避免出现混淆。表 6 显示的是一种典型的评价表示例,小组成员可以用它来区分威胁的优先顺序。 表 6. 威胁评价表 评价 高 (3) 中 (2) 低 (1) D 潜在的损失 攻击者可以暗中破坏安全系统,获取完全信任的授权,以管理员的身份运行程序,上传内容。 泄漏敏感信息 泄漏价值不高的信息 R 重现性 攻击每次可以重现,而且不需要时间间隔。 攻击每次可以重现,但只在一个时间间隔和一种特定的竞争条件下才能进行。 攻击很难重现,即使很了解安全漏洞。 E 可利用性 编程新手在短时间内就可以进行这类攻击。 熟练编程人员可以进行这类攻击,然后重复进行这些步骤。 这类攻击需要非常老练的人员才能进行,并对每次攻击都有深入的了解。 A 受影响的用户 所有的用户,默认配置,主要客户 一些用户,非默认配置 极少的用户,特点不明确,影响匿名用户 D 可发现性 公开解释攻击的信息。可以在最常用功能中找到的缺陷,非常明显。 产品中很少使用部分的缺陷,只有少量的用户可能遇到。判断是否是恶意使用需要花费一些心机。 错误不明显,用户不可能引起潜在的损失 询问完上述问题后,计算给定威胁的值 (1–3)。结果范围为 5–15。这样您就可以将总分 12–15 的威胁评价为高度危险,8–11 的威胁评价为中度危险,5–7 的威胁评价为低度危险。 例如,考虑先前描述的两种威胁: ? 攻击者通过监视网络获得身份验证凭据。 ? 将 SQL 命令注入到应用程序。 表 7 显示的是两种威胁的 DREAD 评价示例: 表 7. DREAD 评价 威胁 D R E A D 总计 得分 攻击者通过监视网络获得身份验证凭据。 3 3 2 2 2 12 高 将 SQL 命令注入到应用程序。 3 3 3 3 2 14 高 一旦获得了危险评价,您就可以更新记录的威胁并添加发现的评价级 别,对于上述两种威胁来说都是高。表 8 显示了一个示例。 表 8 威胁 1 威胁描述 攻击者通过监视网络获得身份验证凭据 威胁的目标 Web 应用程序用户身份验证进程 危险评价 高 攻击方法 利用网络监视软件 对策 使用 SSL 提供加密通道 返回页首 威胁建模之后该做何工作, 威胁建模过程的输出包括应用程序体系结构安全方面的记录和评价过的威胁列表。威胁模型有助于您协调开发小组成员,并将精力集中在最有影响的威胁上。 要点 威胁建模是一个不断重复的过程。威胁模型是一种发展的文档,并且各种不同的小组成员都可以参与。 下列小组的人员都可以使用威胁模型: ? 设计者可以利用它来进行技术与功能方面的安全设计选择决策。 ? 编写代码的开发人员可以利用它来降低风险。 ? 测试人员可以编写测试案例来测试应用程序是否容易受分析所找出的威胁的攻击。 生成工作项目报告 从最初的威胁模型,您可以创建一个更正式的工作项目报告,它可以包括其他的属性,例如 Bug ID,可用它把您喜好的错误跟踪系统和威胁连接起来。实际上,您可以选择在错误跟踪系统中输入找出的威胁,利用它的报告工具来生成报告。也可以用一个状态栏来表明错误是否已经被修复。您应当确保报告包括用来连接威胁模型文档的原始威胁编号。 在报告中,根据网络、主机和应用程序种类来组织威胁。这可以使不同角色的不同小组成员更方便地使用该报告。每一类中,按优先顺序排列威胁,最先的是评价具有最大危险的威胁,紧跟的是危险较小的威胁。 返回页首 小结 虽然您可以降低攻击带来的危险,但是却不能减少或者消除实际的威胁。不管您采取何种安全措施以及采用何种对策,威胁仍旧存在。安全界的现实就是,承认威胁的存在并控制危险。威胁建模可以帮助您控制安全风险并在团队中间沟通这些安全风险。 要将威胁建模看成一个不断循环的过程。您的威胁模型应当是动态模 型,应随着时间的推移不断更改,以适应发现的新型威胁与攻击。它 还要能够适应应用程序为适应业务变更的需求而不断完善与更改的 自然发展过程。 返回页首 其他资源 有关其他相关的材料,请参阅下列资源: ? 有关攻击模式的更多信息,请参阅“Attack Modeling for Information Security and Survivability,”,作者 Andrew P. Moore、Robert J. Ellison 和 Richard C. Linger,网址 。 ? 有关评估威胁、资源和易受攻击性的信息,请参阅“Operationally Critical Threat, Asset, and Vulnerability Evaluation (OCTAVE) Framework, Version 1.0”,位于卡内基梅隆软件工程学院的Web 站 点上,网址 。 ? 要浏览有关威胁建模的信息,请参阅“Architect WebCast:Using Threat Models to Design Secure Solutions”,网址 。 ? 有关创建 DFD 的更多信息,请参阅 Writing Secure Code, Second Edition,作者 Michael Howard,David C. LeBlanc。
本文档为【威胁和威胁建模】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_511210
暂无简介~
格式:doc
大小:48KB
软件:Word
页数:25
分类:
上传时间:2018-01-31
浏览量:39