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

下载本文档

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

文档简介

操作系统(cāozuòxìtǒnɡ)安全软件开发安全(ānquán)第一页,共九十七页。背景(bèijǐng)为什么要做软件安全开发(kāifā)?一、网络攻击阶段自动化二、网络攻击智能化:相当多的工具已经具备了反侦破、只能动态行为、攻击工具变异等特点三、漏洞的发现和利用速度越来越快四、突破防火墙的渗透率越来越高

第二页,共九十七页。课程内容3软件安全开发知识体知识域软件安全开发概况软件安全需求和设计软件安全编码软件安全测试软件安全开发的关键工作软件安全开发的必要性软件安全开发背景知识子域软件安全开发模型及研究第三页,共九十七页。软件(ruǎnjiàn)安全的基本概念软件的定义计算机程序、方法、规则和相关的文档资料以及在计算机上运行时所需的数据(IEEE)软件安全软件安全(SoftwareSecurity)就是使软件在受到恶意攻击的情形(qíngxing)下依然能够继续正确运行及确保软件被在授权范围内合法使用的思想△保护软件中的知识成果、知识产权、数据不被非法使用,包括篡改及盗用、破坏等,保证系统的正常运作△4第四页,共九十七页。软件安全问题(wèntí)广泛存在软件应用广泛(guǎngfàn)电脑游戏、火车票售票系统、多媒体教学手机、航天飞机、人造卫星…软件安全问题广泛存在运行错误售票系统反应慢、连不上、崩溃多媒体教学系统死机黑客盗取泄漏的银行密码系统被攻击服务器被攻击机密数据丢失等安全问题日益增加…5第五页,共九十七页。软件(ruǎnjiàn)安全问题产生后果软件安全问题的后果造成产品运行不稳定,得不到正确结果甚至崩溃可靠性、可用性被恶意攻击,导致信息泄漏/数据破坏(pòhuài)等后果保密性、完整性一些因软件安全问题导致的严重后果售票系统瘫痪美国放射治疗仪超剂量辐射事件阿丽亚纳5号火箭首发失败事件Stuxnet病毒攻击伊朗布什尔核电站6第六页,共九十七页。社工库第七页,共九十七页。社工库第八页,共九十七页。漏洞情况(qíngkuàng)统计中国国家漏洞库15年漏洞数量(shùliàng)情况统计9第九页,共九十七页。软件产生安全问题(wèntí)的原因内因软件开发安全意识淡薄软件开发缺乏安全知识软件趋向大型化和复杂化软件第三方扩展增多外因软件使用场景更具威胁(部署(bùshǔ)环境)系统漏洞、第三方应用漏洞旁站攻击、C段攻击、C段嗅探等10第十页,共九十七页。软件(ruǎnjiàn)越来越复杂11Windows系列(xìliè)软件源代码行数第十一页,共九十七页。漏洞与软件(ruǎnjiàn)安全漏洞普遍存在平均每1000行程序存在20个缺陷(Dacey2003)采用严格的软件(ruǎnjiàn)开发质量管理机制和多重测试环节,软件(ruǎnjiàn)公司的缺陷率(

千行代码):普通软件开发公司的缺陷密度为4~40个缺陷高水平的软件公司的缺陷密度为2~4个缺陷美国NASA的软件缺陷密度可达到0.1个缺陷漏洞已经成为危害软件安全的主要因素危及用户对软件的信任、业务运营,还会危及一系列关键基础设施和应用12第十二页,共九十七页。试题(shìtí)131.安全的运行环境是软件安全的基础,操作系统安全配置是确保运行环境安全必不可少的工作,某管理员对即将上线的Windows操作系统进行了以下四项安全部署工作,其中哪项设置不利于提高运行环境安全?a、操作系统安装完成后安装最新的安全补丁,确保操作系统不存在可被利用的安全漏洞b、为了方便进行数据备份,安装Windows操作系统时只使用一个分区所有数据和操作系统都存放在C盘c、操作系统上部署防病毒软件,以对抗病毒的威胁d、将默认的管理员账号Administrator改名,降低口令暴力破解攻击的发生可能某购物网站开发项目经过需求分析进入系统设计阶段,为了保证用户账户的安全,项目开发人员决定用户登陆时如果用户名或口令输入错误,给用户返回“用户名或口令输入错误”信息,输入错误达到三次,将暂时禁止登录该账户,请问以上安全设计遵循的是哪项安全设计原则:a、最少共享机制原则b、经济机制原则c、不信任(xìnrèn)原则d、默认故障处理保护原则

