北京邮电大学-软件安全测评-03安全威胁建模

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件安全测评北京邮电大学计算机学院信息安全系张淼zhangmiao@bupt.edu.cn第三讲安全威胁建模威胁建模的基本概念威胁模型建立的过程威胁建模的基本观点是:直到理解了所受的威胁之后才能创建安全的系统威胁建模的基本观点什么是威胁建模?威胁模型是一种基于安全的分析,有助于人们确定给产品造成的最高安全级别的安全风险,以及攻击是如何表现出来的,其目标是确定需要缓和哪些威胁,如何来缓和这些威胁.威胁建模的重点是以一种相对正式的方式来考虑应用程序的安全性,关于威胁有很多信息,但是威胁建模却少有涉及,创建威胁模型必须认识到产品的什么地方最为危险,因而会选择合适的技术来缓和威胁,这样就使得系统更加安全.威胁建模进行威胁建模还有其他作用:威胁模型有助于更好的理解你的应用程序,因为你花时间以一种相对结构化的方式分析了应用程序的组成威胁模型可以帮助你测试应用程序查找bug可能会通过威胁模型发现其他方式不能发现的复杂bug,它们通常是由几个小故障结合而成的大灾难.威胁模型可以帮助新的小组成员理解应用程序的细节,它可能成为加速学习曲线的工具威胁模型能帮助测试人员进行测试,有助于产生设计良好的安全测试计划和产品威胁建模1)成立威胁模型小组2)分解应用程序3)确定系统所面临的威胁4)以风险递减的方式给威胁排序5)选择应付威胁的方法6)选择缓和威胁的技术7)从确定下来的技术中选择适当的技术威胁模型建立过程威胁模型建立过程分解应用程序确定威胁分级威胁缓和方案第一步是从产品小组中聚集一些人进行初步的威胁分析过程。确保每一个开发部门都至少有一个成员参加讨论,包括设计、编程、测试和文档部门。会议的目标不是解决问题,而是标识出应用程序的组成部分,之间如何交互,找到尽可能多的安全威胁成立威胁建模小组分解应用程序分解应用程序确定威胁分级威胁缓和方案成功的威胁建模需要一种更结构化的方法,而不是简单的”想象威胁”。对应用程序进行形式化分解DFD(DataFlowDiagram)是威胁分解的一种形式化分解技术,能将应用程序分解为几个关键部分。统一建模语言UML,特别是活动图,非常适合记录过程,其方式和DFD相似。UML活动图致力于过程之间的控制流,而DFD则是过程间的数据流。分解应用程序DFD:DataFlowDiagram数据流图数据流图(DataFlowDiagram,DFD)是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。分类一种是以方框、连线及其变形为基本图例符号来表示数据流动过程。一种是以圆圈及连接弧线作为其基本符号来表示数据流动过程。这两种方法实际表示一个数据流程的时候,大同小异,但是针对不同的数据处理流程却各有特点。DFD中的关键数据流图符号认证数据一个过程转换或操作数据多个过程转换或操作数据数据存储存储临时数据或永久数据的地点边界机器,物理,地址空间或信任边界交互者向系统输入数据流描述来自数据存储,过程或交互者的数据流分解的第一步是确定要分析的应用程序的边界或作用范围,并了解可信任部分与不可信任部分之间的边界,DFD使用一个高级上下文图表定义应用程序的可达范围上下文图表只有一个过程,通常没有数据存储,使用0级图表,1级图表,2级图表,如图所示分解应用程序上下文0级1级2级撇开DFD理论不讲,我们先从一个范例应用程序开始,我们使用简化的基于Web的工资表应用程序分解应用程序内联网数据中心3.0管理员1.0用户2.0Web开发者4.0审计员0.0工资表应用程序管理任务反馈管理任务请求工资表请求信息工资表信息响应更新后的文件审计实体工资表范例应用程序的上下文数据流图定义DFD的作用范围是,请考虑以下几点:忽略应用程序的内部工作方式工作方式无关紧要,要定义作用范围而非功能细节哪些事情和请求是系统必须响应的?例如,工资表应用程序应接收工资表信息请求程序将产生什么响应?例如,工资表应用程序应提供工资表信息响应标识出每次请求和响应相关的数据源有些是永久性的(文件、注册表、数据库等)有些是短期或暂时的(缓存数据)确定每次响应的接受者下面将前面的DFD图表进行分解,进入1级图表分解应用程序这里有一些在DFD中创建和命名实体时遵循的简单规则:一个过程必须至少有一个数据流流入和一个数据流流出所有的数据流都从某个过程开始,到某个过程结束数据存储通过数据流与过程相连数据存储之间不能连接,他们必须通过过程相连下面将前面的DFD图表进行分解,进入1级图表分解应用程序内联网数据中心2.0管理员1.0用户3.0Web开发人员6.0身份认证数据更新后的认证数据工资表请求工资表数据请求内联网数据中心管理任务任务反馈认证数据更新后的工资表数据身份认证状态信任状4.0审计员11.0访问数据12.0工资表数据9.0强制工资表策略5.0服务客户端请求14.0强制管理表策略7.0Web页面8.0Web服务代码13.0审计日志新的认证数据审计实体工资表响应工资表请求工资表响应工资表数据请求工资表数据请求的页面请求的代码更新后的文件更新后的文件最后,你会深刻理解应用程序的各个组成部分,一般来讲,如果只是进行威胁建模,那么应当只需深入到两级,三级或者四级,原则是,只要深入到足够理解你所受到的威胁就行.分解应用程序确定威胁分解应用程序确定威胁分级威胁缓和方案1使用STRIDE给威胁分类提出一些安全相关的问题,如未经认证的用户能否浏览秘密的网络数据?不可信任的用户能否修改数据库中患者的记录数据?是否有人能够拒绝合法用户获得应用程序的服务?是否有人能够利用某些特性或组件将自己的特权提升为管理员?确定系统所面临的威胁为了有助于回答这些问题,我们使用STRIDE威胁模型,它是下面这六种威胁类型的英文首字母的缩写:身份欺骗Spoofingidentity篡改数据Tamperingwithdata抵赖Repudiation信息泄露Informationdisclosure拒绝服务Denialofservice,DoS特权提升Elevationofprivilege确定系统所面临的威胁身份欺骗允许攻击者冒充另一个用户,或者允许恶意服务器冒充合法服务器,用户身份欺骗的一个例子是非法访问,然后使用另一个用户的认证信息,例如用户名或口令.举一个现实的例子,比如不安全的认证技术,像HTTP认证:基本的摘要访问认证(RFC2671).如果Fletcher可以在HTTP认证头里看到Blake的用户名和口令,他就可以使用此用户名和口令访问受保护的数据,如同他就是Blake.服务器欺骗的例子包括DNS欺骗和”DNS缓存中毒”(DNScachepoisoning).身份欺骗Spoofingidentity数据篡改包括有恶意的修改数据.这样的例子包括在未授权的情况下,修改永久性的数据,例如数据库中的数据,以及当数据通过一个开放网络(如因特网)在两台计算机直接传输时,更改数据.现实的例子包括改变目标计算机中以弱ACL保护的文件数据,如Everyone用户的完全控制权限.篡改数据Tamperingwithdata与抵赖威胁相关的是用户拒绝承认从事过的一项活动,并且其他方面没有任何办法可以证明他是在抵赖.例如,一名用户在系统中做了非法的操作,这个系统有缺少跟踪被禁止操作的能力。防抵赖(Nonrepudiation)是系统对抗否认威胁的能力,就像如果用户购买了一件商品,他必须在收据上签字,厂商就可以用这个签了字的收据来证明用户确实收到了包裹,可以想象,对于电子商务应用程序来说,认可是极其重要的.抵赖Repudiation信息泄露威胁包括,信息被暴露给不允许对它访问的人.例如,用户可以读到非授权访问权限的文件,入侵者可以读到在两台计算机之间传输的数据,前面讲到的欺骗的例子也是一个信息泄露的例子,因为要重放Blake的证书,Fletcher必须首先看到证书.信息泄露Informationdisclosure拒绝服务攻击将拒绝对合法用户的服务.例如,使Web服务器暂时不可用或无法使用,你必须提高系统的可用性和可靠性,来防止受到某些类型的DoS威胁,关于拒绝服务的非常真实的例子包括各种分布式拒绝服务攻击(DDoS),如Trinoo和Stacheldraht.拒绝服务Denialofservice,DoS在这种类型的威胁下,一名没有特权的用户获得访问特权,从而有足够的能力损坏或摧毁整个系统,特权提升威胁包括这样的情况,一名攻击者已经有效的穿透了所有的防御系统,并且成为了受信任的系统自身的一部分,这确实是一个非常危险的状态.举个例子:一个脆弱的计算机系统允许攻击者将可以执行代码放置在磁盘上,并等待下一个人登录系统,如果下一个用户是管理员,那么这些恶意代码也就会以管理员身份运行.特权提升Elevationofprivilege确定系统所面临的威胁2建立威胁树建立威胁树,系统地分析所开发的应用程序中的威胁和漏洞。众所周知,在硬件领域中有种识别可能故障模式的方法,成为“故障树”,同样的方法也适用于计算机系统领域的安全问题。威胁树的思想是,应用程序是有威胁目标组成的,每个目标都有漏洞,任一漏洞受到攻击都可能破坏整个系统。威胁树描述了攻击者破坏各组件所经历的决策过程。工资表范例中的流图用户的工资数据是从WEB服务器计算机传向职工的计算机的。或者说是从服务客户过程传输的工资信息是保密的,这意味着必须保护工资数据。存在信息泄露的可能,具体威胁见下图。简单威胁树的示例这棵威胁树描述了攻击者如何浏览另一个用户的秘密工资数据.威胁#1在线浏览秘密工资表数据(1)与与1.1HTTP通信不受保护1.2攻击者浏览通信数据1.2.1使用协议分析器嗅探网络通信1.2.2监听路由器流通数据1.2.3破坏交换机1.2.2.1路由器不受保护1.2.2.4各种交换机攻击1.2.2.2破坏路由器1.2.2.3猜测路由器口令增加威胁树的可读性可以向威胁树添加几个附件,显示最有可能的攻击向量。用虚线表示最不可能的攻击点用实线表示最可能的攻击点在最不可能的攻击节点下放置圆圈,说明攻击为什么会减弱。威胁#2上传恶意Web页面与2.1身份认证不安全2.1.2管理安全性错误默认情况下是安全的2.4.1服务器未打补丁2.2授权不安全2.3贿赂已授权的Web开发人员或管理员2.4破坏服务器2.2.1管理安全性错误默认情况下是安全的如果是真实的,问题就大了确定系统所面临的威胁3威胁建模需要记录的项目项目注释标题用适当的语言来描述,但是不要说得太多,威胁应该能从标题上明显地看出来,例如,”攻击者访问用户的购物车”威胁目标应用程序的那一部分容易受到攻击?例如,在工资表范例应用程序中,威胁目标包括工资请求数据流以及执行管理员策略的过程威胁类型基于STRIDE模型来记录威胁的类型,我们已经看到,一个威胁可以属于多个STRIDE类型风险用你喜欢的方式来计算风险,要确保一致.攻击树攻击者如何表示威胁呢?保持攻击树的简单性,如果太过深入,肯定会迷失方向缓和技术(可选)如何缓和威胁呢?如果已经使用了某种缓和技术,就记录下来,否则,进行下一个威胁,记住,建模过程并不是在试图解决问题,也应该记住要缓和威胁是困难的,有些问题要比其他问题容易缓和,缓和状态威胁已经被缓和了吗?回答这个问题的有效选择是:是,否,稍微缓和,以及需要继续研究Bug数量(可选)如果你再使用一个跟踪bug的数据库,那么就要跟踪bug的数量,请注意你的威胁模型数据库或工具,不应该替代bug数据库,最糟糕的情况就是,关于bug的文档有副本,并且其中一个文档是过期的,在威胁建模过程中,就应该捕获足够多的关于该威胁的信息,并维护你的bug跟踪数据库威胁分级分解应用程序确定威胁威胁分级缓和方案以风险递减的顺序给威胁分级一种计算威胁风险的简单办法是隐患的危机程度乘以隐患发生的可能性。风险DREAD=危机程度*发生的可能性这个数越大,威胁对系统造成

1 / 91
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功