使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt

使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt

ID:50697216

大小:5.15 MB

页数:37页

时间:2020-03-15

使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt_第1页
使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt_第2页
使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt_第3页
使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt_第4页
使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt_第5页
资源描述:

《使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、使用静态分析技术找到“真正”的代码质量缺陷与安全漏洞HeartBleedBug软件研发测试经济学绝大部分缺陷在修复成本较低时被引入。大部分缺陷在成本较高时被发现和修复。代码静态分析技术代码静态分析•定义:在不执行计算机程序的条件下,对源代码进行分析,找出代码缺陷•执行方式:一般配合静态程序分析工具进行•采用技术:数据流分析、机器学习、语义精简...•可检测类型:死锁,空指针,资源泄露,缓冲区溢出,安全漏洞,竞态条件...•优点:•能够检测所有的代码级别的可执行路径组合,快速,准确•直接面向源码,分析多种问题•在研发阶段开始找到并修复多种问题,

2、节省大量时间/人力成本•注意:静态分析不是万能的,测试是持续的过程,非一劳永逸•编译器警告:保证类型安全–最初级的静态分析,检测规则简单•中间语言分析:检测字节码(ByteCode)的缺陷,将其重新映射到真实代码中–在转换与映射过程中易造成精度丢失•高误报率:目前静态分析产品的误报率普遍在30%以上。•缺陷种类较少,找到的问题级别不高:多数为代码规范或低级缺陷,非实际Bug–如命名规范、类定义规范,最佳实践.....•易用性较低:基本上都是一次性的使用工具,无法与SDLC集成–SCM集成:如SVN,CVS,Perforce,Git–BugTr

3、acking:如Bugzilla,Jira现存问题••由斯坦福大学教授DawsonEngler提出,在深度理解代码与程序语义的基础上检测缺陷旨在查找“真正的代码缺陷”•实现原理:•••使用可扩展的metal语言定义正确性Checker将程序的源码使用状态机进行抽象描述(StateMachineAbstraction)。使用xgcc系统匹配Checker与抽象状态机状态,找到问题所在的点。•可准确检测实际的Bug(内存和指针问题、资源泄露、缓冲区溢出,数组越界,心脏出血漏洞...)••能够检测高达亿行级别的代码库,避免“状态爆炸”使用模型检验与

4、符号执行技术,误报率降低至15%以下•算法已步入实际应用••面向企业的Coverity软件面向开源代码的CoveritySCAN改进型的静态分析方案•基于MetaCompilation的静态分析:源码分析-数据流分析•源码分析可以探知开发者的想法:“x=1”需要在调用“do_something”后继续执行。•提出警告:if循环没有包含所有语句如何进行Java代码静态分析?Java语言被编译成JVMbytecode-在运行时被转换成本地可执行代码的分析选项一•分析byte-code:用户编译他们的软件,然后分析编译后的可执行文件与调试信息,分析

5、引擎联系找到的缺陷与源代码位置•某些开源工具的实现原理选项二:•获取所有的Java编译过程并执行分析•Bytecode分析工作仍旧存在,但包含更多的内容1基本的工作流•获取所有编译过程•每当“javac(或其他相关API)”被调用后,编译获取系统记录所有的编译器选项,操作,源代码与调用的库文件•面向源代码和库文件可进行全面编译后分析•找到的缺陷将被展示给研发人员修复如何分析缺陷?1•过程间分析(Intra-proceduralanalyses)将考虑每一个合理的可执行路径•快速修剪不可行路径是一件很麻烦的事情!•数学方案•获取一系列的函数定义

6、•资源分配•调用….•过程间分析•Bytecode分析将创建函数定义如何分析缺陷?1•数据流分析将跟踪所有应用中的不可信数据•“source”•“sink”•二者之间必须进行验证•某些使用智能静态分析,例如:•checkedthisreturnvaluefornull19timesoutof20•accessedthisfieldunderalock19timesoutof20•calledbase.Foo()in19overridesofFoo()outof201找到潜在Bug其实只是难题之一•消除误报非常难•将复杂的缺陷解释出来很难•只找

7、潜在的一次性缺陷是很难的1难题!ControlFlowGraph如何简化搜索?A(Source)BC(Escaper)DE(Sink)TaintedData?数据流分析AdvanceddataflowTaintedData•动态“fuzzing”•基于上下文分析CoverityOWASPtop10:JSP&ASPOWASP10-2013A1:注入A2:失效认证与会话管理A3:跨站脚本攻击(XSS)A4:不安全的直接对象引用A5:安全配置错误A6:敏感信息泄露A7:功能级访问控制缺失A8:跨站请求伪造A9:使用含有已知漏洞的组件A10:未验证的

8、重定向和转发CWE映射77,78,88,89,90,564,917259,321,384,79879,80,81,82,83,84,86,8722,23,364,7

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。