- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件安全编码和软件安全测试培训 四川分行信息技术管理部 2007.10 目录 简介 缓冲区溢出 SQL注入 2006年全行互联网应用系统安全渗透性测试结果 测试结果综述(续) 技术成因分析: 大部分漏洞为注入式漏洞和弱口令。 漏洞技术成因分布较广泛。 SQL 注入漏洞 39% 弱口令 23% 目录遍历 8% 存在未经验证 访问未授权 3% 跨站 5% 网银客户端 5% 网银系统防重放 2% 其他 15% 渗透性测试漏洞的技术成因分析 渗透性测试漏洞的管理成因分析 管理成因分析: 管理成因包括政策遵循、开发过程和运行维护三个方面。通过上图可以看出,漏洞成因在这三方面分布较平均。 代码安全检测结果 项目名称 规模(代码行数) 高危险漏洞 警告性漏洞 提示性漏洞 测试用时(分) EAIB 143505 6 533 2539 12 ERP 529075 0 143 7848 25 CCMIS 60382 24 649 894 7 利用FORTIFY工具软件检测出的三个应用系统的漏洞情况 只要有利益,就有人研究和利用漏洞 系统安全编程 冯.诺伊曼结构 存储程序计算机 指令和指令所操作的数据都一起放在内存中 计算机设计的基本原则 用户的输入 所有用户输入都是非法的,除非被证明不是 一半以上的程序安全问题源于缺乏对用户可控数据的处理,WEB程序尤甚 所谓用户输入,就是所有可能从客户端接收的数据,而不仅是我们提供给用户的输入框 缓冲区溢出 内存中缓冲区用来存放数据 缓冲区自身缺乏相关的机制来防止在保留空间中放入过多的数据 … Char name[4]; Strcpy(name,”AAAAAAAAAAA”); …. 缓冲区溢出原理 缓冲区溢出原理 内存映像 栈溢出 堆溢出 其它溢出 缓冲区溢出利用原理 栈溢出利用原理 进入函数构造栈帧 call指令相当于有个push eip操作 ret指令相当于pop eip操作 … Char name[4]; Strcpy(name,”AAAAAAAAAAA”); …. 在内存中的结构;name溢出可能覆盖ebp 、eip(返回地址)值;随机填充会引起 段错误表现为coredump;精确的计算填充可控制程序走向。 缓冲区溢出利用原理 栈溢出利用原理 覆盖返回地址 Win32还可以覆盖SEH结构 缓冲区溢出利用原理 堆溢出利用原理 堆缓冲区通过malloc、new等分配 溢出的目标缓冲区是堆 两个相邻块可以分配并保存数据,第一块溢出回覆盖第二块(如果第二块正好是重要数据) 各操作系统的堆实现都不相同,利用的难度也大大增加 很多操作系统可以获得一次或多次任意地址4字节的写操作,从而获得控制 导致缓冲区溢出的几种方式 错误的比较目标缓冲区 演示程序cmpdst.c 正确的做法应该是比较源数据的长度,小于目标缓冲区才进行拷贝操作 ms06-040的windows 2000出现过此类错误 //cmpdst.c Void demo(char *str) { char buf[16]; if(strlen(buf)16 { //strcpy(buf,str); strncpy(buf,str,strlen(str)); } } 导致缓冲区溢出的几种方式 用源字符串长度做拷贝限制 貌似用了带长度限制的安全拷贝函数,实际上等于没用 导致缓冲区溢出的几种方式 strncpy等字符串截断拷贝函数的陷阱 演示程序strncpy.c 如果源字符串长度大于限定长度参数,strncpy会按照限定长度拷贝到目标,但并不会在最后加上字符串结束符’\0’ 这个陷阱可能导致不易察觉的缓冲区溢出 导致缓冲区溢出的几种方式 未初始化栈变量的cat操作 演示程序uninitialized.c strcat等函数会对字符串做追加操作 栈操作不会清零,会保持原来的垃圾数据 不确定的数据追加字符串操作可能导致溢出 ms06-040的所有windows都存在这个漏洞 缓冲区溢出防范 编码方面 在数据拷贝前做相应的长度检查 使用带长度检查的字符串拷贝函数 用源代码扫描器(FlowFinder、RATS、ITS4)粗略检查代码可能存在的安全问题 缓冲区溢出防范 编译方面 使用VC7以上版本的编译器编译Windows程序,GS选项默认打开 对于有数组变量的函数会加入cookie检查,以判断返回地址是否被修改 Microsoft Windows动画光标畸形ANI头结构远程栈溢出漏洞 缓冲区溢出防范 硬件方面 使用带NX功能的处理器,并且在系统打开此功能 使用必威体育精装版的操作系统,比如Windows XP SP2、Windows 2003 SP2、Windows Vista
文档评论(0)