答案C第十三页,共九十七页。试题(shìtí)14某网站管理员小邓在流量监测中发现近期网站的入站ICMP流量上升了250%,尽管网站没有发现任何的性能下降或其他问题,但为了安全起见,他仍然向主管领导提出了应对措施,作为主管负责人,请选择有效的针对此问题的应对措施:a、在防火墙上设置策略,阻止所有的ICMP流量进入(关掉ping)b、删除服务器上的ping.exe程序c、增加(zēngjiā)带宽以应对可能的拒绝服务攻击d、增加网站服务器以应对即将来临的拒绝服务攻击第十四页,共九十七页。试题(shìtí)15某单位系统管理员对组织内核心资源的访问制定访问策略,针对每个用户指明能够访问的资源,对于不在指定资源列表中的对象不允许访问,该访问控制策略属于以下哪一种:a、强制访问控制b、基于角色的访问控制c、自主访问控制d、基于任务的访问控制答案C在2014年巴西世界杯举行期间,,一些黑客组织攻击了世界杯赞助商及政府(zhèngfǔ)网站,制造了大量网络流量,阻塞正常用户访问网站△这种攻击类型属于下面什么攻击()a、跨站脚本(crosssitescripting,XSS)攻击b、TCP会话劫持(TCPHIJACK)攻击c、ip欺骗攻击

d、拒绝服务(denialservice.dos)攻击第十五页,共九十七页。知识(zhīshi)域:软件安全开发概况知识子域:软件安全开发的必要性理解软件安全保障的含义(hányì)、思路和目标了解传统软件开发的局限性理解软件安全开发生命周期的概念和必要性16第十六页,共九十七页。需要安全(ānquán)的软件理想的安全软件不存在安全漏洞能抵御各种攻击威胁按照预期的方式执行软件(ruǎnjiàn)安全保障的思路通过在软件开发生命周期各阶段采取必要的、相适应的安全措施来避免绝大多数的安全漏洞△采取措施只能有效减少,但并不能完全杜绝所有的安全漏洞△没有完全安全的软件17第十七页,共九十七页。软件安全(ānquán)保障软件可以规避安全漏洞而按照预期的方式执行其功能目标:在软件开发生命周期中提升软件的安全性可信赖性:无论是恶意而为还是无意疏忽,软件都没有(méiyǒu)可利用的漏洞存在可预见性:对软件执行时其功能符合开发者的意图的信心△遵循性:将(软件开发)跨学科的活动计划并系统化,以确保软件过程和软件产品满足需求、遵循相关标准△18第十八页,共九十七页。软件(ruǎnjiàn)安全保障与风险管理在软件(ruǎnjiàn)安全保障中,需要贯彻风险管理的思想“安全就是风险管理”软件安全是以风险管理为基础安全不必是完美无缺的,但风险必须是能够管理的,将风险值降到最低最适宜的软件安全策略就是最优的风险管理对策这是一个在有限资源前提下的最优选择问题防范不足会造成直接的损失;防范过多又会造成间接的损失19第十九页,共九十七页。传统(chuántǒng)的软件开发局限性传统软件开发教育的局限性软件教育包括软件工程、数据结构、编译原理、系统结构、程序语言等缺乏安全开发教育传统开发人员能力的局限性对安全问题没有的足够理解不了解安全设计的基本原理不知道安全漏洞的常见类型不知道如何设计针对安全的测试数据传统软件生命周期的局限性软件生命周期包括需求分析、架构设计、代码编写、测试和运行维护五个阶段缺乏安全介入的阶段20需要(xūyào)安全的软件开发!第二十页,共九十七页。软件(ruǎnjiàn)安全开发生命周期软件安全开发采取措施防止由于设计、开发、提交、升级或维护中的缺陷而导致的系统脆弱性20世纪末/21世纪(shìjì)初开始展开研究安全软件开发生命周期安全软件开发涵盖了软件开发整个生命周期是软件从产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段△通过软件开发的各个步骤来确保软件的安全性,其目标是确保安全的软件得以成功21第二十一页,共九十七页。安全(ānquán)软件开发生命周期将安全融入在设计/开发/测试等过程中融入安全在传统的过程中增加安全过程安全提前介入NIST:在软件发布以后进行修复的代价(dàijià)是在软件设计和编码阶段即进行修复所花代价(dàijià)的30倍软件系统发布以后才进行漏洞修复代价是最高的,且常常伴随着软件系统使用者的极大损失实施软件安全开发规范指南最佳实践22第二十二页,共九十七页。降低解决(jiějué)软件安全问题的代价早期发现(fāxiàn)并改正错误有以下优点在软件开发生命周期中,后面的阶段改正错误开销比前面的阶段要高出数倍早期发现并改正错误可以减少时间和开销23第二十三页,共九十七页。试题(shìtí)24某公司在互联网区域新建了一个WEB网站(wǎnɡzhàn),为了保护该网站(wǎnɡzhàn)主页安全性,尤其是不能让攻击者修改主页内容,该公司应当购买并部署下面哪个设备()a、负载均衡设备b、网页防篡改系统c、网络防病毒系统d、网络审计系统

答案B某政府机构委托开发商开发了一个OA系统,其中有一个公文分发,公文通知等为WORD文档,厂商在进行系统设计时使用了FTP来对公文进行分发,以下说法不正确的是a、FTP协议明文传输数据,包括用户名和密码,攻击者可能通过会话过程嗅探获得FTP密码,从而威胁OA系统b、FTP协议需要进行验证才能访问在,攻击者可以利用FTP进行口令的暴力破解c、FTP协议已经是不太使用的协议,可能与新版本的浏览器存在兼容性问题d、FTP应用需要安装服务器端软件,软件存在漏洞可能会影响到OA系统的安全第二十四页,共九十七页。试题(shìtí)25IS审计师参与应用系统开发,他们从事以下哪项可以导致(dǎozhì)独立性的减弱.a、对系统开发进行了复核

