- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2017-4-11
1
程序安全检测技术program safy inspection techniques
郭德贵
guodg@
2017-4-11
2
第一讲 程序安全与静态分析
1.1 程序安全问题简介
1.2 静态分析方法简介
-静态分析的基本思想
-静态分析功能
-静态分析基本过程
1.3 程序安全检测系统基本结构
2017-4-11
3
1.1 程序安全问题简介
程序安全:就是使软件在收到恶意攻击的情况下依然能够继续运行及确保软件被在授权内合法使用的思想。
本课程致力于识别并避免在代码中出现常见的错误,这些错误并不一定是与某个安全功能相关的。
char buf[15];
char prefix[]=“http://”;
char path[]=“”;
strcpy(buf,prefix);
strcat(buf,path,sizeof(path));
2017-4-11
4
void printMsg(FILE* file, char* msg)
{ fprintf(file, msg);}
void printMsg(FILE* file, char* msg)
{ if(file==NULL)
{logError(“attempt to print message to null file”);}
else if(msg==NULL)
{logError(“attempt to print null message”);}
else
{fprintf(file, msg);}
1.仅有防御性编程还不够
防御性编程不能保证软件安全。好的防御性编程需要添加代码来检查程序员的假定条件,他能够揭示程序员所犯的逻辑错误。但是,由于防御性编程面临很多严峻的挑战,他不能保证软件的安全性。
2.动态分析看到的是问题本身而非征兆
动态分析就是通过运行软件来检验软件的动态行为和运行结果的正确性,是一种精确的检测方法。但是他的分析结果往往依赖特定的输入、调度和执行路径,容易出现漏报等情况。
3.静态分析可事先查找源代码中的缺陷
静态分析审核速度快,可以在不实际运行程序的情况下对软件进行分析。
2017-4-11
5
4.漏洞分类
7种有害的领域
1)输入验证和表示法:安全问题起因于对输入的信任,由此引发的问题包括:缓冲区溢出、SQL注入等。
2)API滥用:调用者违反了调用者和被调者这间的约定,如程序在调用chroot()之后调用chdir()失败,违反了如何以一种安全的方式改变活动根目录的约定。
3)安全功能部件:安全功能部件如身份鉴别、密码系统等要能正常工作。如:内存中的数据保留时间问题、源代码中不能有密码等。
2017-4-11
6
4.时间和状态:在多核、多CPU或分布式计算机上的多任务操作系统可能并不是按照程序员的代码有序的、不间断的线性执行。线程、进程、时间以及状态的非预期交互可能引起程序缺陷。
5.错误处理:错误处理不足或不处理;产生错误时泄漏了太多信息或不能安全处理这些信息。
6.代码质量:软件质量 欠佳可能导致不可预知的行为。如存取空指针所指位置的信息或者进入一个死循环都将使得一次攻击得逞。
7.封装:封装的作用是画出清晰的边界,意味着你的活动代码不会被其他活动代码所滥用。
2017-4-11
7
1.2 静态分析简介
1.静态分析基本思想
程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。
2017-4-11
8
2.静态分析功能
静态分析应用范围广泛,主要解决以下几类问题:
类型检查
风格检查
程序理解
属性检查
Bug查找
安全审查
2017-4-11
9
1)类型检查
类型检查消除全部类型的编程错误,通过编译时捕获错误防止运行错误。
2)风格检查
纯粹的风格检查程序强制执行的规则一般与空格、命名、注释、程序结构等相关。风格检查所展示的错误往往都是影响代码的可读性和可维护性,不会指出程序运行时会发生的错误。
3)程序理解
帮助用户搞懂代码库中的大量代码。如:提供程序的 概貌视图、查找本方法的所有应用等等。
2017-4-11
10
4)程序验证和属性检查
程序验证工具接受一份规格说明和一份代码,尝试证明该代码忠实实现了这份规格说明。目前程序验证还不能处理任何大型的程序。
目前,更为常见的程序验证是根据部分程序行为的部分规格说明对软件进行检查,称为属性检查。
5)Bug查找
指出程序以程序员设想之外的方式运行的一些地方。
6)安全审查
文档评论(0)