书签 分享 收藏 举报 版权申诉 / 31
上传文档赚钱

类型软件安全技术-代码静态分析课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:3294330
  • 上传时间:2022-08-17
  • 格式:PPTX
  • 页数:31
  • 大小:687.78KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《软件安全技术-代码静态分析课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    软件 安全技术 代码 静态 分析 课件
    资源描述:

    1、第4章 代码安全静态分析第1页,共31页。教学目标应掌握的知识要点:静 态 分 析 的 概 念;静态分析技术;静态分析的过程;执行代码审查;安全审查;静 态 分 析 度 量 标 准;静态分析中的常见缺陷;缓冲区溢出。软件漏洞重点 代码安全静态分析 静态分析中的常见缺陷 静态分析的过程第2页,共31页。本节安排静态分析的概念静态分析技术代码静态分析工具的引入第3页,共31页。44.1 静态分析第4页,共31页。定义及特点程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过各种分析工具对程序代码进行扫描并做出评估的过程。4.1.1 静态分析的概念特点不实际执

    2、行程序,只是通过对代码的静态扫描对程序进行分析执行速度快、效率高第5页,共31页。类型检查例1 short s=1;int i=s;short r=i;在本例中,程序的本意是想要将一个类型为int的表达式赋予给一个类型为shor t的变量,但是却无法通过类型检查。可以通过一个显式的类型转换来解决这个问题。例2 String sa=new String100;sa0=hello world;Object oa=sa;oa0=new Integer(1);System.out.println(sa0);只有只读的Object 才能是String的父类型。但Java里并没有只读数组这么个类型,于是错

    3、误发生了。4.1.2 静态分析技术第6页,共31页。风格检查风格检查程序所显示的错误常只是影响代码的可读性和可维护性,而不是程序运行过程中会发生的某种错误PMD会检查出:catch块中没有内容、if判断块中没有内容、代码中出现System.out.println等警告描述。4.1.2 静态分析技术第7页,共31页。程序理解程序理解最主要的用途在于帮助理解程序,搞懂代码库中的大量代码。它是一个从计算机程序中获取知识信息的过程,这些知识信息可以用于程序排错、增强程序、重用程序和整理文档等工作。在很多集成开发环境(IDE)中,都包括了一些初级的程序理解功能,比如:查找本变量的声明和使用位置。更高级一

    4、点的还能帮助查找类之间的关联关系等。4.1.2 静态分析技术第8页,共31页。程序验证和属性检查程序验证是对源代码进行分析,如果源代码符合预先专门制定的一份描述程序行为的规格说明,那么则说明该程序完好。性检查的方法跟程序验证的方法从本质上是一样的,它们的区别在于,属性检查依据的只是描述部分程序行为的部分规格说明,而程序验证依据的是描述所有程序行为的规格说明。4.1.2 静态分析技术代码中,在调用new分配内存后,程序未对调用结果的正确性进行检测。如果cbSize为0的话,则(cbSize-1)为-1。但是Memset中第3个参数本身是无符号数,因此会将-1视为正的0 xffffffff,函数执

    5、行之后程序当然就只有崩溃了。第9页,共31页。Bug查找Bug查找是指按照预先制定的一些共同认同的规则,来查找程序中存在的一些bug。4.1.2 静态分析技术最后一行将产生一个 null 指针异常,因为变量 actions 还没有初始化如果第1行的Map不包括一个名为“bob”的人,那么在第5行询问 person 的名字时就会出现 null 指针异常。第10页,共31页。安全审查以安全为中心的静态分析;现代安全分析工具往往更像是一种属性检查程序和bug查找程序的混合体,许多安全属性能被简洁的表达为程序属性,对于一个属性检查程序来说,搜索潜在的缓冲区溢出漏洞可以当做是检查这样的程序属性:“程序不

    6、会访问被分配内存的边界之外的地址”。安全分析工具采纳了这样一种观念,即开发人员往往会继续再使用相同的不安全的方法来解决问题,这可说成是一种不安全的惯例。4.1.2 静态分析技术第11页,共31页。代码安全静态分析工具的引入对程序员来说,对安全编程所需的知识缺乏理解会导致其所编写的代码不符合安全规范而引发安全问题。另外,即使是经验丰富的程序员也无法完全避免在代码编写的过程中出现或多或少的拼写错误,这类简单错误有时也可能引发安全问题。静态分析工具能够完整而客观地进行程序检测,而不管编码人员是否了解哪些代码是与安全“相关的”。当一种新的攻击出现时,静态分析工具可以迅速地对相关代码进行复查,同时分析该

    7、新型攻击能否对代码构成威胁。在被发现之前,某些安全缺陷已在程序中存在很久了,静态分析工具有能力针对新发现的缺陷类型对遗留代码进行检查。尽管误报难以避免,但从安全的角度看,漏报才是最严重的局限性。HP Fortify 4.1.2 静态分析技术第12页,共31页。134.2 静态分析的过程第13页,共31页。静态分析的过程1.提取源代码2.根据分析需求把程序源代码变换成易于分析处理的程序模型。在这个过程用到了编译原理中的成熟技术;3.将代码按照检查规则执行分析;4.按照制定的报告模式生成分析报告。4.2 静态分析的过程第14页,共31页。定义静态分析工具首先要做的,是用一个程序模型来表示待分析的代

    8、码,即提取目标代码的数据结构。在构建该模型的过程中,静态分析工具一般会借用大量来自编译器领域的技术:词法分析 语法分析 抽象语法 语义分析 跟踪控制流 跟踪数据流 污染传播 指针别名歧义4.2.1 建模第15页,共31页。词法分析是把源文件的字符流转换成记号流,即从左到右逐个字符对构成源程序的字符串进行扫描,依据词法规则,识别出一个一个的标记(token),把源程序变为等价的标记串序列。例:int a=3+5;经过词法分析会输出 int,a,=,3,+,5和;这七个单词。然后比较记号流中的标识符和预先定义的安全性漏洞字典,如果匹配就发出警告。在静态分析工具中,词法分析是针对源代码进行的第一个操

    9、作,该操作将代码转换为一系列记号,这个记号流的创建过程称为词法分析4.2.1 建模第16页,共31页。语法解析 语法解析器中用来匹配上述记号流的是一种与上下文环境无关的语法。该语法由一组产生式构成,用语言中的一对符号来标记。4.2.1 建模第17页,共31页。抽象语法 解析树无法完成复杂的分析,因为在解析工程中,经常会对语法进行等价的转换,这样会给语法引入一些多余的成分,对后续阶段造成不利影响,甚至会使各阶段变得混乱。因此,很多编译器(包括GJC)经常要独立地构造解析树,为前、后端建立一个清晰的接口。这时就需要使用抽象语法树(AST)。上例中的语法树如下:4.2.1 建模抽象语法树的结构不依赖

    10、于源文件的文法,也就是解析阶段所采用的上下文无关语法,因此它能够为后来的分析提供一个更加标准方便的版本第18页,共31页。语义分析语义分析,即审查每个语法成分的静态语义。4.2.1 建模语义分析检查点类型检查控制流检查一致性检查第19页,共31页。跟踪控制流许多静态分析算法都会探究函数执行可能采取的路径。因此,绝大多数分析工具都会在AST或者中间表示法之上生成一个控制流图以使算法更高效。控制流图中的节点是一些基本块:指令序列总以连续方式从第一条执行到最后一条。4.2.1 建模第20页,共31页。跟踪数据流数据流分析一般是对某个函数的控制流图进行遍历,同时记录数据值的产生和使用位置。4.2.1

    11、建模第21页,共31页。污染传播通过污染传播测试能知道攻击者可能潜在地控制程序中的哪些值,确定污染数据的来源,找出所有外部数据进入程序的入口代码以及它在程序中是如何移动的。4.2.1 建模代码动态构建和执行一个SQL查询,查找与给定名称匹配的item。查询限定只有当当前用户名与item的所有者名称匹配时,才向当前用户显示item。第22页,共31页。指针别名歧义指针别名分析是另一个问题数据流问题。别名分析的目的是要了解哪些指针可能是指向相同的内存位置。例:只有当指针p1和p2不指向内存的相同位置时,编译器才会记录下面两个声明:*p1=1;*p2=2;对于安全工具来说,别名分析在执行污染传播测试

    12、方面很重要。一个流动的敏感的污点-跟踪算法需要执行别名分析,以了解下面代码中从getUserInput()到processInput()的数据流:p1=p2;*p1=getUserInput();processInput(*p2);4.2.1 建模第23页,共31页。组成任何优秀的分析策略都至少包括两个组成部分:分析每个单独的函数的程序内分析(本地分析)和分析函数之间的关系的程序间分析(全局分析)。4.2.2 分析算法第24页,共31页。断言4.2.2 分析算法第25页,共31页。本地分析法本地分析法抽象解释:是一种通用技术,这种方法首先将程序中与所关注的属性无关的信息抽取出去,而后使用选中的

    13、程序抽象执行一种解释。谓词转换器:一种用来替换模拟和解释的方法是导出函数对其调用者的需求。模型检查:对于临时性的安全属性,比如“内存应该只释放一次”以及“应该只有非空指针才能被解除引用”,可以很容易地将所检查的属性表示为一个小型的有限状态自动机。4.2.2 分析算法第26页,共31页。全局分析全局分析的作全局分析被采用的实质原因有两个方面:首先,它可以保证汇编系统的一致性;其次,它通过提供自动优化,减轻了程序员的负担。用是用来分析程序中各个函数之间的关系。4.2.2 分析算法第27页,共31页。定义及分类是指安全工具应该报告的内容的规则集。分析算法有时可能由错误的“因”获得正确的“果”,但分析工具永远也不会报告超出规则集范围的问题。4.2.3 规则规则格式:专用的规则文件、批注用于传播的规则源规则第28页,共31页。审计人员如何利用报告审计人员如何利用报告将所报告的结果进行分类并分组消除所报告的结果中非预期的部分对所报告结果的意义进行解释4.4.4 报告结果第29页,共31页。静态分析技术划分建模涉及到的技术分类规则分类如何利用报告小结第30页,共31页。静态分析的过程控制流图数据流图本地分析和全局分析作 业第31页,共31页。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:软件安全技术-代码静态分析课件.pptx
    链接地址:https://www.163wenku.com/p-3294330.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库