
软件安全-04-软件安全测试.ppt
28页软件安全技术,示范性软件学院软件技术系 郭建东,软件安全测试- 安全测试的内容与方法,主要内容:,4.7 安全漏洞分级 4.8 安全的常规测试方法 4.9 穿透测试,4.7 安全漏洞分级,DREAD模型:进行威胁程度级别分析的有效技术Michael Howard 和David Leblanc在《编写安全的代码》提出 DREAD: 潜在的破坏(Damage potential) 再现性(Reproducibility) 可利用性(Exploitability) 受影响用户(Affected users) 可发现性(Discoverability),利用DREAD模型对威胁分级(1):,潜在的破坏 如果该漏洞被利用,所产生的破坏程度 再现性 探测并利用该漏洞所需要的努力要多久 可利用性 是否需要身份鉴别? 需要身份鉴别 不需要身份鉴别,但需要难以确定的知识 不需要身份鉴别,也不需要特殊的知识,受影响的用户 漏洞利用的影响面有多大 仅仅是特殊的配置 普通情况 默认用户或者大多数用户 可发现性 漏洞研究人员或黑客找出该漏洞的可能性,利用DREAD模型对威胁分级(2):,TRAP模型,基于可利用性提出。
TRAP包括因素: 时间(Time) 可靠性(Reliability)/再现性(Reproducibility) 访问(Access) 定位(Positioning),利用TRAP模型对威胁分析(1),时间:某些漏洞可能需要长时间的探测并利用如加密漏洞需要数千年的时间计算才能利用,表示该漏洞的风险非常低 可靠性/再现性:漏洞的严重程度依赖于该漏洞可被攻击者利用的可靠性或再现性通常高级别漏洞的可靠性和可再现性高访问:利用漏洞通常可以为攻击者提供更高的访问权 定位:利用一个漏洞,攻击者必须能够与存在该漏洞的应用程序交互,并能访问到含有该漏洞的代码利用TRAP模型对威胁分析(2),4.8 安全的常规测试方法,4.8.1 基于风险的安全测试 4.8.2 白盒、黑盒、灰盒测试,4.8.1 基于风险的安全测试,安全测试的目标:在给定的时间和资源不变的情况下,尽可能多地找出最为严重的安全缺陷 威胁建模=风险建模 基于风险的测试是软件测试的常规方法,基于风险的测试的三个步骤:,Step1 信息搜集 Step2 威胁(风险)建模 Step3 可用性分析,Step1 信息搜集,信息搜集的目的: 熟悉程序的设计 了解程序访问入口点位置 了解程序所涉及的信息资产-需要保护的信息 信息搜集的方法: 程序设计文档的评审 与设计人员和架构师会谈 运行时分析-使用调试和诊断程序,与架构师会谈内容:,了解系统组件框架 了解组件之间的主要数据流 了解来自系统进程空间之外的数据流-程序外的数据是非受信数据,可能是攻击性输入,可能的外部数据流:,网络I/O 远程过程调用(RPC) 外部系统查询:域名系统(DNS)、数据库查找、轻量级目录访问协议(LDAP) 文件I/O 注册表 命名管道,互斥、共享内存 WINDOWS 消息 其他的操作系统调用,要求架构师对外部数据流给予说明:,数据流的目的 是否进行了输入检查?白名单还是黑名单? 有没有与数据流结合的身份鉴别或会话管理? 是否有反拒绝服务攻击的保护措施?,运行时分析:,架构师的描述内容可能与真实情况违背 应用程序痕迹(application footprinting): 网络端口 文件 注册表键值,Step2 威胁建模,威胁建模的目的:排定测试优先级,找出测试区域,发现系统弱点 关于威胁建模的参考资料: 《Thread Modeling》,Frank Swiderski,Window Snyder,Microsoft公司,威胁建模步骤:,识别威胁路径 识别威胁 识别漏洞 将漏洞分级/排定优先级,威胁建模步骤1-识别威胁路径,目的:识别应用程序级别最高的风险领域,确定相应的保护措施 步骤: 了解应用程序平台和编程语言的整体强度 确定用户的访问类别 建立并分析数据流图,威胁建模步骤2-识别威胁,目的:深入识别沿威胁路径的处理,逐一理清与处理相关的每一种威胁。
针对威胁路径的每一个处理组件的问题列表: 该组件执行什么样的处理 该组件如何确定身份 该组件信任数据或者其他组件吗 该组件修改了什么数据 该组件有何外部连接,在一个威胁路径上的9个高风险活动:,授权 同步或会话管理 处理私密数据 网络访问,数据解析 文件访问 数据库访问 生成子进程 身份鉴别,目的:找出可能存在于组件中的实际漏洞 对漏洞的可能缓解措施: 数据验证测试 资源监视 关键功能的访问控制 搜寻漏洞的方法及途径: 安全设计审查 安全代码审查 安全测试,威胁建模步骤3-识别漏洞,DREAD模型: Damage potential 潜在的破坏 Reproducibility 再现性 Exploitability 可利用性 Affected users 受影响的用户 Discoverabiliby 可发现性,威胁建模步骤4-风险分级,Step3 判定可利用性,目的:判断漏洞是否可被攻击者利用 关于可利用性的一个基本原则:在开发中直接修补一个可能会被利用的问题比花时间判定其是否会被利用容易4.8.2 白盒、黑盒和灰盒测试,白盒测试:也称明盒测试、开盒测试或信息充分测试 白盒测试可以看作是内部的攻击。
测试人员可以访问源代码和设计文档,可以进行威胁建模或逐行的代码检查 白盒测试是找出漏洞最为有效的方法黑盒测试:,以局外人的身份对系统进行攻击,使用工具检查系统的攻击面,并探查系统的内部信息 黑盒测试是白盒测试的补充 方向工程团队利用黑盒测试验证隐蔽式安全方法的强度灰盒测试:,组合使用白盒测和黑盒测试 白盒测试用于发现在设计和开发中详细说明的功能中的缺陷; 黑盒测试在无法了解程序内部信息的时候找出缺陷 程序开发中的调试运行是典型的灰盒测试方法。
