【论文笔记】2013-6-16看到的三篇缓冲区溢出论文的笔记

今天看了三篇论文,启发还是挺大的,现在做一下介绍,顺便复习一下。

1、《基于内存地址确认的缓冲区溢出检测方法》 吕涛,曹天杰,中国矿业大学

       他总结的缓冲区溢出的原理是:向一个空间有限的缓冲区中拷贝了超过其实际分配大小的字符串。那么能导致的后果有两个:一个是过长字符串覆盖相邻存储单元,引起程序运行失败,导致死机重启等。二是利用这个漏洞可以执行任意指令,取得系统特权。

       其原理是:当进行系统调用时,系统调用指令的返回地址指向的是代码区或者堆区。如果指向了普通堆栈区,那么就可以判断是发生了攻击。

       其检测的方法是:设计一个检测系统,检测Linux环境下系统调用的返回地址。编写地址安全检测函数,在程序运行后,检测内存内容记录与程序相关的代码段、堆栈段和堆区的地址范围。当系统调用返回时,在程序返回之前截获并且检查被调用程序的返回地址是否落在普通堆栈区。如果在,则认为是非法调用,记录log采取补救。

 

 

2、《基于进程执行轮廓的缓冲区溢出攻击效果检测》 苏朋,陈性元。解放军信息工程大学。

      这篇文章首先介绍了缓冲区溢出攻击效果的测评。对于攻击效果的测评的意义:(1)补充和完善了缓冲区溢出渗透测试中的测评方法;(2)为缓冲区溢出攻击的检测和防御方法提供了借鉴;(3)为被攻击目标的事后恢复提供了依据。

      Windows Native API是一个监视接口,windows中的系统服务是系统中所有进程在内核空间执行的惟一途径,是构建程序功能的基本元素。一个进程的执行过程与Native API序列相对应,运行一个用户空间的应用程序会产生大量的Native API来完成指定的功能。通过Native API序列就可以完整跟踪进程行为。

      缓冲区溢出攻击效果在Native API序列上的表现:(1)改变进程正常执行流程以执行shellcode,完成拒绝服务、反连端口、端口绑定、上传文件、开启后门等功能,为进一步攻击做好准备。(2)通过NtCreateProcess函数新建进程以进一步执行特定功能的Native API序列,达到相应的攻击目的。

本文就是利用了系统调用监视的思想,检测缓冲区溢出攻击效果。以Windows Native API作为数据源进行攻击的效果检测,提出了执行轮廓的概念和建立方法。

      

3、《一种针对C程序缓冲区溢出的检测方法》徐超,何炎祥。武汉大学。

       本文主要利用CCuredC语言源程序进行运行时检测的代码插桩;然后用BLAST提供的自定义安全属性语言对这些插桩代码进行相关约束描述;最后让BLAST根据约束描述文件对代码插桩后的程序进行模型检测,就可以找出C语言程序中潜在的缓冲区溢出漏洞。

       CCured是为了检查代码中的各种指针,对代码的运行时进行插桩,然后对指针进行安全性检测。它的输出结果是可以保证内存访问安全的C语言代码。它可以保证C语言程序在运行时不会产生缓冲区溢出。就算有潜在漏洞,也会在对应语句执行前给出错误提示。不足之处:(1)运行时检测会消耗额外运行时间。(2)程序错误只能在运行时才能暴露。(3)可能会插桩一些不必要的运行时检测。

       BLAST是对代码进行可达性分析,判断程序是否可以从入口处开始执行且到达某个指定位置(即程序中的error标签语句)。用户输入一个C语言源程序prog.c以及自定义的安全属性约束文件prog.spc,然后BLAST可以根据该描述文件对程序进行静态分析,在与安全属性约束文件所匹配的对应位置添加判断,并在违背约束的分支下添加error标签语句;最后进行可达性分析。若源程序满足所有的属性约束,即程序不会执行到任何添加error标签的语句,返回safe,只要源程序不满足一条属性约束,则返回一个程序执行的反例路径,亦即程序的一个错误状态。

       利用CCured可以将C程序的安全属性用可被BLAST表示的插桩代码来表示,利用BLAST不仅可以经过CCured处理后的程序中找出不必要的无效插桩,还能发现程序中的错误,可以降低运行的时间消耗,且使得部分程序错误在开发时就暴露出来,不必等到程序运行时暴露,做到防范于未然。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值