缓冲区溢出漏洞分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件安全概述
软件安全漏洞从技术上主要分类:
竞争条件类 涉及多进程或多线程处理的程序中,输出或结 果无法预测,依赖于其他进程事件发生的次序或时 间 TOCTTOU,检查时刻与使用时刻条件状态不 一致,导致攻击者可利用的漏洞
软件安全概述
软件安全漏洞从技术上主要分类:
权限混淆与提升类 程序由于自身编程疏忽或被第三方欺骗,滥用其特权, 或赋予第三方不该给予的权限 权限提升漏洞通常发生在一些拥有特权的应用程序中, 由于安全缺陷,使得获取特权的安全检查被绕过,或被攻破 FTP反弹攻击利用FTP协议的缺陷,绕过FTP服务器的 权限限制,让FTP作为中间代理,使用PORT命令向其他主 机的端口请求访问,用于隐蔽的端口扫描 “越狱”由于iPhone和iPad流行被大众了解与接受,原 指破解类Unix系统中jail机制,移动设备为自身利益,只允许 访问特定来源的软件资源,黑客与厂商之间开始了一轮轮越 狱与反越狱斗争
软件安全概述
软件安全漏洞从技术上主要分类: 输入验证类 程序在对用户输入进行数据验证存在错误,没有保证输入数据 的正确性、合法性和安全性,导致可能被恶意攻击与利用; 可细分为:格式化字符串、SQL注入、代码注入、远程文件包 含、目录遍历、XSS、HTTP Header注入、HTTP响应分割错误等 针对目前流行的Web应用程序的输入验证类漏洞,近年来已经 成为攻击者最普遍利用的目标 例:字符串格式化漏洞:C语言特定字符串处理函数printf()涉 及将未过滤的用户输入作为该函数的格式字符串参数,恶意用户 利用%s、%x等格式化选项,打印内存某些地址的数据内容;利用 %n格式化选项,将任意构造的数据写入任意栈内存位置,从而控 制程序逻辑,控制系统。
软件安全概述
软件安全漏洞对生命威胁
1988两伊战争期间,美国防空导弹 击落伊朗客机,290人遇难,美国的 解释是雷达跟踪软件的含糊和令人 误解的输出显示 鱼鹰V-22倾斜旋翼直升机试飞时, 一条水压线爆裂,软件错误认为备 份系统没有工作,导致飞机坠毁, 4人遇难 2010年英国科学家以身试法,全球 首个被计算机病毒感染的人类,证 明体内的医疗器材(心脏起搏器) 有感染病毒的风险
软件安全概述
软件自诞生,就和BUG形影不离 能被攻击者利用并导致危害的BUG就是软件安全漏洞 (安全漏洞范围更广) 安全漏洞的三个基本元素:
系统的脆弱性或缺陷 攻击者对缺陷的可访问性 攻击者对缺陷的可利用性
Biblioteka Baidu
软件安全漏洞:在软件需求、开发和配置过程中引入 的缺陷,执行会违反安全策略,具有三个基本元素 CERT公布2006-08年,每年公开漏洞7K-8K个 实际每年新公开漏洞上万个,大量漏洞把持在国家情 报部门、软件厂商、安全公司和黑客团体手中
软件安全概述
软件安全漏洞类型 CVE标准目录中,将安全漏洞分37类 2001-04年,缓冲区溢出漏洞保持第一位 2005开始,Web安全问题快速升温,XSS、 SQL注入、PHP远程文件包含等占据前三 其他普遍流行的安全漏洞:目录遍历、信息泄 露、畸形输入导致的拒绝服务、符合链接问题、 格式化字符串、密码学缺陷…
软件安全概述
软件功能强大,扩展到生活方方面面,软件安全对经 济和社会生活影响巨大 软件安全漏洞造成的经济损失
1988年莫里斯蠕虫造成损失9600万美元 2001年红色代码蠕虫,造成损失26亿美元 2003年冲击波、Mydoom等 蠕虫,带来数十亿,甚至数 百亿美元的损失 这些蠕虫利用服务器软件 中的漏洞传播
软件安全概述
软件安全“困境三要素”
连通性 接入互联网的计算机数量快速增加,高连通性使小小软 件缺陷造成巨大的影响(蠕虫) 高度连通性也使得网络攻击能够引发现实世界的故障, 电话网、电力网事故(电影:鹰眼) 连通性使得不需人为干预的自动化攻击成为可能,大大 改变了威胁环境,威胁传播范围更大更迅速 在一个普遍依赖软件的高连通性网络中,一旦软件中的 安全漏洞被恶意利用,后果将不仅是计算机短期无法工作, 对正常生活也会造成重要影响
软件安全概述
安全领域多年研究,软件安全问题反而越来越严重, 为什么软件普遍存在漏洞? 软件安全“困境三要素”
复杂性 源代码行数:Windows NT 3.1(3百万)——Windows XP(4千万)——Windows Server 2003(5千万) 软件规模越来越大,越来越复杂,BUG也会越来越多, 预计每千行代码约存在5-50个BUG 大多数BUG不会造成安全问题,但一个足以致命
软件安全概述
软件安全漏洞从技术上主要分类:
内存安全违规类 内存访问时引入的安全缺陷,如缓冲区溢出、 Use-after-Free、Double free等不安全指针问题; 主要出现在C/C++编写的软件中,支持任意的 内存分配与回收,任意指针计算、转换,未保护内 存;Java等则通过禁用指针计算与转换,实施内存 垃圾跟踪与收集等机制,保证内存安全; 缓冲区溢出是最基础的内存安全问题
软件安全概述
软件安全“困境三要素”
可扩展性 为了支持更好的用户感受,软件提供扩展渠道,软件的 可扩展性机制促进现代软件的蓬勃发展; 操作系统通过动态装载设备驱动和模块,浏览器通过脚 本语言、控件和动态装载库支持更好的扩展性; 很难组织攻击者和恶意代码以不可预测的扩展方式入侵 软件和系统,厂商不重视 分析可扩展软件的安全性要比分析不能更改软件的安全 性困难得多
网络监测技术 缓冲区溢出漏洞攻击
软件安全概述
美国国家标准技术研究院提到:软件安全漏洞是导致系统安全策 略违背的本质原因 安全漏洞在软件中大规模存在 大多数成功攻击利用已公布未修补的软件安全漏洞或不安全配置 软件漏洞: 缓冲区溢出 格式化字符串漏洞 竞争条件漏洞 整数溢出 XSS跨站脚本 SQL注入 最简单的栈溢出,更难控制的堆溢出、内核溢出,对抗DEP(数 据执行保护)和对抗ASLR(地址空间布局随机化)的攻击 软件代码与内存空间上演着精彩的对弈