软件安全测试基础_讲义

上传人:Bod****ee 文档编号:55396581 上传时间:2018-09-28 格式:PPT 页数:52 大小:4.67MB
返回 下载 相关 举报
软件安全测试基础_讲义_第1页
第1页 / 共52页
软件安全测试基础_讲义_第2页
第2页 / 共52页
软件安全测试基础_讲义_第3页
第3页 / 共52页
软件安全测试基础_讲义_第4页
第4页 / 共52页
软件安全测试基础_讲义_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《软件安全测试基础_讲义》由会员分享,可在线阅读,更多相关《软件安全测试基础_讲义(52页珍藏版)》请在金锄头文库上搜索。

1、Nothing is impossible,软件安全测试基础,蔡利平,2011年5月,什么是软件安全 关注软件安全的原因 软件安全包含哪些方面 软件安全问题产生原因 软件安全问题解决之道 软件安全测试方法,内容,2003年蠕虫病毒事件 熊猫烧香病毒 金融业攻击案例 伊朗核电站“震网(Stuxnet)”病毒 欧洲宇航局的阿丽亚娜5号火箭软件故障我们的案例: Kingview 历史库端口漏洞 Kingview WEB漏洞KvWEBSvr.dll,典型案例,什么是安全 ISO:为数据处理系统建立和采用的技术和管理的安全保护,保护计算机硬件、软件不因偶然或恶意的原因遭到破坏、更改和泄漏 物理安全 逻辑

2、安全 信息的机密性 信息的完整性 信息的可用性 安全的产品,基本概念,漏洞(vulnerability) RFC 2828:系统设计、实现或操作和管理中存在的缺陷或弱点,能被利用而违背系统的安全策略 漏洞挖掘 漏洞分析 漏洞利用 0day漏洞 Shell Code,基本概念,软件自身安全 软件自身完整性 软件自身可信性 软件存储安全 软件通信安全 软件运行安全,软件安全需求,可信计算(Trustworthy Computing)的需要 墨菲定律(Murphys Law) 所有的程序都有缺陷 安全的产品是高质量的产品 完美的软件媒体(或竞争对手)将在安全问题上大做文章 人们将避开那些实际工作状况

3、与其广告不符的产品 不要成为牺牲品 修补安全漏洞的代价是高昂的,关注软件安全的原因,软件的应用范围越来越广,所起的作用越来越重要 黑客攻击越来越容易,关注软件安全的原因,漏洞利用速度越来越快,关注软件安全的原因,病毒的种类和感染的机会越来越多,关注软件安全的原因,对应用层的攻击远高于非网络层或系统层,关注软件安全的原因,2009年,卡巴斯基全功能安全软件的入侵检测系统(IDS)拦截了超过2亿1989万9678次的网络攻击,关注软件安全的原因,2009年卡巴斯基统计的20种常见漏洞,软件安全包含的内容,内存安全 线程/进程安全 异常处理安全 输入安全 数据库安全 国际化安全 远程调用和组件安全

4、WEB安全 避免拒绝服务攻击,软件安全的内容,头号公敌缓冲区溢出 大部分缓冲区溢出漏洞允许攻击者控制计算机内存空间,并植入、运行任意代码 strcpy() MultiByteToWideChar() 后果: 程序运行失败,程序出现异常 操作系统异常 成为黑客攻击的目标 堆栈溢出 off by one溢出 堆溢出 并不是所有缓冲区溢出都是可利用的,进程内存区域,内存安全,内存安全,缓冲区溢出堆栈溢出,正常,溢出,整数溢出 数组下标越界 字符串格式化,内存安全,线程同步安全 线程协作安全 线程死锁安全 互斥条件 请求与保持条件 不剥夺条件 循环等待条件 线程控制安全 进程安全,线程/进程安全,“出

5、现错误就应该崩溃” 目的:保证系统的正常和安全运行 异常捕获的安全 异常处理的安全 本地处理 向客户端抛出其它异常处理 On error resume On error goto,异常/错误处理中的安全,“一切输入都是有害的” 用户输入安全 数字输入安全 字符串输入安全 环境变量输入安全 文件名安全 数据库输入安全,输入安全,在数据没有得到验证之前不要相信它们!,数据通过不可信任环境和可信任环境的边界时,必须要经过验证。,国际化(I18N) 本地化(L10N) 全球化(G11N) 字符集转换 MultiByteToWideChar() WideCharToMultiByte(),国际化安全,对

