软件安全性测试程绍银sycheng@ustc.
edu.
cn软件安全与测试2大纲软件安全性测试安全性测试主要方法软件系统的安全性测试举例软件安全与测试3大纲软件安全性测试安全性测试主要方法软件系统的安全性测试举例软件安全与测试4软件安全性测试安全性测试的概念安全性测试的特点安全性测试的分类安全性测试的目标安全性测试的方法学和方法示例软件最优方法VS.
安全性测试方式示例软件安全与测试安全性测试的概念软件安全性测试是确定软件的安全特性实现是否与预期设计一致的过程软件安全性测试是在软件的生命周期内采取的一系列措施,用来防止出现有违反安全策略的异常情况和在软件的设计、开发、部署、升级以及维护过程中的潜在系统漏洞5软件安全与测试6安全性测试的特点安全性测试不同于传统测试类型最大的区别是,它强调软件不应当做什么,而不是软件要做什么功能性测试:软件做它应该做的事应用输入,验证正确的输出不正确的输出/行为缺陷(Bug)非安全性缺陷常常是违反规约,即软件应当做A,它却做了B安全性测试:软件不做它不应该做的事应用输入,验证没有不安全的事情发生安全性缺陷(漏洞,脆弱性,Vulnerability)安全性缺陷常常由软件的副作用引起,即软件应当做A,它做了A的同时,又做了B软件安全与测试7安全性测试的分类安全功能测试基于软件的安全功能需求说明,测试软件的安全功能实现是否与安全需求一致,需求实现是否完备主要安全功能需求包括数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等安全漏洞测试从攻击者的角度,以发现软件的安全漏洞为目的安全漏洞是指系统在设计、实现、操作、管理上存在的可被利用的缺陷或弱点漏洞被利用可能造成软件受到攻击,使软件进入不安全的状态,安全漏洞测试就是识别软件的安全漏洞软件安全与测试8将安全性测试整合到软件开发生命周期中软件安全与测试9安全性测试的主要工作全面检验软件在软件需求规格说明中规定的防止危险状态措施的有效性和在每一个危险状态下的反应对软件设计中用于提高安全性的结构、算法、容错、冗余、中断处理等方案,进行针对性测试在异常条件下测试软件,以表明不会因可能的单个或多个输入错误而导致不安全状态用错误的安全性关键操作进行测试,以验证系统对这些操作错误的反应对安全性关键的软件单元和软件部件,要单独进行加强的测试,以确认其满足安全性需求软件安全与测试10安全性测试的目标通常的目标内存溢出SQLinjection/XSS各种输入验证型问题进一步的目标访问控制信息泄露不充分的随机数鉴别与加密…软件安全与测试11安全性测试的方法学11BlackBoxWhiteBoxStaticDynamicExamineMRD/PRDandspecsauditsourceDebug,unittestFuzzingFaultinjection软件安全与测试12安全性测试的方法学WhiteBoxUsecommercialstatisticanalysistooltoauditthesourcecodeCoverity/Fortify/Etc.
.
BlackBoxFaultinjectionDumbFuzzingGrayBoxSmartFuzzing(Fuzzingwithdeeplyknowledgeoftheproduct)软件安全与测试13安全性测试的方法示例白/灰盒测试对软件工程文档/源代码/二进制代码进行静态分析/审核对运行时系统进行动态监测例子:污点传播分析/符号执行功能验证功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块、权限管理、加密系统、认证系统等进行测试,主要验证上述功能是否有效软件安全与测试14安全性测试的方法示例漏洞扫描安全漏洞扫描主要是借助于特定的漏洞扫描器完成的.
通过使用漏洞扫描器,系统管理员能够发现系统存在的安全漏洞,从而在系统安全中及时修补漏洞的措施分为两种类型:主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序;网络漏洞扫描器是指基于网络远程检测目标网络和主机系统漏洞的程序模拟攻击对于安全测试来说,模拟攻击测试是一组特殊的极端的测试方法,以模拟攻击来验证软件系统的安全防护能力例子:Fuzzing,使用大量半有效的数据作为应用程序的输入,以程序是否出现异常为标志,来发现应用程序中可能存在的安全漏洞软件安全与测试15安全最优方法vs.
安全性测试软件安全与测试16大纲软件安全性测试安全性测试主要方法软件系统的安全性测试举例软件安全与测试17安全性测试主要方法静态分析测试基于模型的安全测试基于故障注入的安全性测试基于语法的安全性测试模糊测试基于属性的安全性测试形式化安全性测试基于风险的安全性测试基于故障树的安全性测试技术基于渗透的安全性测试软件安全与测试18静态分析测试建模:代码程序模型,即一组代表此代码的数据结构词法分析语法分析语义分析程序控制流数据流分析静态分析是指在不执行代码的情况下对其进行评估的过程软件安全与测试19静态分析测试优点通过对代码的检查,往往能指出安全问题的根源能够在开发早期发现错误当安全研究人员发现一种新的攻击时,静态分析工具可以容易地对大量代码进行重新检查缺点普遍存在的问题是误报和漏报现象,因此要在误报和漏报之间进行平衡软件安全与测试20静态分析测试二进制程序的静态分析软件安全与测试基于模型的安全测试基于模型的安全性测试是对软件的结构和行为进行建模,生成相应的测试模型,再由测试模型自动生成测试用例,以驱动安全性测试常用的软件测试模型有有限状态自动机、UML模型、马尔可夫链等适用范围取决于安全功能的建模能力特别适用于建模用与或子句表达逻辑关系的安全需求,对授权、访问控制等安全功能测试比较适用21软件安全与测试以UML模型为例的方法流程安全性威胁首先被以UML序列图的形式进行建模以威胁建模为基础,提取威胁路径的集合在程序执行过程中这些威胁都是不应该发生的代码用随机生成的测试用例来执行,执行的路径被收集起来,并与定义好的威胁路径进行比较如果一个执行路径符合其中某一条威胁路径,则其需要被上报并处理22软件安全与测试自动化安全功能测试处理流程RamaswamyChandramouli,MarkBlackburn.
Automatedtestingofsecurityfunctionsusingacombinedmodelandinterface-drivenapproach.
BigIsland,HI,USA:Proc37thHawaiiInternationalConferenceonSystemSciences,2004:5-8.
23软件安全与测试TestAutomationFrameworkforSecurityFunctionalTesting24软件安全与测试25基于故障注入的安全性测试故障注入是评测容错机制的一种有效方法.
通过人为方式将故障引人到系统当中,加速系统发生故障的失效的过程针对应用与环境的交互点,主要包括用户输入、文件系统、网络接口、环境变量等引起的故障故障注入可以有效地模拟各种异常程序行为,通过故障注人函数能强制使程序进入某些特定状态,而这些状态在采用常规的标准测试技术时是无法达到的软件安全与测试故障注入系统的一般结构图26软件安全与测试27当前故障注入的主要方法仿真故障注入需要以较好的目标系统仿真模型为基础硬件故障注入需要专业的硬件设备(也可通过软件方法模拟实现)软件故障注入对目标系统硬件环境没有任选损坏,能方便地跟踪目标程序的执行并回收数据,系统开稍小,且有较好的可移植性基于环境混乱的故障注入把应用程序和其运行环境都纳入系统的范畴,通过改变正常的环境因素(如文件,网络等)来测试系统对环境故障的客错能力软件安全与测试当前比较成熟的软件故障注入工具FIAT可能破坏任务的内存映像FERRARI利用UNIX的ptrace函数在运行期间破坏程序的内存映像,在故障被激活的地方插入陷阱指令Xception在目标处理器内部直接编程调试硬件,并带有许多故障触发器来激活故障28软件安全与测试基于语法的安全性测试语法测试是根据被测软件的功能接口的语法生成测试输入,检测被测软件对各类输入的响应接口可以有多种类型,命令行、文件、环境变量、套接字等语法测试的思想:软件的接口或明确或隐含规定了输入的语法语法定义了软件接受的输入数据的类型、格式语法定义可采用BNF或正则表达式语法测试适用于被测软件有较明确的接口语法,易于表达语法并生成测试输入的情况语法测试结合故障注入技术可得到更好的测试效果29软件安全与测试基于语法的安全性测试语法测试的步骤识别被测软件接口的语言,定义语言的语法根据语法生成测试用例并执行测试.
生成的测试输入应当包含各类语法错误,符合语法的正确输入,不符合语法的畸形输入等通过察看被测软件对各类输入的处理情况,确定被测软件是否存在安全缺陷30软件安全与测试模糊测试Fuzzing:基于黑盒的随机性测试通过随机的变异正常的程序输入来检测程序的响应,以发现程序中隐藏的安全漏洞模糊测试可以使用语法规则来产生正常的输入,也可以使用基于特定程序的输入并用试探法来指导输入变量的生成模糊测试非常有效,不会误报,但漏报较多,代码覆盖率较低设x是一个随机的32位输入语句"z=1/(x-7)"的除零缺陷,只有232分之一的概率被发现语句"if(x==7)then"的then分支只有232分之一的概率被测试到31软件安全与测试模糊测试模糊测试的主要分类文件格式类Fuzzing网络协议类Fuzzing当前比较成熟的Fuzzing工具PeachSpikeFilefuzz一般根据Fuzzing思想,自行编写Fuzzing工具32软件安全与测试WhiteboxFuzzingSmartFuzzing/WhiteboxFuzzing结合符合执行+具体执行,以及约束求解技术33符号值:x,y执行步骤P1->P2->P3seed:x=0,y=0具体执行路径P1符号执行收集路径条件2*x==y&&x!
=y-5对路径子条件取反2*x==y&&x==y-5求解得x=5,y=10软件安全与测试WhiteboxFuzzing经典论文G.
Patrice,K.
Nils,andS.
Koushik,"DART:directedautomatedrandomtesting,"inProceedingsofthe2005ACMSIGPLANconferenceonProgramminglanguagedesignandimplementationChicago,IL,USA:ACM,2005.
C.
Cristian,G.
Vijay,M.
P.
Peter,L.
D.
David,andR.
E.
Dawson,"EXE:automaticallygeneratinginputsofdeath,"inProceedingsofthe13thACMconferenceonComputerandcommunicationssecurityAlexandria,Virginia,USA:ACM,2006.
S.
Koushik,M.
Darko,andA.
Gul,"CUTE:aconcolicunittestingengineforC,"inProceedingsofthe10thEuropeansoftwareengineeringconferenceheldjointlywith13thACMSIGSOFTinternationalsymposiumonFoundationsofsoftwareengineeringLisbon,Portugal:ACM,2005.
P.
Godefroid,M.
Levin,andD.
A.
Molnar,"AutomatedWhiteboxFuzzTesting,"MicrosoftResearchMay2007.
G.
Patrice,K.
Adam,andY.
L.
Michael,"Grammar-basedwhiteboxfuzzing,"inProceedingsofthe2008ACMSIGPLANconferenceonProgramminglanguagedesignandimplementationTucson,AZ,USA:ACM,2008.
L.
Andrea,M.
Lorenzo,M.
Mattia,andP.
Roberto,"ASmartFuzzerforx86Executables,"inProceedingsoftheThirdInternationalWorkshoponSoftwareEngineeringforSecureSystems:IEEEComputerSociety,2007.
34软件安全与测试基于属性的安全性测试首先确定安全编程规则,然后把这些规则编码以作为安全性属性,之后就可以此来验证程序代码是否遵守了这些规则由于人工验证的成本太高,需要一个程序分析工具来自动化完成这一过程.
一个可行的方法是:把安全属性形式化描述为一个有限状态自动机把待分析的代码模型化为一个下推自动机利用模型验证技术来确定模型中的任何一个违反安全属性的状态在程序中是否是可达的基于属性的测试有针对性的测试目标软件的特定安全属性,可满足安全属性的分类和优先级排序要求,且部分与具体软件无关的属性规格说明是可重用的35软件安全与测试形式化安全性测试形式化安全测试的基本方法是建立软件的数学模型,在形式规格说明语言的辅助下,提供形式化的规格说明形式规格说明语言主要有基于模型的Z、VDM和B语言基于有限状态语言,如有限状态自动机、SDL和状态图基于行为的CSP、CCS、LOTOS和PetriNets等语言代数语言,如OBJ混合语言,如离散和连续数学的规格说明语言等36软件安全与测试形式化安全性测试的分类模型检测一种针对有限状态迁移系统的高效自动验证技术,它主要通过显式状态搜索或隐式不动点计算来验证有穷状态并发系统的模态命题性质,已被广泛应用于计算机硬件、通信协议、控制系统、安全认证协议等方面的分析与验证用状态迁移系统S描述软件的行为,用时序逻辑、计算树逻辑或μ演算公式F表示软件执行必须满足的性质,通过自动搜索S中不满足公式F的状态来发现软件中的漏洞2007图灵奖,EdmundM.
Clarke、EAllenEmerson和JosephSifaki,主要贡献:ModelChecking.
其中,EdmundM.
Clarke曾于2009年10月来我校访问定理证明将程序转换为逻辑公式,然后使用公理和规则证明程序是一个合法的定理37软件安全与测试形式化安全性测试的优缺点优点形式化方法具有完备的数学基础,因而形式规格说明是精确的通过揭示不一致性、二义性和不完全性,能够有效增加对系统的深人理解能根据形式规格说明进行正确性证明缺点开发成本较高、维护困难状态爆炸问题当前主要成熟工具:Spin,Verisoft,JavaPathFinder38软件安全与测试基于风险的安全性测试风险是指错误发生的可能性和造成的危害程度的结合基于风险的安全性测试:以软件安全风险作为测试的出发点和测试活动的主要参考依据把风险分析与管理、安全测试以及软件开发过程统一起来,在软件开发的各个阶段中就把有风险的安全漏洞考虑在内,将安全测试与软件开发同步进行39软件安全与测试基于风险的安全性测试通过误用模式、异常场景、风险分析以及渗透测试等技术来处理具有风险的安全问题基于风险的测试以软件模块的质量风险为主要参考依据,来进行测试力量的分配基于风险的安全测试技术可以实现尽早地发现尽可能多的潜在安全问题,以最少的资源、最短的时间有效地达成用户需求,并确保合适的软件品质以避免大量的后期维护工作40软件安全与测试基于故障树的安全性测试技术基于故障树的安全测试技术是利用故障分析树和故障树的最小割集来生成安全性测试用例的方法故障树分析法(FaultTreeAnalysis,FTA)是一种将系统故障形成原因由总体到部分按树状细分的分析方法基于故障树的安全性测试可以显著提高测试的自动化程度,对大型复杂软件系统的测试具体侧重性,能够有效提高测试效率,而且还是非常充分的安全性测试41软件安全与测试故障树故障树(FaultTree,FT)以系统最不希望发生的事件作为故障分析树的根(顶事件)寻找导致这一故障发生的全部可能因素(中间事件和底事件)用倒立树状图形表示出顶事件与底事件之间的逻辑关系用相应的事件符号代表这些事件,再用适当的逻辑门符号把顶事件、中间事件和底事件连接起来42软件安全与测试最小割集在由故障树的某几个底事件组成的集合中,如果该集合中的底事件同时发生能引起顶事件的发生;并且当去掉此集合中任何一个底事件将不再能引起顶事件的发生,则这个集合被称为最小割集43软件安全与测试基于渗透的安全性测试渗透测试(PenetrationTesting)是一个评估主机系统和网络的安全性时模仿黑客特定攻击行为的过程安全测试工程师尽可能真实地模拟黑客使用的漏洞发现技术和攻击手段,对目标的安全性作深入的探测,发现系统最薄弱环节的过程渗透测试一般可分为两类,被动攻击和主动攻击被动攻击不采用直接进入目标系统的方式去收集信息主动攻击则直接侵入目标系统或网络内部收集所需要的信息44软件安全与测试基于渗透的安全性测试一次完整的渗透测试步骤为:收集信息,抽取出对网络渗透有用的信息,制定渗透策略并进行漏洞测试,模拟攻击的真实过程,最后整理收集到的信息并提交测试报告渗透测试比较真实有效,发现的漏洞一般都是真实存在的,而且较为严重但是由于模拟的测试只能达到有限的测试点,覆盖率较低.
根据美国权威机构统计,渗透测试的覆盖率只有达到20%"-30%,而且存在漏报率较高的情况45软件安全与测试安全性测试方法特点比较46软件安全与测试主流安全性测试工具分类47软件安全与测试48大纲软件安全性测试安全性测试主要方法软件系统的安全性测试举例软件安全与测试软件系统的安全性测试举例根据软件系统安全指标不同,测试策略也不同安全测试与评估软件系统安全性测试列表(Checklist)手机应用软件安全性测试49软件安全与测试50安全测试与评估软件安全与测试51软件系统安全性测试列表(Checklist)系统安全性及其测试方法代码安全性检验Web安全性测试系统功能安全性测试数据安全性验证网络和通信安全性验证软件安全与测试52系统安全性及其测试方法软件系统的安全性系统安全规范与标准源代码评审方法基于风险的安全测试渗透性测试方法模糊测试方法软件安全与测试53代码安全性检验程序代码安全性C++/Java安全性列表(Checklist)JavaScript安全性列表代码安全性扫描工具软件安全与测试54Web安全性测试动态跟踪元素属性检测JavaScript事件跨站脚本攻击(XSS)跨站请求伪造攻击(CSRF)拒绝服务攻击(DoS)Cookie劫持输入验证浏览器安全问题软件安全与测试55Web安全性测试文件上传风险Web服务器端安全性MSIIS漏洞检验Apache/Tomcat/.
.
.
漏洞检验内容安全性会话管理截获和修改post请求SQL注入及其实例软件安全与测试56Web安全性测试AJAX安全性测试多系统单点登录机制渗透性Web安全测试使用工具扫描SQL注入漏洞使用Firebug观察实时的请求头使用Webscarab观察实时的post数据使用Tamperdata观察实时的响应头使用curl检验URL重定向攻击使用nikto扫描网站软件安全与测试57系统功能安全性测试口令安全性身份验证用户权限非授权攻击访问控制策略操作日志检查配置管理功能失效、异常带来的安全风险软件安全与测试58数据安全性验证数据编码验证数据加密和解密系统数据完整性数据管理性数据的独立性数据备份和灾难恢复软件安全与测试59网络和通信安全性验证协议一致性验证防火墙入侵检测技术网络拦截IPSec/SSLVPNPKI/CA网络漏洞检查工具软件安全与测试Checklist还需要细化用户身份认证的安全性测试明确区分系统中不同用户权限系统中会不会出现用户冲突系统会不会因用户的权限的改变造成混乱用户登陆密码是否是可见、可复制是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统60软件安全与测试手机应用软件安全性测试手机应用相对普通的PC应用,有其自身的特点,在测试策略的选择上不能完全照搬PC应用软件的测试策略、方法和内容,而需要根据手机应用软件面临的风险特点采取相应的测试策略手机应用软件分类测试策略测试内容61软件安全与测试手机应用软件分类62软件安全与测试手机应用软件面临的安全风险63软件安全与测试测试策略验证被测试收集应用软件是否满足预定的安全准则和要求,重点检查软件的防止灾难故障能力、防成败性故障能力和容错能力,对数据的非法访问的保护能力硬件和软件在各种故障模式下的测试,对硬件和软件在降级配置时的处理和保护能力测试各种保护能力测试,包括容错操作能力测试、操作数据安全性保护测试、通讯数据安全性保护测试,对重要数据抗非法访问能力测试,权限管理保护测试多系统、多平台上运行的软件人机接口的安全性测试测试过程中严格执行JAVA安全域的划分,并进行相应的签名或测试注重安装测试的重要性,严格按照安装及卸载的安全性要求,设计测试用例64软件安全与测试测试内容安全及卸载的安全性要求手机应用软件权限数据安全性通讯安全性人机接口安全性65软件安全与测试安装与卸载测试内容66软件安全与测试权限测试内容67软件安全与测试数据安全性要求68软件安全与测试数据安全性要求69软件安全与测试通讯安全性要求70软件安全与测试人机接口安全性要求71软件安全与测试小结软件安全性测试安全性测试主要方法软件系统的安全性测试举例
zji怎么样?zji最近新上韩国BGP+CN2线路服务器,国内三网访问速度优秀,适用8折优惠码zji,优惠后韩国服务器最低每月440元起。zji主机支持安装Linux或者Windows操作系统,会员中心集成电源管理功能,8折优惠码为终身折扣,续费同价,全场适用。ZJI是原Wordpress圈知名主机商:维翔主机,成立于2011年,2018年9月启用新域名ZJI,提供中国香港、台湾、日本、美国独立服...
我们对于BlueHost主机商还是比较熟悉的,早年我们还是全民使用虚拟主机的时候,大部分的外贸主机都会用到BlueHost无限虚拟主机方案,那时候他们商家只有一款虚拟主机方案。目前,商家国际款和国内款是有差异营销的,BlueHost国内有提供香港、美国、印度和欧洲机房。包括有提供虚拟主机、VPS和独立服务器。现在,BlueHost 商家周年活动,全场五折优惠。我们看看这次的活动有哪些值得选择的。 ...
厦门靠谱云股份有限公司 双十一到了,站长我就给介绍一家折扣力度名列前茅的云厂商——萤光云。1H2G2M的高防50G云服务器,依照他们的规则叠加优惠,可以做到12元/月。更大配置和带宽的价格,也在一般云厂商中脱颖而出,性价比超高。官网:www.lightnode.cn叠加优惠:全区季付55折+满100-50各个配置价格表:地域配置双十一优惠价说明福州(带50G防御)/上海/北京1H2G2M12元/月...
手机杀毒软件哪个好为你推荐
2014年万圣节是几月几日万圣节是几月几日手机浏览器哪个好手机浏览器哪个好用浏览器哪个好用浏览器哪个好音乐播放器哪个好音乐播放器哪个好用手机炒股软件哪个好手机炒股软件网校哪个好有什么网校比较好看书软件哪个好什么读书app好用扣扣空间登录如何设置QQ空间快速登陆dns服务器未响应DNS服务器未响应是什么dns服务器地址DNS服务地址
香港vps主机 bbr 国外服务器网站 视频存储服务器 服务器怎么绑定域名 全能主机 一元域名 台湾谷歌网址 seednet cdn联盟 电信托管 shuang12 国内域名 谷歌台湾 lamp什么意思 杭州电信宽带优惠 测速电信 阿里云邮箱怎么注册 国外免费网盘 google搜索打不开 更多