CISP 软件安全开发(含真题)201608_第1页
CISP 软件安全开发(含真题)201608_第2页
CISP 软件安全开发(含真题)201608_第3页
CISP 软件安全开发(含真题)201608_第4页
CISP 软件安全开发(含真题)201608_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统安全中电运行杨贤渠版本:3.0软件开发安全软件开发安全背景为什么要做软件安全开发?一、网络攻击阶段自动化一、网络攻击阶段自动化二、网络攻击二、网络攻击智能化:智能化:相当多的工具已经具备了反侦破、只能动态行为、攻击工具变异等特点三、漏洞的发现和利用速度越来越快三、漏洞的发现和利用速度越来越快四四、突破防火墙、突破防火墙的渗透率越来越高的渗透率越来越高课程内容3软件安全开发软件安全开发知识体知识域软件安全软件安全开发概况开发概况软件安全需求和设计软件安全需求和设计软件安全编码软件安全编码软件安全测试软件安全测试软件安全开发软件安全开发的关键工作的关键工作软件安全开发的必要性软件安全开发的

2、必要性软件安全开发背景软件安全开发背景知识子域软件安全开发模型及研究软件安全开发模型及研究软件安全的基本概念 软件的定义 计算机程序、方法、规则和相关的文档资料以及在计算机上运行时所需的数据(IEEE) 软件安全 软件安全(Software Security)就是使软件在受到恶意攻击的情形下依然能够继续正确运行及确保软件被在授权范围内合法使用的思想。 保护软件中的知识成果、知识产权、数据不被非法使用,包括篡改及盗用、破坏等,保证系统的正常运作。4软件安全问题广泛存在 软件应用广泛 电脑游戏、火车票售票系统、多媒体教学 手机、航天飞机、人造卫星 软件安全问题广泛存在 运行错误 售票系统反应慢、连