b、对控制和系统的其他改进提出了建议c、对完成后的系统进行了独立评价d、积极参与了系统的设计和完成以下关于安全套接层协议(SecureSocketsLayer,SSL)说法错误的是:a、SSL协议位于TCP/IP协议层和应用协议之间b、SSL协议广泛应用于web浏览器与服务器之间的身份认证和加密数据传输c、SSL是一种可靠的端到端的安全服务协议d、SSL是设计用来保护操作系统的第二十五页,共九十七页。知识域:软件安全(ānquán)开发概况知识(zhīshi)子域:软件安全开发模型及研究了解安全开发生命周期(SDL)的发展历程,理解SDL的主要内容了解使安全成为软件开发必须的部分(BSI)系列模型了解综合的轻量级应用安全过程(CLASP)的主要内容了解软件保障成熟度模型(SAMM)的框架了解各个模型的特点及适用性26第二十六页,共九十七页。可信计算安全(ānquán)开发生命周期微软,2002.1,盖茨安全开发生命周期SDLSDL即SecurityDevelopmentLifecycle(SDL),是微软提出的从安全角度指导软件开发过程的管理模式△SDL不是一个空想的理论模型△它是微软为了面对现实世界中安全挑战,在实践中的一步步发展起来的模式△软件安全开发周期SDL的核心理念就是将软件安全的考虑集成在软件开发的每一个阶段需求分析、设计、编码、测试(cèshì)和维护△27第二十七页,共九十七页。SDL发展(fāzhǎn)历史2002.1~今20世纪90年代中期到后期(Melissa)和21世纪初期(CodeRed、Nimda、UPnP等)出现了一系列影响重大的恶意软件事件(shìjiàn),促使微软重新考虑开发人员安全过程和策略28第二十八页,共九十七页。SDL的阶段和安全(ānquán)活动软件安全开发生命阶段5+2个阶段16项必需(bìxū)的安全活动29第二十九页,共九十七页。IE采用(cǎiyòng)SDL后的效果30Source:BrowserVulnerabilityAnalysis,MicrosoftSecurityBlog27-NOV-2007采用(cǎiyòng)SDL之前采用SDL之后漏洞总数降低了35%高危漏洞数降低了63%正式发布后12个月内修复的漏洞总数第三十页,共九十七页。BSI系列(xìliè)模型BSI——使安全成为软件开发必须的部分(bùfen)在整个软件开发生命周期中要确保将安全作为软件的一个有机组成部分△无须改变你的软件开发方法适用各种软件开发生命周期合作NIST美国国土安全部大学(加州大学戴维斯分校、普林斯顿、莱斯…)31第三十一页,共九十七页。接触点模型(móxíng)接触点,即在软件开发生命周期中保障(bǎozhàng)软件安全一套最优方法、一种战术性方法在每一个开发阶段上尽可能地避免和消除漏洞“黑帽子”和“白帽子”32第三十二页,共九十七页。SSFSSF(SoftwareSecurityFramework)软件安全(ānquán)框架33监管信息/情报SSDL接触点部署策略和度量攻击模式架构分析渗透测试履约和策略安全特征和设计代码审计软件环境培训标准和需求安全测试配置管理和漏洞管理第三十三页,共九十七页。BSIMMBSI成熟度模型BuildingSecurityInMaturityModeGaryMcGraw、BrianChess和SammyMigues使用SSF对所有项目进行描述了解别人的安全项目过程,指导自己的安全项目目标是对真实的软件安全项目所开展的活动(huódòng)进行量化构建和不断发展软件安全行动的指南BSIMM3.02011年42个公司(Microsoft、Intel、Google、…)34第三十四页,共九十七页。CLASP综合的轻量应用安全过程(Comprehensive,LightweightApplicationSecurityProcess(CLASP))选取了30个特定的基于角色的活动(activities),用于提升整个(zhěnggè)开发团队的安全意识,并针对这些活动给出了相应的指南、导则和检查列表35第三十五页,共九十七页。CLASP介绍(jièshào)基于角色项目经理、需求分析师、软件架构师、设计者、实施人员、集成和编译人员、测试者和测试分析师、安全(ānquán)审计员对于每个活动,CLASP描述了以下内容安全活动应该在什么时间、应该如何实施如果不进行这项安全活动,将会带来的多大的风险如果实施这项安全活动,估计需要多少成本36第三十六页,共九十七页。SAMMOWASPSAMMSoftwareAssuranceMaturityMode软件保证成熟度模型OWASP(开放Web应用安全项目)一个开放的框架,用以帮助制定并实施针对软件安全特定风险的策略评估一个组织(zǔzhī)已有的软件安全实践;建立一个迭代的权衡的软件安全保证计划;证明安全保证计划带来的实质性改善;定义并衡量组织中与安全相关的措施△37第三十七页,共九十七页。SAMM规定了四个软件开发过程中的核心业务(yèwù)功能治理:组织管理其软件开发的过程和活动构造:组织在开发项目中确定目标并开发软件的过程与活动验证:组织测试和验证软件的过程与活动部署:组织软件发布的相关管理过程与活动4个成熟度级别0-3级38第三十八页,共九十七页。各模型(móxíng)比较39SDL文档丰富,维护更新及时较多工具支持适合大型企业BSI接触点强调开发安全重点注重实用方法上手容易BSIMM最佳实践参考他山之玉不强制实践CLASP

