基于图书管理系统的需求分析之威胁建模
概述
1.确定安全目标
2.创建应用程序概况图
3.分解应用程序
4.确定威胁
5.威胁评估
6.确定威胁缓解计划或策略
7.验证威胁
8. 威胁建档
威胁模型是一种基于安全的分析,有助于人们确定给产品造成的最高安全级别的安全风险,以及攻击是如何表现出来的,其目标是确定需要缓和哪些威胁,如何来缓和这些威胁.
威胁建模的重点是以一种相对正式的方式来考虑应用程序的安全性,关于威胁有很多信息,但是威胁建模却少有涉及,创建威胁模型必须认识到产品的什么地方最为危险,因而会选择合适的技术来缓和威胁,这样就使得系统更加安全。
威胁建模的一般过程,包括8个步骤
即:机密性——数据只应限具有权限的人员访问。
完整性——数据和系统资源只限适当的人员以适当的方式进行更改。
可用性——系统在需要时一切就绪,可以正常操作。
身份验证——建立用户身份(或者接受匿名用户)。
授权——明确允许或拒绝用户访问资源。
认可——用户无法在执行某操作后否认执行了此操作。
我们采用数据流图(Data Flow Diagram,DFD)创建较为直观的安全威胁模型,具体可详见上部分。
分解应用程序概述:
通过分解应用程序的结构来确定信任边界、数据流、数据入口点和数据出口点。
分解的第一步是确定要分析的应用程序的边界或作用范围,并了解可信任部分与不可信任部分之间的边界,DFD使用一个高级上下文图表定义应用程序的可达范围。定义DFD的作用范围是,请考虑以下几点:
n(1)忽略应用程序的内部工作方式:工作方式无关紧要,要定义作用范围而非功能细节
n(2) 哪些事情和请求是系统必须响应的?:例如,工资表应用程序应接收工资表信息请求
n (3)程序将产生什么响应?:n例如,工资表应用程序应提供工资表信息响应
n (4)标识出每次请求和响应相关的数据源:有些是永久性的(文件、注册表、数据库等);有些是短期或暂时的(缓存数据)
n (5)确定每次响应的接受者
应用程序分解:
下面将前面的数据流图进行分解。 虚线框用于表明系统信任边界,故名思义,表示虚线框内的元素都是可以信任的,系统外面的外体实体不可信任。
0层数据流图分解
1层数据流图分解
2层数据流图分解
图书借阅管理数据流图分解
图书借阅记录查询数据流图分解
学生信息管理数据流图分解
图书管理员管理数据流图分解
图书信息管理数据流图分解
确定可能影响应用程序和危及安全目标的威胁的最大难题是系统性和全面性。
确定常见威胁:
使用STRIDE给威胁分类:STRIDE是这6个维度的单词的首字母的缩写;这6个维度分别为:Spoofing(假冒)、Tampering(篡改)、Repudiation(否认)、Information Disclosure(信息泄漏)、Denial of Service(拒绝服务)、Elevation of Privilege(特权提升)。
但注意,有些威胁类型是相互关联的,一些威胁可能适用于多个类别。
威胁 |
涉及安全属性 |
定义 |
安全威胁 |
假冒 |
认证性 |
攻击者仿冒某人或某物。外部交互方和处理过程都面临着仿冒的危险 |
1.假冒billg、microsoft.com或ntdll.dll、2.HTTP认证:括DNS欺骗和”DNS缓存中毒” |
篡改 |
完整性 |
未经授权修改数据 |
修改一个DLL,或一个局域网的封包、改变目标计算机中以弱ACL保护的文件数据,如Everyone用户的完全控制权限 |
否认 |
不可否认性 |
有能力否认做过的事情。通常是篡改电子证据,或者电子证据不可信 |
一名用户在系统中做了非法的操作,这个系统有缺少跟踪被禁止操作的能力。 |
信息泄露 |
机密性 |
敏感信息在传输、存储、处理的过程中被未授权的访问 |
允许某人阅读Windows源代码;将客户列表发布在网站上用户可以读到非授权访问权限的文件,入侵者可以读到在两台计算机之间传输的数据 |
拒绝服务 |
可用性 |
拒绝服务攻击将拒绝对合法用户的服务 |
发送数据包使目标系统CPU满负荷或发送恶意代码使目标服务崩溃各种分布式拒绝服务攻击(DDoS),如Trinoo和Stacheldraht |
特权提升 |
授权性 |
无法正常提供服务。造成拒绝服务的原因很多,如资源不足、系统崩溃、物理损坏等 |
远程用户执行任意代码,普通用户可以执行管理员私有的系统指令或:一个脆弱的计算机系统允许攻击者将可以执行 代码放置在磁盘上,并等待下一个人登录系统,如果下一个用户是管理员,那么这些恶意代码也就会以管理员身份运行 |
深入分析其他可能威胁:
建立威胁树:应用程序是有威胁目标组成的,每个目标都有漏洞,任一漏洞受到攻击都可能破坏整个系统。威胁树描述了攻击者破坏各组件所经历的决策过程
在威胁树上添加几个附件,显示最有可能的攻击向量。 用虚线表示最不可能的攻击点,用实线表示最可能攻击点。 在最不可能的节点下放置圆圈,说明为什么会减弱威胁
建立威胁树如下:
我们通过已经得到了图书管理系统的威胁列表,但是解决所有的威胁也许是不可行的,因此我们可以选择那些可能会造成较大损失的威胁来解决,而忽略掉可能性小的。
所以我们需要对威胁进行衡量,危险 = 发生的概率×潜在的损失,该公式表明,特定威胁造成的危险等于威胁发生的概率乘以潜在的损失,这表明了如果攻击发生将会对系统造成的后果。这个数越大,威胁对系统造成的风险就越大。
我们可以通过DREAD威胁评价表来帮助我们衡量威胁,使用DREAD计算风险:与STRIDE威胁模型类似,DREAD是下面短语的首字母缩写:¨潜在破坏性 Damage potential、再现性 Reproducibility、可利用性 Exploitability、影响用户 Affected users、可发现性 Discoverability。假设每一个威胁都是可以被发现的,给每个威胁都定为10级.下面对我们的威胁列表进行威胁评价。平均上述几个数,计算每个威胁的风险后,以降序排列.如下表:
威胁 |
D |
R |
E |
A |
D |
平均等级 |
在线浏览图书信息或图书借阅记录 |
8 |
10 |
7 |
10 |
10 |
9 |
上传恶意Web页面和代码 |
7 |
7 |
7 |
10 |
10 |
8.2 |
操纵图书表数据 |
10 |
5 |
5 |
10 |
10 |
8 |
使应用程序拒绝服务 |
6 |
6 |
7 |
9 |
10 |
7.6 |
欺骗Web服务器 |
10 |
2 |
2 |
8 |
10 |
6.4 |
利用服务客户请求过程来提升特权 |
10 |
2 |
2 |
1 |
10 |
5 |
STRIDE模型缓和方案如下:
威胁类型 |
缓和方法 |
假冒 |
认证 保护秘密 不存储秘密 |
篡改 |
适当的授权 散列(Hash)表 消息认证代码 数字签名 抗篡改的协议 |
否认 |
数字签名 时间戳 审核跟踪 |
信息泄露 |
授权 加强保密的协议 加密 保护秘密 不存储秘密 |
拒绝服务 |
适当的认证 适当的授权 过滤 节流(Throttling) 服务质量 |
特权提升 |
以最小权限运行 |
针对Web应用程序的威胁:
威胁 |
STRIDE |
缓和方法和技术 |
在线浏览图书信息或图书借阅记录 |
I |
使用SSL/TLS加密服务器和客户间的管道,也可以使用IPSec |
上传恶意Web页面或Web服务代码 |
T |
需要对Web开发人员进行加强的认证,为文件提供加强的ACL,这样只有Web开发人员和管理人员才可以改写或删除文件 |
攻击者是应用程序拒绝服务 |
D |
使用防火墙抛弃某些IP包,限制匿名用户使用的资源(如内存,磁盘空间,数据库时间),最后,将日志文件移到另一个文件卷 |
操纵图书表数据 |
T和I |
根据所用的网络协议,使用SSl/TLS或带保密选项的DCOM/RPC保护更新后的数据流,这会缓和信息泄露威胁,SSL/TLS还提供了消息认证编码来检测数据篡改攻击,在选择了保密选项时COM/RPC还提供了完整性检查,也可以考虑使用IPSec |
利用服务客户请求进程来提升特权
|
E |
运行进程时遵循最小特权原则,如果该进程被破坏,这些代码也不能获得额外的能力 |
欺骗Web服务器
|
S |
最简单的解决方案是使用SSL/TLS,如果正确配置,它允许客户软件对服务器进行认证,公司的策略规定所有的客户必须这样做,另外也可以用Kerberos认证,Kerberos提供了服务器与客户之间的相互认证. |
身份认证是这样的一个过程:一个实体,也被成为主体(principal),验证另一个实体是它声称的那个人或食事物,主题可以是用户,一些可执行代码,或一台计算机,认证需要证书(credential)形式的证据(evidence),证据可以使多种形式的,例如,口令,私钥,或者有可能的话,使用生物技术来做认证,比如指纹
windows可以使用许多认证协议,一些被内置在系统中,一些则要求你再操作系统中使用构建块来创建你的认证系统,这些模式有:
基本认证是一个简单的协议,它是作为HTTP 1.0协议的一部分.虽然事实上所有的Web服务器和Web浏览器都支持这个协议,但是它是非常不安全的,因为口令没有被保护,事实上,用户名和口令是64位编码的,这很容易解码,简而言之,由于认证的不安全性,不鼓励在任何基于Web的应用程序中使用它,除非在客户机与服务器之间使用SSL/TLS或者IPSec保护连接.
摘要认证比基本认证有更多的优点,最值得注意的是,口令不是以明文的形式从浏览器传输到服务器的,同时,除了HTTP之外,其他的因特网协议如LDAP,IMAP,POP3,SMTP也可以考虑使用摘要认证
基于表单的认证没有标准的实现方法,大多数站点都有他们自己的方案,然而,在微软的ASP.NET中通过FormsAuthenticationModule类,简历一个基于表单的认证,它是IHttpModule接口的一个实现
Passport认证是微软提供的集中式认证方法,Passport被用于许多服务,包括Microsoft Hotmail, Microsoft Instant Messenger以及大量的电子商务站点,使用它最大的好处就是,如果你已经用你的Passport登录到一个服务,之后再去另一个启用了Passport的Web服务是,你不需要再一次输入你的证书.
Windows支持两个主要的认证协议:NTLM和Kerberos.
NTLM认证是一个挑战响应协议,它被许多Windows服务使用,包括文件和打印服务,IIS, Microsoft SQL Server和Microsoft Exchange.
Kerberos v5 认证是由麻省理工学院(MIT)设计的,Windows 2000以及以后的版本实现了Kerberos,它提供一个主要优点是相互认证,换句话说,客户机和服务器的真实性都被校验,Kerberos通常被认为是比NTLM更安全的协议,并且在许多情况下它的速度更快.
NTLM(NT LAN Manager, NT网络管理器)认证
现在X.509最实际的用法是SSL/TLS,当你用HTTPS而不是HTTP与一台Web服务器建立带有SSL/TLS的连接时,这是通过将服务器的证书中的普通名字与应用程序正在连接的主机名相比较来完成认证的,如果这两个名称不同,应用程序就会警告你,可能未与正确的服务器进行通信pIPSec (Internet Protocol Security, 网际协议安全)
许多服务产品,包括Microsoft Internet认证服务(IAS)都支持RADIUS (Remote Authentication Dial-In User Service,远程验证拨入用户服务)协议,它实际上是远程用户认证的标准协议
授权
一旦通过认证确定了主体的身份,主体通常会希望访问资源,例如打印机和文件,授权是通过执行一个访问检查,来判断这个已被认证的主题是否有权访问他请求的资源,对同样的一个资源,某些主题会比其他主题有更多的访问权. Windows提供了很多授权机制,包括:
在Windows NT及以后的版本中,所有的对象都可以用ACL保护,一个ACL是一系列的访问控制项(Access ControlEntry, ACE),每一个ACE决定一名主机能够对一个资源做什么事情
特权是赋予用户的权利,用户可以执行系统范围内的操作,一些操作被认为是特许的,并且应该只授予受信任的个人,这样的例子包括调试应用程序,备份文件和远程关闭计算机
IP限制是IIS的一个功能,你可以限制Web站点的一部分,例如一个虚拟目录或一个目录,也可以限制整个Web站点,使得只有专门的IP地址,子网和DNS名可以访问它.
许多服务提供了它们自己的访问控制形式,来保护他们自己专门的对象类型,例如,Microsoft SQL Server提供了权限,管理员用它可以决定谁有权访问哪一个表,存储过程和视图,COM+应用程序支持角色,它可以为一组组件定义一类用户,每一个角色定义了允许哪一个用户调用组件上的接口.
防篡改和增强保密性的技术
许多网络协议支持抗篡改的数据保密.抗篡改是指保护数据不被恶意的或意外的删除或修改的能力,Windows中最常见的抗篡改和加强保密的协议核技术如下:
SSL是由Netscape在90年代中期发明的,它对在服务器和客户机之间传输的数据加密,并用MAC (Message Authentication Code,消息认证代码)提供数据完整性,TLS则是IETF (Internet Engineering Task Force, Internet工程任务组)认可的SSL版本.
IPSec支持认证,数据保密需要的加密数据完整性需要的MAC,在使用了IPSec安全措施的服务器之间传输的所有数据,都被加密并做了完整性检查,利用IPSec的优点,不需要对应用程序做任何调整,因为IPSec是在TCP/IP网络的IP层实现的
分布式COM和远程调用支持认证,保密性和完整性,它对性能的影响是很小的,除非你传输大量的数据.
EFS (Encrypting File System, 加密文件系统)已经被包含在Windows 2000以及以后的系统中,它是一个基于文件的加密方法,这个方法是NTFS的一个功能,SSL, TLS, IPSec和DCOM/RPC关心的是网络上传输的数据,而EFS对文件加密并提供篡改检查.
保护秘密或最好不要保存秘密
保护秘密最好的办法是,不要在第一个出现的地方存储它,如果需要,允许你的用户从他们的存储中来使用它,而你不用存储它,如果你必须存储秘密数据,那么尽最大的能力保护它
审核 Auditing / 日志 Logging
审核(auditing)也被称作日志(logging),其目的是收集成功的和失败的对对象的访问,特权的使用,以及其他重要的安全活动的信息,并将他们记录在永久的存储设备中,以便日后分析,Windows在Windows事件日志,IIS Web日志中提供了日志(审核)功能,还有许多其他的应用程序提供了专门的日志文件,包括SQL Server和Exchange日志文件.
p要点:所有的日志文件都必须是安全的,不会受到攻击的,这一点十分重要.你应该在你的威胁模型中加入一个威胁,用于描述日志文件被读,修改甚至删除的可能性及其影响,以及应用程序不能写日志记录的可能性.
过滤,节流和服务质量
过滤(Filtering)是指对接收到的数据进行检查,并判断是接受还是拒绝这个包.这也是包通过过滤防火墙的方式,许多IP层拒绝服务威胁,都可以用过滤防火墙来缓和. 节流(Throttling)是指限制对系统请求的数量,例如,你可以只允许少量的匿名请求,同时允许更多的被认证的请求. 服务质量(Quality of Service)是一组组建,他们允许你为专门的传输类型提供优先处理,例如,你可以允许优先处理流媒体.
威胁#1
威胁类型 |
信息泄露 |
威胁标识 |
1 |
威胁描述 |
恶意用户在线浏览图书信息或图书借阅记录 |
威胁目标 |
学生信息表请求数据流以及执行管理员策略的过程 |
攻击技术 |
使用SSL/TLS加密服务器和客户间的管道,也可以使用IPSec |
安全影响 |
信息泄露、改变和破坏 |
风险 |
9 |
缓解措施 |
授权 加强保密的协议 加密 保护秘密 不存储秘密 |
威胁#2
威胁类型 |
篡改数据 |
威胁标识 |
2 |
威胁描述 |
攻击者上传恶意Web页面和代码 |
威胁目标 |
Web页面或Web服务代码 |
攻击技术 |
需要对Web开发人员进行加强的认证,为文件提供加强的ACL,这样只有Web开发人员和管理人员才可以改写或删除文件 |
安全影响 |
管理配置错误使通过脆弱的安全上传Web页面 |
风险 |
8.2 |
缓解措施 |
适当的授权 散列(Hash)表 消息认证代码 数字签名 抗篡改的协议 |
威胁#3
威胁类型 |
拒绝服务 |
威胁标识 |
3 |
威胁描述 |
攻击者使应用程序拒绝服务 |
威胁目标 |
服务客户请求过程 |
攻击技术 |
使用防火墙抛弃某些IP包,限制匿名用户使用的资源(如内存,磁盘空间,数据库时间),最后,将日志文件移到另一个文件卷 |
安全影响 |
应用程序的其它部分可能会被拒绝服务攻击,但是,处理客户请求过程的Web服务器处于最前端,因此最容易受到攻击,如果我们保护了应用程序的这一部分,其他过程收到的攻击是可以容忍的 |
风险 |
7.6 |
缓解措施 |
适当的认证 适当的授权 过滤 节流(Throttling) 服务质量 |
威胁#4
威胁类型 |
篡改数据及潜在的信息泄露 |
威胁标识 |
4 |
威胁描述 |
攻击者操纵图书表数据 |
威胁目标 |
图书表数据 |
攻击技术 |
根据所用的网络协议,使用SSl/TLS或带保密选项的DCOM/RPC保护更新后的数据流,这会缓和信息泄露威胁,SSL/TLS还提供了消息认证编码来检测数据篡改攻击,在选择了保密选项时DCOM/RPC还提供了完整性检查,也可以考虑使用IPSec |
安全影响 |
指在更新工资表数据跨越网络从管理控制台到管理策略过程,然后到攻击表数据存储时对其进行的访问 |
风险 |
8 |
缓解措施 |
适当的授权 散列(Hash)表 消息认证代码 数字签名 抗篡改的协议 授权 加强保密的协议 加密 保护秘密 不存储秘密 |
威胁#5
威胁类型 |
篡改数据及潜在的信息泄露 |
威胁标识 |
5 |
威胁描述 |
攻击者利用服务客户请求过程来提升特权 |
威胁目标 |
在Web服务器环境或服务客户请求 |
攻击技术 |
运行进程时遵循最小特权原则,如果该进程被破坏,这些代 码也不能获得额外的能力 |
安全影响 |
可再现性和可利用性很低,因为对于攻击者,要利用这一点,唯一可行的方式就是利用Web服务器进程的安全漏洞,影响用户的因素也很低,但只有这台服务器受影响 |
风险 |
5 |
缓解措施 |
适当的授权 散列(Hash)表 消息认证代码 数字签名 抗篡改的协议 授权 加强保密的协议 加密 保护秘密不存储秘密 |
威胁#6
威胁类型 |
欺骗 |
威胁标识 |
6 |
威胁描述 |
欺骗计算机执行客户请求进程 |
威胁目标 |
服务客户请求过程 |
攻击技术 |
最简单的解决方案是使用SSL/TLS,如果正确配置,它允许客户软件对服务器进行认证,公司的策略规定所有的客户必须这样做,另外也可以用Kerberos认证,Kerberos提供了服务器与客户之间的相互认证 |
安全影响 |
让一台合法机器脱离网络,意味着或者物理脱离(重命名计算机或关闭电源),或者使用攻击技术使之不可访问(通过DNS欺骗或洪水攻击) |
风险 |
6.4 |
缓解措施 |
认证 保护秘密 不存储秘密 |