软件安全培训

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发安全性设计 信息工程事业部
袁洋
2013.05
www.mesnac.com
主讲内容 软件安全的概念
安全漏洞
风险管理框架 安全开发生命周期 软件安全的七个接触点
www.mesnac.com
第一部分
软件安全的概念
www.mesnac.com
许多关键基础设施取决于计算机安全
按照客户的要求 事先进行需求评 修改 审
按照客户要求变 事先定义清楚并 更 由客户确认 修改项目目标 实现明确项目目 标
立即与客户进行 制定沟通管理计 沟通 划 …… ……
www.mesnac.com
微软:可信赖计算安全开发生命周期SDLC 微软
使用安全 开发工具 安全体系结构 启动安全 安全设 和最优开 和攻击面 并注册 计最优 发和测试 审核 威胁 SWI 方法 方法 建模 安全培训 为产品 创建安 全文档 和工具 预备 安全 反应 计划 安全 推动 安全 服务 和 反应 执行
渗透 测试
最终 安全 审核
需求
设计
实现
验证
发行 支持 和 服务
www.mesnac.com
Gary McGraw:软件安全接触点 (最优化方法)
安全需求 代码审核 (工具) 风险分析 基于风险的 安全测试 风险分析 渗透测试 安全操作
滥用案例
需求和 使用案例
体系结构 和设计
测试计划
代码
测试和 测试结果
www.mesnac.com
SQL注入
public static boolean doQuery(String Id){ …… try { …… Statement st=….; ResultSet rs=st.executeQuery(“SELECT conum FROM cust WHERE id=”+Id); while(rs.next()){ ….. } catch…… } 如果传递来的参数是“1 or 2>1 --”,则执行SQL语句: SELECT conum FROM cust WHERE id=1 or 2>1 --
理解 商业环境
5 实施修复并 进行验证
www.mesnac.com
某软件项目的风险管理计划
项目风险管理计划
风险识别
潜在Leabharlann Baidu险 后果
风险评估
可能 严重 性 性 5 8 6 5 … 9 9 8 9 …
风险应对措施
应急措施 预防措施
客户的需求不明 客户不接受产品 确 或拒绝付款
项目范围定义不 清楚 项目目标不明确 与客户沟通不够 …… 项目没完没了 项目进度拖延或 成本超支 软件不能满足客 户需求 ……
任何用于构建网站的编程语言或者技术都可能受 到影响。
www.mesnac.com
跨站脚本
www.mesnac.com
跨站脚本 <% String eid = request.getParameter("eid"); %>
...
Employee ID: <%= eid %> XSS测试语句之一: ><script>alert(document.cookie)</script>
Findbugs eclipse插件使用指南
www.mesnac.com
解决软件安全的方法 Gary McGraw博士
应用风险管理
软件安全的接触点(最优化方法) 知识
微软:
可重复的流程
工程师教育
度量标准和可测量性
www.mesnac.com
风险管理框架 “安全就是风险管理”。
风险就是在项目过程中有可能发生的某些意外事 情。例如:缺少对开发工具的培训。
从应用领 域的反馈
www.mesnac.com
利用工具进行代码审核
① ②
风险分析

安全需求

滥用案例

基于风险的 安全测试
代码审核 (工具)


风险分析
渗透测试

安全操作
需求和 使用案例
体系结构 和设计
测试计划
代码
测试和 测试结果
从应用领 域的反馈
www.mesnac.com
代码审核 所有的软件项目有一个共同的工件—源代码。 大量的安全问题都是由可以在代码中发现的简单 缺陷引起的,例如缓冲区溢出漏洞与SQL注入漏洞。 代码审核就是为了查找和修复存在于源代码中的 缺陷。
未作审计日志
www.mesnac.com
实现漏洞示例 2001年的红色代码(Code Red)蠕虫利用 Microsoft的IIS Web服务器的软件缺陷。 字符串变量是Unicode字符类型的(每个字符占用 两个字节),在计算缓冲区的时候应该是偏移量 为2,但IIS在计算缓冲区大小的时候却按照偏移 量为1错误的计算缓冲区。 导致在14个小时内,就有359000台机器感染了红 色代码蠕虫。
1988年,第一个Internet蠕虫—Morris蠕虫就是 对finger服务器攻击,造成缓冲区溢出,几乎导 致Internet瘫痪。
www.mesnac.com
SQL注入 通过把SQL命令插入到Web表单递交或输入域名 或页面请求的查询字符串,最终达到欺骗服务器 执行恶意的SQL命令。 任何可以与数据库交互的编程语言都可能出现 SQL注入漏洞。 SQL注入的最大的威胁是攻击者可以获得隐私的 个人信息或者敏感数据;也可能导致服务器甚至 网络的入侵。
www.mesnac.com
25个最危险的编程错误
可穿透的防范措施:这一类缺点与防御技术的经常误用、 滥用,或彻底忽略有关。 CWE-285:不正确的访问控制(授权) ; CWE-327:使用一个被攻破的或危险的加密算法 ; CWE-259:硬编码的密码 ; CWE-732:对关键资源的使用权限不安全的分配 ; CWE-330:使用不够有效的随机值 ; CWE-250:给予没有必要的权限; CWE-602:服务器端的安全由客户端实施。
代码审核可以手工审核或者使用静态分析工具进 行审核。 静态分析工具审核速度快,并不需要操作人员具 有丰富的安全专业知识。
www.mesnac.com
25个最危险的编程错误
组件间不安全的交互:这些缺陷与数据在单独的组件、模 块、程序、进程、线程或系统之间不安全发送和接受方法 有关。 CWE-20:不适当的输入验证 ; CWE-116:不正确的编码或输出转义; CWE-89:SQL查询结构保护失败(又名“ SQL注入”) ; CWE-79:网页结构保护失败(又名“跨站脚本攻击”) ; CWE-78:操作系统命令结构保护失败; CWE-319:明文传输的敏感信息; CWE-352:伪造跨站请求(CSRF); CWE-362:竞争条件 ; CWE-209:错误消息的信息泄漏;
www.mesnac.com
跨站脚本 跨站脚本(XSS,Cross-site Scripting)漏洞是一 类专门针对Web应用程序的漏洞,它会使得产生 漏洞的Web服务器绑定的用户数据(通常保存在 cookie中)被泄露给恶意的第三方。
所谓“跨站”是指;当一个客户端访问了可正常 提供服务但是有漏洞的Web服务器后,cookie从此 客户端传递给了攻击者控制的站点。
www.mesnac.com
几个常见致命安全漏洞 缓冲区溢出
SQL注入
跨站脚本
www.mesnac.com
缓冲区溢出 当一个程序允许输入的数据大于已分配的缓冲区 大小时,缓冲区溢出就会发生。 有些语言具有直接访问应用程序内存的能力,如 果未能处理好用户的数据就会造成缓冲区溢出。C 和C++是受缓冲区溢出影响的两种最常见的编程语 言。 缓冲区溢出造成的后果小到系统崩溃,大到攻击 者获取应用程序的完全控制权。
风险管理的关键:随着软件项目的展开,不断的 确定和追踪风险。 RMF的基本思想:随时间变化,对软件安全进行确 定、评级、追踪和理解。
www.mesnac.com
Cigital的风险管理框架(RMF)
测量和报告 1 2 确定商业 和技术风险 工件分析 3 综合考虑并 对风险分析 4 定义降低 风险的策略
www.mesnac.com
25个最危险的编程错误
危险的资源管理:此类缺陷与软件没有妥善管理创造、使 用、转让或取消重要的系统资源有关。 CWE-119:对内存缓冲区边界操作限制失败 ; CWE-642:外部控制的临界状态数据; CWE-73:外部控制的文件名或路径 ; CWE-426:不可信的搜索路径; CWE-94:代码生成控制失败(又名“代码注入” ) ; CWE-494:下载的代码未进行完整性检查 ; CWE-404:资源关闭或释放不正确; CWE-665:不正确的初始化; CWE-682:不正确的运算(如出现整数溢出等错误)。
常见的安全设计问题 有缺陷的输入验证
未在安全上下文环境中执行验证 验证例程不集中 不安全的组件边界
薄弱的结构性安全
大的攻击面 在过高权限级别上运行进程 没有纵深防御 失效时处理不安全
www.mesnac.com
常见的安全设计问题 其他
代码和数据混在一起 错将信任寄予外部环境 不安全的默认值
www.mesnac.com
常见的安全设计问题 密码技术使用的败笔
创建自己的密码技术 选用了不当的密码技术 依赖隐蔽式安全
编写到程序中的密钥
错误的处理私密信息
对用户及其许可权限进行跟踪
会话管理薄弱或缺失 身份鉴别薄弱或缺失
授权薄弱或缺失
www.mesnac.com
控制流分析器
配臵流分析器 结构分析器
www.mesnac.com
静态分析工具FindBugs 有了静态分析工具,就可以在不实际运行程序的 情况对软件进行分析。 FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以 发现可能的问题。 FindBugs 的 缺陷清单及说明。
www.mesnac.com
Fortify
Fortify SCA是发现软件安全漏洞隐患最全面和分析最完 整的产品。 它使用特有的成熟的五大软件安全分析引擎、最全面最广 泛的软件安全代码规则集和fortify公司特有的X-Tier Dataflow™ analysis技术去检测软件安全问题。 Fortify专门的分析器 数据流分析器 语义分析器
www.mesnac.com
其他致命安全漏洞
格式化字符串 整数溢出 命令注入 未能处理错误信息 未能保护好网络流量 使用Magic UPL及隐藏表单字段 未能正确使用SSL和TLS 使用基于弱口令的系统 未能安全的存储和保存数据 信息泄露 不恰当的文件访问 清新网络域名解析 竞争条件 未认证的密钥交换 密码学强度随机数 不良可用性
www.mesnac.com
关于软件安全的相关报道
www.mesnac.com
软件安全的概念 出现软件故障现象的原因是软件存在漏洞。 “任何软件,不论它看起来是多么安全,其中都 隐藏漏洞”。 软件安全的目的是尽可能消除软件漏洞,确保软 件在恶意攻击下仍然正常运行。
www.mesnac.com
Windows操作系统复杂性
www.mesnac.com
第二部分
安全漏洞
www.mesnac.com
安全漏洞
www.mesnac.com
安全漏洞
www.mesnac.com
安全漏洞 所有的软件都存在潜伏的漏洞
安全必须经过长时间实际运行证明
软件安全漏洞可分为两大类:
设计漏洞 实现漏洞
www.mesnac.com
设计漏洞示例 Microsoft Bob是作为Windows ME和Windows 98的 辅助程序而设计的,其中包含一个设置系统密码 的工具。 当用户试着输了三次(不正确)密码时,Bob将 弹出如下的信息:“我想你忘记了你的密码,请 输入一个新的密码。”然后,就允许用户修改密 码,即使不知道老密码。
报告给CERT/CC的与安全相关的软件弱点
www.mesnac.com
软件安全问题加剧的三个趋势 互联性
多数计算机与Internet相连 多数软件系统互联于Internet
可扩展性
通过接受更新或者扩展件使系统升级
复杂性
代码行数增加、网络式、分布式
www.mesnac.com
相关文档
最新文档