轻量级过程;以角色及其职责为核心适合小型企业SAMM开放框架安全知识要求较低和BSIMM的安全活动能对应第三十九页,共九十七页。试题(shìtí)40以下哪个选项不是(bùshi)防火墙技术?a、IP地址欺骗防护b、NATc、访问控制d、SQL注入攻击防护

答案D消息在发送前,用发送者的私钥加密消息内容和它的哈希(hash,或译作:杂选、摘要)值,能够保证:a、消息的真实性和完整性b、消息的真实性和保密性c、消息的完整性和保密性d、保密性和防抵赖性答案A为增强Web应用程序的安全性,某软件开发经理决定加强Web软件安全开发培训,下面哪项内容要在他的考虑范围内?a、关于网站身份签别技术方面安全知识的培训b、针对OpenSSL心脏出血漏洞方面安全知识的培训c、针对SQL注入漏洞的安全编程培训d、关于ARM系统漏洞挖掘方面安全知识的培训第四十页,共九十七页。试题(shìtí)41下面哪项属于软件开发安全方面的问题?a、软件部署时所需选用服务性能不高,导致软件执行效率低b、应用软件来考虑多线程技术,在对用户服务时按序排队提供服务c、应用软件存在sql注入漏洞,若被黑客利用能窃取数据库所用数据d、软件受许可证(license)限制,不能在多台电脑上安装某网站在设计时经过了威胁建模和攻击面分析,在开发时要求程序员编写安全的代码,但是在部署时由于管理员将备份存放在WEB目录下导致了攻击者可直接下载备份,为了(wèile)发现系统中是否存在其他类拟问题,以下哪种测试方式是最佳的测试方法?a、模糊测试b、源代码测试c、渗透测试d、软件功能测试答案C由于频繁出现软件运行时被黑客远程攻击获取数据的现象,某软件公司准备加强软件安全开发管理,在下面做法中,对于解决问题没有直接帮助的是(

)a、要求所有的开发人员参加软件安全开发知识培训b、要求增加软件源代码审核环节,加强对软件代码的安全性审查c、要求统一采用Windows8系统进行开发,不能采用之前的Windows版本d、要求邀请专业队伍进行第三方安全性测试,尽量从多角度发现软件安全问题第四十一页,共九十七页。试题(shìtí)42微软SDL将软件开发生命周期制分为(fēnwéi)七个阶段,并列出了十七项重要的安全活动△其中“弃用不安全的函数”属于(

)的安全活动a、要求(Rapuiroments)阶段b、设计(Design)阶段