6、象内存分配与释放 对象线程安全 对象序列化安全 静态成员安全,面向对象中的安全,URL操作攻击 页面状态值安全 URL传值 表单传值 Cookie方法 Session方法 Web跨站脚本(XSS)攻击 SQL注入,Web安全,Access Control List 应用程序抵御攻击的最后屏障 Administrators(完全控制)+Everyone(读取) 特权提升,不适当的访问控制(ACL)设置,远程调用(RPC)安全 恶意调用RPC服务器中的过程 客户端和服务器之间传递的信息被窃听,数据被篡改 DCOM安全 Active X组件安全,远程调用安全,拒绝服务DoS 应用程序失败攻击 资源不

7、足攻击 CPU不足攻击 内存不足攻击 资源不足攻击 网络带宽攻击 攻击原理 基于漏洞的攻击(逻辑攻击) 基于流量的攻击(洪水攻击) 分布式拒绝服务攻击(DDoS),拒绝服务攻击,加密=安全? 糟糕的密码保存处理 加密算法中使用不良的随机数,数据的加密保护,数据的加密保护,SQL注入,代码注入,e,Internet,Request,Response,DLL注入 Windows消息钩子 远程线程注入 注册表修改,代码注入,软件安全方面的观念和知识不足 经济上的回报少甚至没有 软件设计没有考虑安全特性 编码错误 测试不到位,软件安全问题产生原因,我不能想象导致这船沉没的任何情况,现代造船技术已经消除

8、了这种可能性。泰坦尼克号船长,E.I.Smith,软件安全问题解决之道,灌输软件安全观念 了解软件安全的重要性 “搞破坏” 与行业安全问题保持同步 持续的安全教育,让每个人都参与进来,主动的安全开发过程,概念: 1、安全教育 2、专职安全人员,威胁建模,设计完毕: 安全小组审查,编码完毕: 1、审查旧的缺陷 2、安全编码准则,安全运动,响应过程,当我们面对添加新特性和解决安全问题的选择时,我们需要选择安全。比尔.盖茨 Trustworthy Computing备忘录,安全特性不等于安全的特性 安全专业技术+领域专业技术 更多的眼睛不代表更安全 设计阶段 定义产品的安全目标 安全是产品的一种特性

9、 要有足够的时间考虑安全问题 安全的设计源于威胁模型 终结不安全的特性 设置BUG门槛 安全小组审查,主动的安全开发过程,开发阶段 只有核心成员能够查看或更新新代码 新代码的安全审查 定义安全的编码准则 审查旧的缺陷 外部安全审查 测试阶段 发行和维护阶段 如何知道已完成 响应过程,主动的安全开发过程,构建威胁模型 首先修复旧代码 淘汰可能构成长期安全问题的旧功能 在某种程度上,工具很关键 自动化,软件安全的解决之道,对最可能影响系统的威胁进行系统地识别和评估 在软件设计阶段建立,并贯穿于整个应用程序生命周期的一个迭代过程 威胁建模流程威胁建模的输出,威胁建模,识别资产,创建体系结构概述,分解

10、应用程序,识别威胁,记录威胁,评估威胁,威胁建模的作用 设计人员 开发人员 测试人员 威胁模型只能降低或减少攻击的风险 模型应是一个动态的项目,威胁建模,安全模型 评测标准 美国国防部的橘皮书(可信计算机系统评测标准TCSEC),安全模型,不具备最低安全限度,具备最低安全限度,具备中等安全保护能力,具备最高安全保护能力,一些成功的做法 微软提出的安全开发生命周期(SDL, Security Development Lifecycle) 美国NIST(National Institute of Standards and Technology)成立了软件保证度量和工具测量项目SAMATE,源码安

11、全性分析是重要组成部分,软件安全的解决之道,软件安全测试,系统必须经受住正面的攻击,但也必须经受住侧面和背后的攻击 软件安全测试过程 正向测试过程 反向测试过程,软件安全测试,基于威胁模型的安全测试过程 根据威胁模型,建立测试计划和测试方案 确定安全测试的最小组件,并确定其输入 确定测试优先级 设计测试用例 执行测试 总结测试结果,软件安全测试,软件安全性测试方法 安全功能测试 安全漏洞测试 代码审查或静态代码分析 基于故障注入的安全性测试 模糊测试 威胁模型和攻击树理论 基于风险的安全性测试 基于渗透的安全性测试,软件安全测试,软件安全测试原理 及早测试、频繁测试 掌握安全测试知识 理解安全的范围 像攻击者一样思考 认识被测主体 使用合适的工具 难在细节 适当情况下要使用源代码 要形成正式的测试报告,软件安全测试,永远无法达到零安全缺陷 安全是一场永未完成的战斗 没有银弹,软件安全测试,Impossible,Im possible,构建更安全的软件!,编写安全的代码 模糊测试 软件安全编程技术等相关书籍,参考资料,Q & A,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号