3、不上、崩溃 多媒体教学系统死机 黑客盗取泄漏的银行密码 系统被攻击 服务器被攻击 机密数据丢失等 安全问题日益增加5软件安全问题产生后果 软件安全问题的后果 造成产品运行不稳定,得不到正确结果甚至崩溃 可靠性、可用性 被恶意攻击,导致信息泄漏/数据破坏等后果 保密性、完整性 一些因软件安全问题导致的严重后果 售票系统瘫痪 美国放射治疗仪超剂量辐射事件 阿丽亚纳5号火箭首发失败事件 Stuxnet病毒攻击伊朗布什尔核电站6社工库社工库漏洞情况统计 中国国家漏洞库15年漏洞数量情况统计(http:/ 内因 软件开发安全意识淡薄 软件开发缺乏安全知识 软件趋向大型化和复杂化 软件第三方扩展增多 外因

4、 软件使用场景更具威胁(部署环境) 系统漏洞、第三方应用漏洞 旁站攻击、C段攻击、C段嗅探等10软件越来越复杂11 Windows 系列软件源代码行数系列软件源代码行数漏洞与软件安全 漏洞普遍存在 平均每1000行程序存在20个缺陷 (Dacey 2003) 采用严格的软件开发质量管理机制和多重测试环节,软件公司的缺陷率( 千行代码): 普通软件开发公司的缺陷密度为440个缺陷 高水平的软件公司的缺陷密度为24个缺陷 美国NASA的软件缺陷密度可达到0.1个缺陷 漏洞已经成为危害软件安全的主要因素 危及用户对软件的信任、业务运营,还会危及一系列关键基础设施和应用12试题131. 安全的运行环境

5、是软件安全的基础,操作系统安全配置是确保运行环境安全必不可少的工作,某管理员对即将上线的Windows操作系统进行了以下四项安全部署工作,其中哪项设置不利于提高运行环境安全?a、操作系统安装完成后安装最新的安全补丁,确保操作系统不存在可被利用的安全漏洞b、为了方便进行数据备份,安装Windows操作系统时只使用一个分区所有数据和操作系统都存放在C盘c、操作系统上部署防病毒软件,以对抗病毒的威胁d、将默认的管理员账号Administrator改名,降低口令暴力破解攻击的发生可能某购物网站开发项目经过需求分析进入系统设计阶段,为了保证用户账户的安全,项目开发人员决定用户登陆时如果用户名或口令输入错

6、误,给用户返回“用户名或口令输入错误”信息,输入错误达到三次,将暂时禁止登录该账户,请问以上安全设计遵循的是哪项安全设计原则:a、最少共享机制原则 b、经济机制原则 c、不信任原则 d、默认故障处理保护原则 答案答案C试题14某网站管理员小邓在流量监测中发现近期网站的入站ICMP流量上升了250%,尽管网站没有发现任何的性能下降或其他问题,但为了安全起见,他仍然向主管领导提出了应对措施,作为主管负责人,请选择有效的针对此问题的应对措施:a、在防火墙上设置策略,阻止所有的ICMP流量进入(关掉ping)b、删除服务器上的ping.exe程序c、增加带宽以应对可能的拒绝服务攻击d、增加网站服务器以

7、应对即将来临的拒绝服务攻击试题15某单位系统管理员对组织内核心资源的访问制定访问策略,针对每个用户指明能够访问的资源,对于不在指定资源列表中的对象不允许访问,该访问控制策略属于以下哪一种:a、强制访问控制 b、基于角色的访问控制 c、自主访问控制 d、基于任务的访问控制答案答案C在2014年巴西世界杯举行期间,一些黑客组织攻击了世界杯赞助商及政府网站,制造了大量网络流量,阻塞正常用户访问网站。这种攻击类型属于下面什么攻击()a、跨站脚本( cross site scripting,XSS)攻击b、TCP 会话劫持( TCP HIJACK)攻击c、ip欺骗攻击 d、拒绝服务(denialserv

8、ice.dos)攻击知识域:软件安全开发概况 知识子域:软件安全开发的必要性 理解软件安全保障的含义、思路和目标 了解传统软件开发的局限性 理解软件安全开发生命周期的概念和必要性16需要安全的软件 理想的安全软件 不存在安全漏洞 能抵御各种攻击威胁 按照预期的方式执行 软件安全保障的思路 通过在软件开发生命周期各阶段采取必要的、相适应的安全措施来避免绝大多数的安全漏洞。 采取措施只能有效减少,但并不能完全杜绝所有的安全漏洞。 没有完全安全的软件17软件安全保障 软件可以规避安全漏洞而按照预期的方式执行其功能 目标:在软件开发生命周期中提升软件的安全性 可信赖性:无论是恶意而为还是无意疏忽,软件

9、都没有可利用的漏洞存在 可预见性:对软件执行时其功能符合开发者的意图的信心。 遵循性:将(软件开发)跨学科的活动计划并系统化,以确保软件过程和软件产品满足需求、遵循相关标准。18软件安全保障与风险管理 在软件安全保障中,需要贯彻风险管理的思想 “安全就是风险管理” 软件安全是以风险管理为基础 安全不必是完美无缺的,但风险必须是能够管理的,将风险值降到最低 最适宜的软件安全策略就是最优的风险管理对策 这是一个在有限资源前提下的最优选择问题 防范不足会造成直接的损失;防范过多又会造成间接的损失19传统的软件开发局限性传统软件开发教育的局限性传统开发人员能力的局限性传统软件生命周期的局限性 软件教育

10、包括软件工程、数据结构、编译原理、系统结构、程序语言等 缺乏安全开发教育 对安全问题没有的足够理解 不了解安全设计的基本原理 不知道安全漏洞的常见类型 不知道如何设计针对安全的测试数据 软件生命周期包括需求分析、架构设计、代码编写、测试和运行维护五个阶段 缺乏安全介入的阶段20软件安全开发生命周期 软件安全开发 采取措施防止由于设计、开发、提交、升级或维护中的缺陷而导致的系统脆弱性 20世纪末/21世纪初开始展开研究v 安全软件开发生命周期 安全软件开发涵盖了软件开发整个生命周期 是软件从产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维

11、护升级到废弃等阶段。 通过软件开发的各个步骤来确保软件的安全性,其目标是确保安全的软件得以成功21安全软件开发生命周期 将安全融入 在设计/开发/测试等过程中融入安全 在传统的过程中增加安全过程 安全提前介入 NIST:在软件发布以后进行修复的代价是在软件设计和编码阶段即进行修复所花代价的30倍 软件系统发布以后才进行漏洞修复代价是最高的,且常常伴随着软件系统使用者的极大损失 实施软件安全开发 规范指南 最佳实践22降低解决软件安全问题的代价 早期发现并改正错误有以下优点 在软件开发生命周期中,后面的阶段改正错误开销比前面的阶段要高出数倍 早期发现并改正错误可以减少时间和开销23试题24某公司

12、在互联网区域新建了一个WEB网站,为了保护该网站主页安全性,尤其是不能让攻击者修改主页内容,该公司应当购买并部署下面哪个设备()a、负载均衡设备 b、网页防篡改系统 c、网络防病毒系统 d、网络审计系统 答案答案B某政府机构委托开发商开发了一个OA系统,其中有一个公文分发,公文通知等为WORD文档,厂商在进行系统设计时使用了 FTP来对公文进行分发,以下说法不正确的是a、FTP协议明文传输数据,包括用户名和密码,攻击者可能通过会话过程嗅探获得FTP密码,从而威胁 OA系统b、FTP协议需要进行验证才能访问在,攻击者可以利用FTP进行口令的暴力破解c、FTP协议已经是不太使用的协议,可能与新版本

13、的浏览器存在兼容性问题d、FTP应用需要安装服务器端软件,软件存在漏洞可能会影响到OA系统的安全试题25 IS审计师参与应用系统开发,他们从事以下哪项可以导致独立性的减弱.a、对系统开发进行了复核 b、对控制和系统的其他改进提出了建议c、对完成后的系统进行了独立评价d、积极参与了系统的设计和完成以下关于安全套接层协议(Secure Sockets Layer,SSL)说法错误的是:a、SSL协议位于TCP/IP协议层和应用协议之间b、SSL协议广泛应用于web浏览器与服务器之间的身份认证和加密数据传输c、SSL是一种可靠的端到端的安全服务协议d、SSL是设计用来保护操作系统的知识域:软件安全开

14、发概况 知识子域:软件安全开发模型及研究 了解安全开发生命周期(SDL)的发展历程,理解SDL的主要内容 了解使安全成为软件开发必须的部分(BSI)系列模型 了解综合的轻量级应用安全过程(CLASP)的主要内容 了解软件保障成熟度模型(SAMM)的框架 了解各个模型的特点及适用性26可信计算安全开发生命周期 微软,2002.1,盖茨v 安全开发生命周期SDL SDL即Security Development Lifecycle (SDL),是微软提出的从安全角度指导软件开发过程的管理模式。SDL不是一个空想的理论模型。它是微软为了面对现实世界中安全挑战,在实践中的一步步发展起来的模式。 软件安

15、全开发周期SDL的核心理念就是将软件安全的考虑集成在软件开发的每一个阶段 需求分析、设计、编码、测试和维护。27SDL发展历史 2002.1今 20 世纪 90 年代中期到后期 (Melissa) 和 21 世纪初期(Code Red、Nimda、UPnP 等)出现了一系列影响重大的恶意软件事件,促使微软重新考虑开发人员安全过程和策略28SDL的阶段和安全活动 软件安全开发生命阶段 5+2个阶段 16项必需的安全活动29IE采用SDL后的效果30Source: Browser Vulnerability Analysis, Microsoft Security Blog 27-NOV-2007

16、采用采用SDL之前之前采用采用SDL之后之后漏洞总数降低了35%高危漏洞数降低了63%正式发布后12个月内修复的漏洞总数BSI系列模型 BSI使安全成为软件开发必须的部分 在整个软件开发生命周期中要确保将安全作为软件的一个有机组成部分。 无须改变你的软件开发方法 适用各种软件开发生命周期 合作 NIST 美国国土安全部 大学(加州大学戴维斯分校、普林斯顿、莱斯)31接触点模型 接触点,即在软件开发生命周期中保障软件安全 一套最优方法、一种战术性方法 在每一个开发阶段上尽可能地避免和消除漏洞 “黑帽子”和“白帽子”32SSF SSF(Software Security Framework) 软件

17、安全框架33监管监管信息信息/情报情报SSDL接触点接触点部署部署策略和度量攻击模式架构分析渗透测试履约和策略安全特征和设计代码审计软件环境培训标准和需求安全测试配置管理和漏洞管理BSIMM BSI成熟度模型 Building Security In Maturity Mode Gary McGraw、Brian Chess和Sammy Migues 使用SSF对所有项目进行描述 了解别人的安全项目过程,指导自己的安全项目 目标 是对真实的软件安全项目所开展的活动进行量化 构建和不断发展软件安全行动的指南 BSIMM 3.0 2011年 42个公司(Microsoft、Intel、Google

18、、)34CLASP 综合的轻量应用安全过程(Comprehensive, Lightweight Application Security Process (CLASP) ) 选取了30个特定的基于角色的活动(activities),用于提升整个开发团队的安全意识,并针对这些活动给出了相应的指南、导则和检查列表35CLASP介绍v基于角色 项目经理 、需求分析师 、软件架构师 、设计者 、实施人员 、集成和编译人员 、测试者和测试分析师 、安全审计员 对于每个活动,CLASP描述了以下内容 安全活动应该在什么时间、应该如何实施 如果不进行这项安全活动,将会带来的多大的风险 如果实施这项安全活动

19、,估计需要多少成本36SAMM OWASP SAMM Software Assurance Maturity Mode 软件保证成熟度模型 OWASP(开放Web应用安全项目) 一个开放的框架,用以帮助制定并实施针对软件安全特定风险的策略 评估一个组织已有的软件安全实践; 建立一个迭代的权衡的软件安全保证计划; 证明安全保证计划带来的实质性改善; 定义并衡量组织中与安全相关的措施。 37SAMM 规定了四个软件开发过程中的核心业务功能 治理:组织管理其软件开发的过程和活动 构造:组织在开发项目中确定目标并开发软件的过程与活动 验证:组织测试和验证软件的过程与活动 部署:组织软件发布的相关管理过

20、程与活动 4个成熟度级别 0-3级38各模型比较39SDL文档丰富,维护更新及时较多工具支持适合大型企业BSI接触点强调开发安全重点注重实用方法上手容易BSIMM最佳实践参考他山之玉不强制实践CLASP 轻量级过程;以角色及其职责为核心适合小型企业SAMM开放框架安全知识要求较低和BSIMM的安全活动能对应试题40以下哪个选项不是防火墙技术?a、IP地址欺骗防护 b、NAT c、访问控制 d、SQL注入攻击防护 答案答案D消息在发送前,用发送者的私钥加密消息内容和它的哈希(hash,或译作:杂选、摘要)值,能够保证:a、消息的真实性和完整性 b、消息的真实性和保密性 c、消息的完整性和保密性

21、d、保密性和防抵赖性答案答案A为增强Web应用程序的安全性,某软件开发经理决定加强Web软件安全开发培训,下面哪项内容要在他的考虑范围内?a、关于网站身份签别技术方面安全知识的培训b、针对OpenSSL心脏出血漏洞方面安全知识的培训c、针对SQL注入漏洞的安全编程培训d、关于ARM系统漏洞挖掘方面安全知识的培训试题41下面哪项属于软件开发安全方面的问题?a、软件部署时所需选用服务性能不高,导致软件执行效率低b、应用软件来考虑多线程技术,在对用户服务时按序排队提供服务c、应用软件存在sql注入漏洞,若被黑客利用能窃取数据库所用数据d、软件受许可证(license)限制,不能在多台电脑上安装某网站

22、在设计时经过了威胁建模和攻击面分析,在开发时要求程序员编写安全的代码,但是在部署时由于管理员将备份存放在WEB目录下导致了攻击者可直接下载备份,为了发现系统中是否存在其他类拟问题,以下哪种测试方式是最佳的测试方法?a、模糊测试 b、源代码测试 c、渗透测试 d、软件功能测试答案答案C由于频繁出现软件运行时被黑客远程攻击获取数据的现象,某软件公司准备加强软件安全开发管理,在下面做法中,对于解决问题没有直接帮助的是( )a、要求所有的开发人员参加软件安全开发知识培训b、要求增加软件源代码审核环节,加强对软件代码的安全性审查c、要求统一采用Windows8系统进行开发,不能采用之前的Windows版

23、本d、要求邀请专业队伍进行第三方安全性测试,尽量从多角度发现软件安全问题试题42微软SDL将软件开发生命周期制分为七个阶段,并列出了十七项重要的安全活动。其中“弃用不安全的函数”属于( )的安全活动a、要求(Rapuiroments)阶段b、设计(Design)阶段 c、实施(Implenpentation)阶段d、验证(Verifcation)阶段某公司开发了一个游戏网站,但是由于网站软件存在漏洞,在网络中传输大数据包时总是会丢失一些数据,如一次性传输大于2000个字节数据时,总是会有3到5个字节不能传送到对方,关于此案例,可以推断的是( )a、该网站软件存在保密性方面安全问题b、该网站软件

24、存在完整性方面安全问题c、该网站软件存在可用性方面安全问题d、该网站软件存在不可否认性方面安全问题试题43在提高阿帕奇系统(Apache HTTP Server)系统安全性时,下面哪项措施不属于安全配置内容( )?a、不在Windows下安装Apache,只在Linux和Unix下安装b、安装Apache时,只安装需要的组件模块c、不使用操作系统管理员用户身份运行Apache,而是采用权限受限的专用用户账号来运行d、积极了解Apache的安全通告,并及时下载和更新下面哪一种关于安全的说法是不对的?a、加密技术的安全性不应大于使用该技术的人的安全性b、任何电子邮件程序的安全性不应大于实施加密的计

25、算机的安全性c、加密算法的安全性与密钥的安全性一致d、每个电子邮件消息的安全性是通过用标准的非随机的密钥加密来实现试题44某网站为了更好向用户提供服务,在新版本设计时提供了用户快捷登录功能,用户如果使用上次的IP地址进行访问,就可以无需验证直接登录,该功能推出后,导致大量用户账号被盗用,关于以上问题的说法正确的是:a、网站问题是由于开发人员不熟悉安全编码,编写了不安全的代码,导致攻击面增大,产生此安全问题b、网站问题是由于用户缺乏安全意识导致,使用了不安全的功能,导致网站攻击面增大,产生此问题c、网站问题是由于使用便利性提高,带来网站用户数增加,导致网站攻击面增大,产生此安全问题d、网站问题是

26、设计人员不了解安全设计关键要素,设计了不安全的功能,导致网站攻击面增大,产生此问题在对某面向互联网提供服务的某应用服务器的安全检测中发现,服务器上开放了以下几个应用,除了一个应用外其他应用都存在明文传输信息的安全问题,作为一名检测人员,你需要告诉用户对应用进行安全整改以外解决明文传输数据的问题,以下哪个应用已经解决了明文传输数据问题:a、SSH b、HTTP c、FTP d、SMTP答案答案A试题45S公司在全国有20个分支机构,总部有10台服务器.200个用户终端,每个分支机构都有一台服务器.100个左右用户终端,通过专网进行互联互通。公司招标的网络设计方案中,四家集成商给出了各自的IP地址

27、规划和分配的方法,作为评标专家,请给S公司选出设计最合理的一个:a、总部使用服务器.用户终端统一作用10.0.1.X.各分支机构服务器和用户终端使用192.168.2.X192.168.20.Xb、总部使用服务器使用11.用户终端使用2212,分支机构IP地址随意确定即可c、总部服务器使用10.0.1.X. 用户终端根据部门划分使用10.0.2.X.每个分支机构分配两个A类地址段,一个用做服务器地址段.另外一个做用户终端地址段d、因为通过互联网连接,访问的是互联网地址,内部地址经NAT映射,因此IP地址无需特别规划,各机构自行决定即可在软件保障成熟度模型(Sof

28、tware Assurance Maturity Mode,SAMM)中,规定了软件开发过程中的核心业务功能,下列哪个选项不属于核心业务功能:a、治理,主要是管理软件开发的过程和活动b、构造,主要是在开发项目中确定目标并开发软件的过程与活动c、验证,主要是测试和验证软件的过程与活动d、购置,主要是购买第三方商业软件或者采用开源组件的相关管理过程与活动试题46关于软件安全开发生命周期(SDL),下面说法错误的是:a、在软件开发的各个周期都要考虑安全因素b、软件安全开发生命周期要综合采用技术.管理和工程等手段c、测试阶段是发现并改正软件安全漏洞的最佳环节,过早或过晚检测修改漏洞都将增大软件开发成本

29、d、在设计阶段就尽可能发现并改正安全隐患,将极大减少整个软件开发成本知识域:软件安全开发关键工作 知识子域:软件安全需求和设计 了解软件安全需求分析和安全设计的重要性 理解软件安全设计基本原则 理解影响系统安全性的6类威胁,以及威胁建模过程47软件安全需求及安全设计的重要性 安全编码?安全测试? 传统方法:软件发布后测试、等待修复Bug 安全提前介入,效益高,成本低48v设计缺陷举例明文存储口令,甚至将口令拿到客户端对比验证SQL注入越权访问、验证机制不完善上传漏洞软件安全需求及安全设计的重要性 软件安全需求和设计是开发安全软件的基础 软件安全需求分析 以风险管理为基础,建立“威胁”分析计划

30、建立软件安全需求定义,确保软件安全需求定义正确 安全需求应文档化 软件安全设计 软件系统的每一项需求,都应该在软件安全设计阶段认真考虑49安全设计原则v 最小特权:只分配所需的权限v 权限分离:不允许根据单一条件执行操作v 最小共享v 完全中立:不偏重任何技术手段的原则v 心理可接受:他们将使用它吗?v 默认故障处理:出故障时自动关闭;无单点故障v 经济机制:保持简单、易懂的特性v 不信任v 纵深防御v 保护最薄弱的环节v 公开设计:假设攻击者具有源代码和规格v 隐私保护v 攻击面最小化50受攻击面概念v什么是受攻击面 对一个软件系统可以采取的攻击方法集合,软件的功能、API、接口、资源、数据

31、存储等都是受攻击面v为什么要降低受攻击面 一个软件的攻击面越大安全风险就越大 房子门窗越多,被入侵的可能性更高。51降低受攻击面的方法 第一步:分析产品功能的重要性(是否必须) 第二步:分析从哪里访问这些功能 第三步:采取合理措施(降低特权)52受攻击面增加远程访问受限访问本地访问仅管理员访问用户访问匿名访问降低软件受攻击面策略 重要等级为低的功能:攻击面大,取消该功能 重要等级为中的功能:攻击面大,设置为非默认开启,需要用户配置后才予以开启 重要等级为高的功能:攻击面大,关闭或限制一些接口方式,增加一些安全的保证措施或技术53减少软件受攻击面54较高受攻击面较高受攻击面较低受攻击面较低受攻击

32、面默认执行默认关闭打开网络连接关闭网络连接同时侦听UDP和TCP流量仅侦听TCP流量匿名访问鉴别用户访问弱ACLs强ACLs管理员访问普通用户访问因特网访问本地子网访问代码以管理员或root权限运行代码以Network Services、Local Services或自定义的低权限账户运行统一缺省配置用户可选的配置ActiveX控件.NET代码标记有脚本安全的ActiveX控件未标记有脚本安全的ActiveX控件非SiteLocked ActiveX控件SiteLocked ActiveX控件威胁建模 什么是威胁建模 威胁建模是了解系统面临的安全威胁,确定威胁风险并通过适当的缓解措施以降低风险

33、,提高系统安全性的过程。 为什么要威胁建模 帮助在设计阶段充分了解各种安全威胁,并指导选择适当的应对措施 对可能的风险进行管理 可以重新验证其架构和设计 有助于软件的受攻击面降低威胁建模使得您可以对最可能影响系统的威胁进行系统地识别和评价55威胁建模 为什么要用威胁建模? 无论您是构建新系统还是更新现有系统,都需要考虑入侵者攻击系统的可能方式,然后在系统的设计和实施阶段构建适当的防御手段。 Microsoft 通过称作威胁建模的技术来进行安全系统设计,这种技术对系统设计和体系结构进行系统化的检查,以发现和更正设计级的安全性问题。威胁建模是安全性开发生命周期 (Security Developm

34、ent Lifecycle) 项目不可或缺的一部分。56威胁建模流程 确定对象 识别威胁 评估威胁 消减威胁57威胁建模流程 标识资源标识资源。 找出系统必须保护的有价值的资源。 创建总体体系结构创建总体体系结构。 利用简单的图表来记录应用程序的体系结构,包括子系统、信任边界和数据流。 分解应用程序分解应用程序。 分解应用程序的体系结构,包括基本的网络和主机基础结构的设计,从而为应用程序创建安全配置文件。安全配置文件的目的是发现应用程序的设计、实现或部署配置中的缺陷。 识别威胁识别威胁。 牢记攻击者的目标,利用对应用程序的体系结构和潜在缺陷的了解,找出可能影响应用程序的威胁。 记录威胁记录威胁

35、。 利用通用威胁模板记录每种威胁,该模板定义了一套要捕获的各种威胁的核心属性。 评价威胁评价威胁。 对威胁进行评价以区分优先顺序,并首先处理最重要的威胁。这些威胁带来的危险最大。评价过程要权衡威胁的可能性,以及攻击发生时可能造成的危害。评价的结果可能是:通过对比威胁带来的风险与为使威胁得到减少所花费的成本,对于某些威胁采取的行动是不值得的。58STRIDE建模方法 STRIDE建模 微软SDL中提出 发现或纠正设计级(design-level)的安全问题 一种确保应用程序具有这些属性的方法是使用 STRIDE 进行威胁建模,STRIDE 是 Spoofing(假冒)、Tampering(篡改)

36、、Repudiation(否认)、Information Disclosure(信息泄漏)、Denial of Service(拒绝服务)和 Elevation of Privilege(提升权限)的字母缩略词59SSpoolfing Identity假冒身份/欺骗标识TTampering with data篡改数据RRepudiation抵赖IInformation Disclosure信息泄漏DDenial of Service拒绝服务EElevation of Privilege权限提升理解STRIDE威胁威胁安全属性定义举例Spoofing(哄骗)可鉴别性模仿其他人或实体伪装成或ntd

37、ll.dll。Tampering(篡改)完整性修改数据或代码修改硬盘、DVD或网络数据包中的DLLRepudiation(抵赖) 不可抵赖性 声称没有执行某个动作“我没有发送过那封电子邮件”,“我没有修改过那个文件”,“亲爱的,我确实没有访问过那个网站!”Information Disclosure(信息泄露)机密性把信息披露给那些无权知道的人允许某人阅读Windows源代码;公布某个Web网站的用户清单。Denial of Service(拒绝服务)可用性拒绝为用户提供服务使得Windows或Web网站崩溃,发送数据包并耗尽CPU时间,将数据包路由到某黑洞中。Elevation of Pri

38、vilege(权限提升)授权获得非授权访问权允许远程因特网用户执行命令,让受限用户获得管理员权限。60消减威胁举例61 消减威胁威胁类型消减机制举例消减技术举例假冒认证认证方式:Cookie认证、Kerberos认证、PKI纂改完整性哈希函数、消息认证码、数字签名、防篡改协议抵赖非抵赖性服务强认证、安全审计、数字签名、时间戳信息泄露保密性加密、保护秘密、访问控制、不保存秘密、隐私保护协议拒绝服务可用性认证、访问控制、过滤、流量控制、授权特权提升授权访问控制列表、最小权限运行试题62数据在进行传输前,需要由协议栈自上而下对数据进行封装,TCPIP协议中,数据封装的顺序是:a、传输层、网络接口层、

39、互联网络层b、传输层、互联网络层、网络接口层c、互联网络层、传输层、网络接口层d、互联网络层、网络接口层、传输层以下关于PGP(Pretty Good Privacy)软件叙述错误的是:a、PGP可以实现对邮件的加密.签名和认证b、PGP可以实现数据压缩 c、PGP可以对邮件进行分段和重组d、PGP采用SHA算法加密邮件微软提出了STRIDE模型,其中R是Repudiation(抵赖)的缩写,关于此项错误的是:a、某用户在登录系统并下载数据后,却声称“我没有下载过数据软件R威胁b、某用户在网络通信中传输完数据后,却声称“这些数据不是我传输的”威胁也属于R威胁。c、对于R威胁,可以选择使用如强认

40、证、数字签名、安全审计等技术d、对于R威胁,可以选择使用如隐私保护、过滤、流量控制等技术试题63以下关于软件安全测试说法正确的是?a、软件安全测试就是黑盒测试b、Fuzz测试是经常采用的安全测试方法之一c、软件安全测试关注的是软件的功能d、软件安全测试可以发现软件中产生的所有安全问题下面哪个模型和软件安全开发无关( )?a、微软提出的“安全开发生命周期(Security Development Lifecycle,SDL)”b、Gray McGraw等提出的“使安全成为软件开发必须的部分(Building Security IN,BSI)”c、OWASP维护的“软件保证成熟度模型(Softwa

41、re Assurance Maturity Mode,SAMM)”d、美国提出的“信息安全保障技术框架(Information Assurance Technical Framework,IATF)”试题64微软提出了STRIDE模型,其中R是Repudiation(抵赖)的缩写,关于此项安全要求,下面描述错误的是()?a、某用户在登录系统并下载数据后,却声称“我没有下载过数据”软件系统中的这种威胁就属于R威胁b、解决R威胁,可以选择使用抗抵赖性服务技术来解决,如强认证、数字签名、安全审计等技术措施c、R威胁是STRIDE六种威胁中第三严重的威胁,比D威胁和E威胁的严重程度更高d、解决R威胁,

42、也应按照确定建模对象、识别威胁、评估威胁以及消减威胁等四个步骤来进行知识域:软件安全开发关键工作 知识子域:软件安全编码 理解通用安全编码准则:验证输入、避免缓冲区溢出、程序内部安全、安全调用组件、禁止使用不安全函数等 理解使用安全编译技术对提高编码安全水平的作用,了解常用安全编译技术 理解源代码审核的目的及方式,了解常见源代码静态审核工具65通用安全编码准则 验证输入 避免缓冲区溢出 程序内部安全 安全调用组件 禁止使用不安全函数66验证输入 安全程序第一道防线是检查每一个不可信的输入 难以检查所有的输入,可能导致IE被恶意利用 检查、验证或者过滤输入 不让恶意数据进入程序后续处理 类似网络

43、中部署防火墙 何处检查 最初接收数据时 (第一次)使用数据时67验证输入常见输入源 命令行 参数数量、数据格式、内容 环境变量 环境变量可能超出期望 有的环境变量存储格式存在危险 文件 不信任可以被不可信用户控制的文件内容 不信任临时文件 网络 来自网络的数据是“高度不可信的” 其他来源68验证输入常见数据类型 数字 数字检查(正则表达式/ASCII值) 负数检查(大数溢出为负数) Sendamil 攻击 合法范围检查 文件名 最好不让用户设置文件名 避免特殊字符69验证输入常见数据类型 电子邮件地址 非法的电子邮件地址 UTF-8 变长编码 URI/URL 非法地址 在合法地址后面增加恶意内

44、容 畸形数据包70避免缓冲区溢出 缓冲区溢出:是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。 理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患。操作系统所使用的缓冲区,又被称为“堆栈”,在各个操作进程之间,指令会被临时储存在“堆栈”当中,“堆栈”也会出现缓冲区溢出。 是一个非常普遍而且严重的问题 缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为

45、严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。 恶意攻击者常用溢出漏洞提升权限,并以管理员权限执行非法操作。71缓冲区溢出后果 溢出后果 攻击者可以使远程服务程序或者本地程序崩溃 攻击者可以设计溢出后执行的代码 C/C+语言 语言特性决定 大量的库函数存在溢出 其他语言 调用C语言库 C#允许设置“不安全”例程72避免缓冲区溢出解决办法 解决办法 编码避免缓冲区溢出 填充数据时计算边界、动态分配内存、控制输入 使用替代的安全函数或函数库 使用没有缓冲区溢出问题的函数:strncpy、strncat、C+中std:string 使用替代库:Libmib、libs

46、afe 使用更新更安全的编译环境,打开具有安全防御机制的安全编译选项 StackGuard、ProPolice、/GS 非执行的堆栈防御 不可在堆栈上执行代码73程序内部安全 程序内部接口安全 程序内部接口数据的检查 异常安全处理 检测异常,安全处理各种可能运行路径 检测到某些错误行为/数据,必须以合适的方式处理,保证程序运行安全 必要时立即拒绝服务,甚至不回送详细的错误代码74程序内部安全 最小化反馈 避免给予不可靠用户过多的信息 成功或失败 作为跟踪检查的日志可以记录较为详细的信息 认证程序在认证前尽量少给信息(版本) 如果程序接受了密码,不要返回它 避免拒绝服务攻击 输入错误尽快返回 设

47、置超时 延时服务75程序内部安全 避免竞争条件 访问共享资源时(文件/变量)没有被适当地控制 使用原子操作 使用锁操作避免死锁 安全使用临时文件 很多安全漏洞发生在访问已知文件名或可猜测的临时文件时76安全调用其他组件 应用程序实际上几乎都不会是自包含的,它们通常都会调用其他组件 底层的操作系统 数据库 可重用的库 网络服务(WEB、DNS)77安全调用其他组件 组件安全 检查组件文档,搜索相关说明 gets 随机数 使用经过认可的组件 尽可能不调用外部命令,如果不得已要调用,必须严格检查参数 system、open、exec、78安全调用其他组件 返回值安全 一定要检查返回值,调用是否成功

48、成功时检查 返回值,是否按照期望值处理 数据中可能含有 NUL 字符、无效字符或其他可能产生问题的东西 错误时检查 错误码 传递数据安全 视安全需求和安全环境 考虑传输加密,包括密码算法和安全协议79安全编译 使用最新版本编译器与支持工具 使用编译器内置防御特性 gcc -Wall -Wpointer-arith -Wstrict-prototypes -O2 80源代码审核 源代码审核就是检查源代码,检测并报告源代码中的可能导致安全弱点的薄弱之处。 人工审核 费时费力 容易遗漏 工具审核 速度快,自动 可升级知识库81 源代码源代码审核审核关注编码中的实现缺陷,通常通过静态分关注编码中的实现

49、缺陷,通常通过静态分析工具进行,它们扫描源代码,能够发现大约析工具进行,它们扫描源代码,能够发现大约50%的安的安全全问题问题。代码审核工具 商业工具 Coverity Fortify Ounce Labs SecureSoftware 免费/开源工具 BOON Cqual Xg+ FindBugs82“好”的源代码分析工具 安全性 安全审核,不要以功能为主 多层性 软件的多层架构、多层平台、多种语言 可扩展性 扩展规则、扩展技术 知识性 主用于分析,开发者也能“学到” 安全编程知识 集成性 支持与IDE集成,支持make、ant等工具83知识域:软件安全开发关键工作 知识子域:软件安全编码 理解通用安全编码准则:验证输入、避免缓冲区溢出、程序内部安全、安全调用组件、禁止使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论