腾讯网首页·手机腾讯网·加入收藏·设为首页·导航
don't delete

您所在的位置: 腾讯首页 > 科技频道 > 正文

 

吴石:几种软件缺陷的可能利用方法
http://tech.QQ.com  2008年03月19日19:18   腾讯科技    评论0

腾讯科技讯 3月19日消息,在为期两日的网讯网络安全技术峰会上,IM及协议安全专家吴石分享了他在软件缺陷上的研究成果,以及在IM的第三方软件存在的发现等话题。

以下为吴石讲演实录:

吴石:我的题目是几种不常见的软件缺陷,但是内容可能有一些出入。第二,我也是一个初学者,PPT里可能也存在很多问题,也希望各位专家指出来。

我们先看看常见的软件缺陷:第一,栈溢出。就是在栈中申请一段内存,一般是数组或字符串,在对这段内存做操作的时候,错误的写操作可能导致栈中也特殊意义的地址被用户的输入内容所控制。最早发现是一些字符串操作的函数中,比如strcat,后来又发现在Strncpy如果不正常操作的话也会出现这个问题。最后有一个Windows UNicode处理的函数如果不正常使用也会出现这样的问题。下面我介绍的是整数溢出的问题。

整数溢出是多发于的情况,特别是一些加、乘的操作出现在内存前面就要特别注意了。加或者乘出来的数不一定比原先两个数大。还有一个正负数比较的问题,或者是符号扩展的问题。即使现在这个问题仍存在于很多软件中。但是在很多流行软件中已经很少出现了,比如微软的软件、国外大公司的软件。但是在国内软件这个问题依然是很多的。这个问题在JAVA软件中也经常存在。例如银行系统,系统错误处理,把别人帐号上扣掉的金额,一个正的金额加到你的帐号上。

第二,heap overflow。这是现代程序C语言主要申请分配方法,所以他比栈溢出比例大的多。微软做了很多防护措施,所以它利用起来是非常复杂的。尤其是WindowsXP2之后的版本,比如vista。堆管理主要利用两张表,freelist、lookaside,freelist[0]代表着一些不规则的可以利用的chunk,尤其是比较大的chunk。freelist[1] - freelist[n]代表2的整数次方可以利用的堆中的chunk。利用这样堆溢出的问题,你需要对Windows堆管理非常熟悉。比如有人通过freelist[0]这个链表成功利用。目前有一个immdbg的程序对这种研究利用是很有帮助的。因为他把堆分配的内容都可以显示出来。对vista软件的攻击,理论上应该是不存在的。因为vista对堆管理有严格控制,但是有很多软件使用自己的内存管理方法,比如OFFICE,他们自己堆管理方法和内存方法是和vista不一样的,这些方法往往采用教科书的方法或者以前系统的方法,所以他们这些方法是有可能被利用起来。

第三,未初始化的问题。栈上的问题由德国人在06年详细讨论过。头一次压栈的时候,在栈上写需要内容,然后函数退出,导致栈顶上移,有问题的函数压栈时正好利用这段栈空间,如果函数中发现了未初始化问题,比如数组,那么其内容刚好是我们刚写入的内容的栈空间,就可能被利用。先把堆里的大部分内容写成自己需要的内容,未初始问题发生时,比如堆里指针的内容就可能指向我们需要的内容。目前这个问题是大量存在的,OFFICE存在了很多。比如这个月微软补丁,excel那一个补丁里就包括很多这样的问题。你可以对比新旧的OFFICE软件,你发现OFFICE2007有一些新加的代码就是做初始化工作的。

第四,二次释放或者叫double free问题。内存泄露是现代软件大敌,特别是服务器软件。有很多程序员害怕发生这样的问题,申请内存时总是想释放它,结果释放多了几次,这样也会有安全问题。曾经在linux上的方法很巧妙、经典,但是在目前Windows上比较难以利用。很多软件采用自己管理内存方法,那么就很可能被利用到。

我们现在可以讨论一下可以利用软件问题,就是可以执行任何代码软件的充分条件,就是将任意4字节内容写到任意内存地址。如果满足这个条件的话,它肯定是可以被利用的。这个条件叫做充分条件。在栈的溢出或者堆溢出,将任意4字节内容写如某些特定的内存地址,而这些地址有特殊含义。由于代码流或者数据流在X86里是混合的。还有一些更特殊的情况,任意1字节写进某些特定的地址,这些地址刚好有特殊含义,可能也会引发这个问题。所以我们总结一下,离充分条件越近的,越有可能这个问题被利用,可以被执行任意代码。

关键问题就在于写内存操作,而不在于读内存。写内存操作可以改变很多东西,读内存的话,即使发生异常的话,这些问题也往往不能被利用。当我们要从大量程序中快速找到可以利用的漏洞的时候,要首先找到那些写操作引起的异常。第二,比较少出现的异常。未初始化问题发现,就要了解一下未初始化缺省填充的字符。这是一个例子,我们可以详细分析一下哪些结果是被利用的,根据我们原则:第一,写操作的过程。这个看起来比较复杂,而且可能是一个整数溢出的问题。

下面讲讲我的心得,另类栈溢出的问题。这是一个递归函数,与一般的栈溢出不同的是向下溢出,由于栈内存空间是有限的,这个一直压栈的过程会导致内存读写到栈分配内存空间之外,找出问题的关键在于代码流程图中找到可以由用户控制的“圈”。一般情况下,这种会造成程序崩溃,某些特殊情况下会造成执行恶意代码。这种情况是很特殊特殊的。就是两个现成的栈紧紧挨在一起。第二,栈每次分配空间都比较大。第三,编译器要比较老的那种才可以。新的编译器会检查这样的情况。

