软件安全技术-代码静态分析课件.pptx
- 【下载声明】
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页。代码安全静态分析工具的引入对程序员来说,对安全编程所需的知识缺乏理解会导致其所编写的代码不符合安全规范而引发安全问题。另外,即使是经验丰富的程序员也无法完全避免在代码编写的过程中出现或多或少的拼写错误,这类简单错误有时也可能引发安全问题。静态分析工具能够完整而客观地进行程序检测,而不管编码人员是否了解哪些代码是与安全“相关的”。当一种新的攻击出现时,静态分析工具可以迅速地对相关代码进行复查,同时分析该
展开阅读全文