c、实施(Implenpentation)阶段d、验证(Verifcation)阶段某公司开发了一个游戏网站,但是由于网站软件存在漏洞,在网络中传输大数据包时总是会丢失一些数据,如一次性传输大于2000个字节数据时,总是会有3到5个字节不能传送到对方,关于此案例,可以推断的是(

)a、该网站软件存在保密性方面安全问题b、该网站软件存在完整性方面安全问题c、该网站软件存在可用性方面安全问题d、该网站软件存在不可否认性方面安全问题第四十二页,共九十七页。试题(shìtí)43在提高阿帕奇系统(ApacheHTTPServer)系统安全性时,下面哪项措施不属于安全配置内容()?a、不在Windows下安装Apache,只在Linux和Unix下安装b、安装Apache时,只安装需要的组件模块c、不使用操作系统管理员用户身份运行Apache,而是采用权限受限的专用用户账号来运行d、积极了解Apache的安全通告,并及时下载和更新下面哪一种关于安全的说法是不对的?a、加密技术的安全性不应大于使用该技术的人的安全性b、任何电子邮件程序的安全性不应大于实施加密的计算机的安全性c、加密算法的安全性与密钥的安全性一致d、每个电子邮件消息的安全性是通过用标准(biāozhǔn)的非随机的密钥加密来实现第四十三页,共九十七页。试题(shìtí)44某网站为了更好向用户提供服务,在新版本设计时提供了用户快捷登录功能,用户如果使用上次的IP地址进行访问,就可以无需验证直接登录,该功能推出后,导致大量用户账号被盗用,关于以上问题的说法正确的是:a、网站问题是由于开发人员不熟悉安全编码,编写了不安全的代码,导致攻击面增大,产生此安全问题b、网站问题是由于用户缺乏安全意识导致,使用了不安全的功能,导致网站攻击面增大,产生此问题c、网站问题是由于使用便利性提高,带来网站用户数增加,导致网站攻击面增大,产生此安全问题d、网站问题是设计人员不了解安全设计关键要素,设计了不安全的功能,导致网站攻击面增大,产生此问题在对某面向(miànxiànɡ)互联网提供服务的某应用服务器的安全检测中发现,服务器上开放了以下几个应用,除了一个应用外其他应用都存在明文传输信息的安全问题,作为一名检测人员,你需要告诉用户对应用进行安全整改以外解决明文传输数据的问题,以下哪个应用已经解决了明文传输数据问题:a、SSHb、HTTPc、FTPd、SMTP答案A第四十四页,共九十七页。试题(shìtí)45S公司在全国有20个分支机构,总部有10台服务器.200个用户终端,每个分支机构都有一台服务器.100个左右用户终端,通过专网进行互联互通△公司招标的网络设计方案中,四家集成商给出了各自的IP地址规划和分配的方法,作为评标专家,请给S公司选出设计最合理的一个:a、总部使用(shǐyòng)服务器.用户终端统一作用10.0.1.X.各分支机构服务器和用户终端使用192.168.2.X~192.168.20.Xb、总部使用服务器使用~11.用户终端使用2~212,分支机构IP地址随意确定即可c、总部服务器使用10.0.1.X.用户终端根据部门划分使用10.0.2.X.每个分支机构分配两个A类地址段,一个用做服务器地址段.另外一个做用户终端地址段d、因为通过互联网连接,访问的是互联网地址,内部地址经NAT映射,因此IP地址无需特别规划,各机构自行决定即可在软件保障成熟度模型(SoftwareAssuranceMaturityMode,SAMM)中,规定了软件开发过程中的核心业务功能,下列哪个选项不属于核心业务功能:a、治理,主要是管理软件开发的过程和活动b、构造,主要是在开发项目中确定目标并开发软件的过程与活动c、验证,主要是测试和验证软件的过程与活动d、购置,主要是购买第三方商业软件或者采用开源组件的相关管理过程与活动第四十五页,共九十七页。试题(shìtí)46关于软件安全开发生命周期(SDL),下面说法(shuōfǎ)错误的是:a、在软件开发的各个周期都要考虑安全因素b、软件安全开发生命周期要综合采用技术.管理和工程等手段c、测试阶段是发现并改正软件安全漏洞的最佳环节,过早或过晚检测修改漏洞都将增大软件开发成本d、在设计阶段就尽可能发现并改正安全隐患,将极大减少整个软件开发成本第四十六页,共九十七页。知识域:软件(ruǎnjiàn)安全开发关键工作知识子域:软件安全需求和设计了解软件安全需求分析和安全设计的重要性理解软件安全设计基本原则理解影响(yǐngxiǎng)系统安全性的6类威胁,以及威胁建模过程47第四十七页,共九十七页。软件安全需求(xūqiú)及安全设计的重要性安全编码?安全测试?传统方法:软件发布后测试、等待修复Bug安全提前介入(jièrù),效益高,成本低48设计缺陷——举例明文存储口令,甚至将口令拿到客户端对比验证SQL注入越权访问、验证机制不完善上传漏洞第四十八页,共九十七页。软件安全(ānquán)需求及安全(ānquán)设计的重要性软件安全需求和设计是开发安全软件的基础软件安全需求分析以风险管理为基础,建立(jiànlì)“威胁”分析计划建立软件安全需求定义,确保软件安全需求定义正确安全需求应文档化软件安全设计软件系统的每一项需求,都应该在软件安全设计阶段认真考虑49第四十九页,共九十七页。安全设计(shèjì)原则最小特权:只分配所需的权限权限分离:不允许根据单一条件执行操作最小共享完全中立:不偏重任何技术手段的原则心理可接受:他们将使用它吗?默认故障处理:出故障时自动关闭;无单点故障经济机制:保持简单、易懂的特性不信任纵深防御保护最薄弱的环节公开(gōngkāi)设计:假设攻击者具有源代码和规格隐私保护攻击面最小化50第五十页,共九十七页。受攻击面概念(gàiniàn)什么是受攻击面对一个软件系统可以采取的攻击方法集合,软件的功能、API、接口、资源、数据存储等都是受攻击面为什么要降低受攻击面一个软件的攻击面越大安全风险就越大房子(fángzi)门窗越多,被入侵的可能性更高△51第五十一页,共九十七页。降低(jiàngdī)受攻击面的方法第一步:分析产品功能的重要性(是否必须)第二步:分析从哪里访问这些功能第三步:采取合理措施(降低(jiàngdī)特权)52受攻击面增加远程访问受限访问本地访问仅管理员访问用户访问匿名访问第五十二页,共九十七页。降低软件(ruǎnjiàn)受攻击面策略重要等级为低的功能:攻击面大,取消该功能重要等级为中的功能:攻击面大,设置为非默认开启,需要用户配置(pèizhì)后才予以开启重要等级为高的功能:攻击面大,关闭或限制一些接口方式,增加一些安全的保证措施或技术53降低受攻击面对于提高软件源代码安全性至关重要!第五十三页,共九十七页。减少(jiǎnshǎo)软件受攻击面54较高受攻击面较低受攻击面默认执行默认关闭打开网络连接关闭网络连接同时侦听UDP和TCP流量仅侦听TCP流量匿名访问鉴别用户访问弱ACLs强ACLs管理员访问普通用户访问因特网访问本地子网访问代码以管理员或root权限运行代码以NetworkServices、LocalServices或自定义的低权限账户运行统一缺省配置用户可选的配置ActiveX控件.NET代码标记有脚本安全的ActiveX控件未标记有脚本安全的ActiveX控件非SiteLockedActiveX控件SiteLockedActiveX控件第五十四页,共九十七页。威胁(wēixié)建模什么是威胁建模威胁建模是了解系统面临的安全威胁,确定威胁风险并通过适当的缓解措施以降低风险,提高系统安全性的过程△为什么要威胁建模帮助在设计阶段充分了解各种安全威胁,并指导选择适当的应对措施对可能的风险进行管理(guǎnlǐ)可以重新验证其架构和设计有助于软件的受攻击面降低威胁建模使得您可以对最可能影响系统的威胁进行系统地识别和评价55第五十五页,共九十七页。威胁(wēixié)建模为什么要用威胁建模?无论(wúlùn)您是构建新系统还是更新现有系统,都需要考虑入侵者攻击系统的可能方式,然后在系统的设计和实施阶段构建适当的防御手段△Microsoft通过称作威胁建模的技术来进行安全系统设计,这种技术对系统设计和体系结构进行系统化的检查,以发现和更正设计级的安全性问题△威胁建模是安全性开发生命周期(SecurityDevelopmentLifecycle)项目不可或缺的一部分△56第五十六页,共九十七页。威胁(wēixié)建模流程确定对象识别威胁(wēixié)评估威胁消减威胁57威胁降低威胁漏洞攻击者第五十七页,共九十七页。威胁(wēixié)建模流程标识资源△找出系统必须保护的有价值的资源△创建总体体系结构△利用简单的图表来记录应用程序的体系结构,包括子系统、信任边界和数据流△分解应用程序△分解应用程序的体系结构,包括基本的网络和主机基础结构的设计,从而为应用程序创建安全配置文件△安全配置文件的目的是发现(fāxiàn)应用程序的设计、实现或部署配置中的缺陷△识别威胁△牢记攻击者的目标,利用对应用程序的体系结构和潜在缺陷的了解,找出可能影响应用程序的威胁△记录威胁△利用通用威胁模板记录每种威胁,该模板定义了一套要捕获的各种威胁的核心属性△评价威胁△对威胁进行评价以区分优先顺序,并首先处理最重要的威胁△这些威胁带来的危险最大△评价过程要权衡威胁的可能性,以及攻击发生时可能造成的危害△评价的结果可能是:通过对比威胁带来的风险与为使威胁得到减少所花费的成本,对于某些威胁采取的行动是不值得的△58第五十八页,共九十七页。STRIDE建模方法(fāngfǎ)STRIDE建模微软SDL中提出发现或纠正设计级(design-level)的安全问题一种确保应用程序具有这些属性的方法是使用STRIDE进行威胁建模,STRIDE是Spoofing(假冒)、Tampering(篡改(cuàngǎi))、Repudiation(否认)、InformationDisclosure(信息泄漏)、DenialofService(拒绝服务)和ElevationofPrivilege(提升权限)的字母缩略词59SSpoolfingIdentity假冒身份/欺骗标识TTamperingwithdata篡改数据RRepudiation抵赖IInformationDisclosure信息泄漏DDenialofService拒绝服务EElevationofPrivilege权限提升第五十九页,共九十七页。理解(lǐjiě)STRIDE威胁威胁安全属性定义举例Spoofing(哄骗)可鉴别性模仿其他人或实体伪装成或ntdll.dll△Tampering(篡改)完整性修改数据或代码修改硬盘、DVD或网络数据包中的DLLRepudiation(抵赖)不可抵赖性声称没有执行某个动作“我没有发送过那封电子邮件”,“我没有修改过那个文件”,“亲爱的,我确实没有访问过那个网站!”InformationDisclosure(信息泄露)机密性把信息披露给那些无权知道的人允许某人阅读Windows源代码;公布某个Web网站的用户清单△DenialofService(拒绝服务)可用性拒绝为用户提供服务使得Windows或Web网站崩溃,发送数据包并耗尽CPU时间,将数据包路由到某黑洞中△ElevationofPrivilege(权限提升)授权获得非授权访问权允许远程因特网用户执行命令,让受限用户获得管理员权限△60第六十页,共九十七页。消减威胁(wēixié)举例61消减(xiāojiǎn)威胁威胁类型消减机制举例消减技术举例假冒认证认证方式:Cookie认证、Kerberos认证、PKI纂改完整性哈希函数、消息认证码、数字签名、防篡改协议抵赖非抵赖性服务强认证、安全审计、数字签名、时间戳信息泄露保密性加密、保护秘密、访问控制、不保存秘密、隐私保护协议拒绝服务可用性认证、访问控制、过滤、流量控制、授权特权提升授权访问控制列表、最小权限运行第六十一页,共九十七页。试题(shìtí)62数据在进行传输前,需要由协议栈自上而下对数据进行封装,TCP/IP协议中,数据封装的顺序是:a、传输层、网络接口层、互联网络层b、传输层、互联网络层、网络接口层c、互联网络层、传输层、网络接口层d、互联网络层、网络接口层、传输层以下关于PGP(PrettyGoodPrivacy)软件叙述错误的是:a、PGP可以实现对邮件的加密.签名和认证b、PGP可以实现数据压缩c、PGP可以对邮件进行分段(fēnduàn)和重组d、PGP采用SHA算法加密邮件微软提出了STRIDE模型,其中R是Repudiation(抵赖)的缩写,关于此项错误的是:a、某用户在登录系统并下载数据后,却声称“我没有下载过数据"软件R威胁b、某用户在网络通信中传输完数据后,却声称“这些数据不是我传输的”威胁也属于R威胁△c、对于R威胁,可以选择使用如强认证、数字签名、安全审计等技术d、对于R威胁,可以选择使用如隐私保护、过滤、流量控制等技术第六十二页,共九十七页。试题(shìtí)63以下关于软件安全测试说法(shuōfǎ)正确的是?a、软件安全测试就是黑盒测试b、Fuzz测试是经常采用的安全测试方法之一c、软件安全测试关注的是软件的功能d、软件安全测试可以发现软件中产生的所有安全问题下面哪个模型和软件安全开发无关()?a、微软提出的“安全开发生命周期(SecurityDevelopmentLifecycle,SDL)”b、GrayMcGraw等提出的“使安全成为软件开发必须的部分(BuildingSecurityIN,BSI)”c、OWASP维护的“软件保证成熟度模型(SoftwareAssuranceMaturityMode,SAMM)”d、美国提出的“信息安全保障技术框架(InformationAssuranceTechnicalFramework,IATF)”第六十三页,共九十七页。试题(shìtí)64微软提出了STRIDE模型,其中R是Repudiation(抵赖)的缩写,关于此项安全要求,下面描述错误的是()?a、某用户在登录系统并下载数据后,却声称“我没有下载过数据”软件系统中的这种威胁就属于R威胁b、解决R威胁,可以选择使用抗抵赖性服务技术来解决,如强认证、数字签名、安全审计等技术措施c、R威胁是STRIDE六种威胁中第三严重的威胁,比D威胁和E威胁的严重程度更高d、解决R威胁,也应按照确定(quèdìng)建模对象、识别威胁、评估威胁以及消减威胁等四个步骤来进行第六十四页,共九十七页。知识域:软件安全(ānquán)开发关键工作知识子域:软件安全编码理解通用安全编码准则:验证输入、避免缓冲区溢出、程序内部安全、安全调用组件、禁止使用不安全函数等理解使用安全编译技术对提高编码安全水平的作用,了解常用安全编译技术理解源代码审核的目的及方式,了解常见(chánɡjiàn)源代码静态审核工具65第六十五页,共九十七页。通用安全(ānquán)编码准则验证输入避免缓冲区溢出(yìchū)程序内部安全安全调用组件禁止使用不安全函数66第六十六页,共九十七页。验证(yànzhèng)输入安全程序第一道防线是检查每一个不可信的输入难以检查所有的输入,可能导致IE被恶意利用检查、验证或者过滤输入不让恶意数据进入(jìnrù)程序后续处理类似网络中部署防火墙何处检查最初接收数据时(第一次)使用数据时67第六十七页,共九十七页。验证(yànzhèng)输入——常见输入源命令行参数数量、数据格式、内容环境变量环境变量可能超出期望有的环境变量存储格式(géshi)存在危险文件不信任可以被不可信用户控制的文件内容不信任临时文件网络来自网络的数据是“高度不可信的”其他来源68第六十八页,共九十七页。验证(yànzhèng)输入——常见数据类型数字数字检查(正则表达式/ASCII值)负数检查(大数溢出为负数)Sendamil攻击合法范围检查文件名最好(zuìhǎo)不让用户设置文件名避免特殊字符69第六十九页,共九十七页。验证输入(shūrù)——常见数据类型电子邮件地址非法的电子邮件地址UTF-8变长编码URI/URL非法地址在合法地址后面增加恶意内容(nèiróng)畸形数据包70第七十页,共九十七页。避免(bìmiǎn)缓冲区溢出缓冲区溢出:是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上△理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符△但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患△操作系统所使用的缓冲区,又被称为“堆栈”,在各个操作进程之间,指令(zhǐlìng)会被临时储存在“堆栈”当中,“堆栈”也会出现缓冲区溢出△是一个非常普遍而且严重的问题缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在△利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果△更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作△恶意攻击者常用溢出漏洞提升权限,并以管理员权限执行非法操作△71第七十一页,共九十七页。缓冲区溢出(yìchū)后果溢出后果攻击者可以使远程服务程序或者本地程序崩溃攻击者可以设计溢出后执行的代码C/C++语言语言特性决定(juédìng)大量的库函数存在溢出其他语言调用C语言库C#允许设置“不安全”例程72第七十二页,共九十七页。避免(bìmiǎn)缓冲区溢出——解决办法解决办法编码避免缓冲区溢出填充(tiánchōng)数据时计算边界、动态分配内存、控制输入使用替代的安全函数或函数库使用没有缓冲区溢出问题的函数:strncpy、strncat、C++中std:string使用替代库:Libmib、libsafe使用更新更安全的编译环境,打开具有安全防御机制的安全编译选项StackGuard、ProPolice、/GS非执行的堆栈防御不可在堆栈上执行代码73第七十三页,共九十七页。程序(chéngxù)内部安全程序内部接口安全程序内部接口数据的检查异常安全处理检测异常,安全处理各种(ɡèzhǒnɡ)可能运行路径检测到某些错误行为/数据,必须以合适的方式处理,保证程序运行安全必要时立即拒绝服务,甚至不回送详细的错误代码74第七十四页,共九十七页。程序(chéngxù)内部安全最小化反馈避免给予不可靠用户(yònghù)过多的信息成功或失败作为跟踪检查的日志可以记录较为详细的信息认证程序在认证前尽量少给信息(版本)如果程序接受了密码,不要返回它避免拒绝服务攻击输入错误尽快返回设置超时延时服务75第七十五页,共九十七页。程序(chéngxù)内部安全避免竞争条件访问共享资源时(文件/变量)没有被适当地控制(kòngzhì)使用原子操作使用锁操作——避免死锁安全使用临时文件很多安全漏洞发生在访问已知文件名或可猜测的临时文件时76第七十六页,共九十七页。安全(ānquán)调用其他组件应用程序实际上几乎都不会是自包含的,它们通常都会调用其他(qítā)组件底层的操作系统数据库可重用的库网络服务(WEB、DNS)77第七十七页,共九十七页。安全调用(diàoyòng)其他组件组件安全检查组件文档,搜索相关说明gets随机数使用经过认可的组件尽可能不调用外部命令,如果不得已要调用,必须严格(yángé)检查参数system、open、exec、78第七十八页,共九十七页。安全调用其他(qítā)组件返回值安全一定要检查返回值,调用是否成功成功时检查返回值,是否按照期望值处理数据(shùjù)中可能含有NUL字符、无效字符或其他可能产生问题的东西错误时检查错误码传递数据安全视安全需求和安全环境考虑传输加密,包括密码算法和安全协议79第七十九页,共九十七页。安全(ānquán)编译使用最新版本编译器与支持工具(gōngjù)使用编译器内置防御特性gcc-Wall-Wpointer-arith-Wstrict-prototypes-O2