我们考虑完栈溢出的话,可以考虑相应的堆溢出情况,堆溢出情况更加复杂,但是更有灵活性。在一部分情况下有可能被利用,如果你利用这种方法去寻找的话。

安全问题可以借用的数学理论,因为数学方法是人类经过几千年总结出来的,具有普遍意义和前瞻性。我们可以看到安全问题很大部分是由攻击者和研究者发现一条可以控制的代码或者数据流,这些是程序员没有想到的。传统堆栈溢出基本上可以看作是系统或者库函数的比较不明显的后门,攻击者或研究员对这些后门比一般程序员了解。基本上一个程序可以看作是两张图,一张叫做数据流图、一张叫做代码流图,发现安全问题就是在这两张图上发现一条路径,发现这条执行路径的话,可以执行攻击者所需要的功能。

针对这样的问题,数学上准备了相应的理论,图论这方面的研究早就有了。我认为以后研究者所做的工作就是根据自己经验,以图论理论进行指导,利用计算机快速找到一条安全问题的路径。而厂商要做的就是利用自己强大的计算能力,快速遍历所有可知性路径来证明软件安全性。这是我的一点心得体会。

第三个可以借用的理论叫做编译原理。C/C++程序都需要经过编译优化措施执行,在这个编译过程中编译程序事实上获得了很多有用的信息,如何在软件上安全利用这些信息,目前很多公司进行了很多有意义的尝试。但是离真正有用还是有一定差距。这种方法理论上应该比Fuzzing的方法好,他知道软件结构可以较快发现软件的问题。

下面又是我的一个体会,我比较倾向应用这样方法得到一些可用信息后,自动构造一些测试用例去测试,这样的话,测试性能和人力成本就会大幅降低。

第四个可以借用的数学理论就是人工智能和统计理论。目前的话,有很大的问题。因为样本库太少。我们可以首先做模板方法,比如前面提到+或者×出现内存分配前面,我们可以做一个模板,用这个模板去扫描原代码,试图发现这样的问题。从这些模板匹配方法再慢慢过度到模式匹配方法。但是人工智能和统计理论对其他的一些网络安全问题有很大的作用。比如说DDOS或者靠数量来使得网站、程序、崩溃的这些方法,它应该是会取得很大的作用。它对网络流量的分类目前还是取得一定的成功,不能说很大的成功。

手机看新闻】 【一键订阅新闻】 【返回科技首页】 【论坛  】【发表评论(0)

热门新闻排行

IT新闻

互联网

通信

网评

三星前董事长李健熙涉嫌逃税被罚1亿美元
AMD首席执行官鲁毅智宣布辞职 COO梅耶尔接任
王文汉:大学毕业后的5-10年最重要!
三星集团前董事长李健熙因逃税被判刑三年
联想柳传志的价值与启示:无心插柳 柳已成荫
美国举行人机扑克牌大赛 顶尖高手被电脑击败
前微软女项目经理因诈骗罪 被判入狱22个月
李健熙被判3年 三星新CEO赴中国展危机公关
HD-DVD中国版影碟机即将上市 EVD欲诉其侵权
福布斯:英特尔施压致AMD第2季业绩仍大幅亏损
杀毒软件年内有望全免费
“网络第一美女”接私活 被判赔偿400万元
北京网店新规遭专家炮轰 被指阻碍电子商务
515亿美元 史上最大PE收购案尘埃落定
黑客“封锁”旧金山网络 技术人员仍在解密
谷歌地球部门高级程序员辞职 称谷歌规模过大
奇虎推出永久免费杀毒软件 只靠增值服务盈利
俄罗斯总统:官员如不会上网就卷铺盖走人
多家视频网站获视频牌照 引发新一轮烧钱热
专家炮轰北京工商局:网店办证扼杀百万就业
黑市iPhone售价翻六倍 传俄罗斯总统也在用
浙江瑞安天价手机号叫卖298万元
广州“手机地铁票”面世
诺基亚第二季净利润17.5亿美元 同比降低61%
工信部证实将于电信重组结束后发放3G牌照
首款WAPI双模手机面世 国产厂商将推多款产品
中国电信即将启用全新CDMA手机品牌
中国移动拿下188号段 185和186号段归新联通
中国电信开始集采1000万部CDMA手机
苹果3G版iPhone连遭破解 打破运营商软件限制
北京网店新规遭专家炮轰 被指阻碍电子商务
工商总局局长:北京网店新规将向全国推广
诺基亚第二季度在中国等新兴市场遭遇寒流
杀毒软件年内有望全免费
女士左手留14厘米长指甲 不让丈夫睡左侧
诺基亚解读财报细节 下半年推触摸屏手机
三星前董事长因逃税被判刑三年 并罚1亿美元
三星前董事长李健熙涉嫌逃税被罚1亿美元
密推低价ThinkPad 联想变局笔记本
我是网游历史见证人,我来说说那些故事:
腾讯博客  娱乐 体育 时尚 文化 思想 财经 动漫

男人也能这么美
男人也能这么美
女星最爱做护士
女星最爱做护士

杨澜:与奥运会结缘绝对不是偶然
李少红回应质疑 演艺明星各种吃相
赤壁也为奥运做贡献 董洁清纯写真
名模性感模仿秀 最落魄的女明星们
奥运主持最佳人选 奥运啦啦队曝光
赵薇带病捐款 黄奕妖艳雷人写真照
越狱男主角时尚照 新红楼的造型门

新闻线索

如果你有科技领域的人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。

网友意见留言板
关于腾讯 | About Tencent | 服务条款 | 广告服务 | 腾讯招聘 | 腾讯公益 | 客服中心 | 网站导航
Copyright © 1998 - 2008 Tencent Inc. All Rights Reserved
腾讯公司 版权所有