80第八十页,共九十七页。源代码审核(shěnhé)源代码审核就是检查源代码,检测并报告源代码中的可能导致安全弱点的薄弱之处△人工审核费时费力容易(róngyì)遗漏工具审核速度快,自动可升级知识库81

源代码审核关注编码中的实现缺陷,通常通过静态分析工具进行,它们扫描源代码,能够发现大约50%的安全问题△第八十一页,共九十七页。代码(dàimǎ)审核工具商业工具(gōngjù)

CoverityFortifyOunceLabsSecureSoftware免费/开源工具BOONCqualXg++FindBugs82第八十二页,共九十七页。“好”的源代码分析(fēnxī)工具安全性安全审核,不要以功能为主多层性软件的多层架构(jiàɡòu)、多层平台、多种语言可扩展性扩展规则、扩展技术知识性主用于分析,开发者也能“学到”安全编程知识集成性支持与IDE集成,支持make、ant等工具83第八十三页,共九十七页。知识(zhīshi)域:软件安全开发关键工作知识子域:软件安全编码理解通用安全编码准则:验证输入、避免缓冲区溢出(yìchū)、程序内部安全、安全调用组件、禁止使用不安全函数等理解使用安全编译技术对提高编码安全水平的作用,了解常用安全编译技术理解源代码审核的目的及方式,了解常见源代码静态审核工具84第八十四页,共九十七页。为什么要软件(ruǎnjiàn)安全测试?软件测试按照特定规程,发现软件错误的过程△检查软件是否满足规定的要求,或是清楚地了解预期(yùqī)结果与实际结果之间的差异其目的在于发现软件中的错误软件安全测试有关验证软件安全等级和识别潜在安全缺陷的过程查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力传统测试仅考虑软件出错时的处理,没有考虑对软件的故意攻击85第八十五页,共九十七页。安全(ānquán)测试在应用投产前,应由独立的安全团队对应用的安全性进行综合评估功能性安全测试(cèshì)对抗性安全测试传统测试方法白盒测试黑盒测试灰盒测试特定的

温馨提示

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

评论

0/150

提交评论