【分析】缓冲区溢出漏洞发掘之整数范围限制浅析

WebDav漏洞简单分析及通用exploit设计 WebDav漏洞简单分析及通用exploit设计    拜读了isno写的>、>,以及Nankia写的>之后,用他们发布的exploit、以及能在网上找到的exploit在我的一些测试机上测试,有些成功,有些不成功。于是便想自己调试一下。在后来的调试过程中,参考了大量资料,特别是yuange所写的>。在这过程中我学到了很多东西,自己也有些心得体会,其中可能有不少错误的地方,于是便想写下来,一来请各 阅读详情
缓冲区溢出漏洞发掘之整数范围限制浅析

Author: Brief
E-Mail: Brief# fz5fz.org
Website: http://www.fz5fz.org
Website: http://www.safechina.net
Date: 05-03-2004


--[ 目录

  1 - 前言
  2 - 原型简介
  3 - 整数限制产生
  4 - 整数限制解决
  5 - 结论
  6 - 参考
  7 - 关于


--[ 1 - 前言

    确实没有什么新的东西,权且当作读书笔记。

    基于静态分析的软件缓冲区溢出漏洞发掘技术主要针对高级语言源代码或汇编代码,它可以在软件发布之前或之后发现一些潜在的安全问题,当然主要是运用到一些开源系统或系统开发人员。在此我们讨论的是把软件缓冲区溢出漏洞发掘抽象为整数范围分析的问题,且只针对C语言源代码。关于整数范围限制的缓冲区溢出漏洞发掘技术,详情请参见[1]。

    相信大家对软件缓冲区溢出问题都有一定的了解,在此不对其背景及原理做详细的介绍。国内的朋友可以到[2]和[3]查阅一些相关的技术文献,也可以到[4]浏览最新的缓冲区溢出漏洞信息。


--[ 2 - 原型简介

    基于静态源代码分析的缓冲区溢出漏洞发掘技术,它可以发现很多在开发阶段的安全问题,同时也可以发现一些开源系统的软件漏洞。它们主要针对的是源代码的程序分析,这包括一些编译原理相关的知识,如语法分析,语义分析等。

    整数范围限制的发掘原型包括了程序源代码分析,数学建摸,系统安全等方面的相关内容。首先是对C语言源代码进行特殊的分析,之后产生整数范围限制,最后对产生的限制进行分析从而筛选出存在安全问题的代码。简单的介绍可以参见[5]。

    作为一个原型也就应该存在其一定的实用价值。这个原型正是他们对实际工作分析后的折中选择。整数范围限制的发掘原型也存在一些相关的准确度问题,假阳性和假阴性。所谓的假阳性就是产生错误的警告;假阴性则是遗漏掉安全漏洞。也就是我们通俗所说的误报和漏报情况。作为一个折中,它选择了精确度与可测量度之间的相对平衡,这样就增加了对实际大系统分析的可行性。

    在原型中提出了他们的两个新观点:
    ⑴ 将C字符串看作抽象数据类型;
    ⑵ 将缓冲区视为整数范围对,包括分配范围和使用范围;

    将分配给字符串变量的缓冲区长度定义为alloc(s),字符串变量当前使用的缓冲区长度定义为len(s),s为系统中定义的字符串变量。

    如果软件当前使用的缓冲区长度len(s)大于系统为起分配的缓冲区长度alloc(s),那么就有可能存在缓冲区溢出漏洞,至于是否可以被利用暂时不做考虑,这又是一个自动化分析衡量的难题。在考虑缓冲区长度的同时,也必须注意到缓冲区的位置,也就是与变量相关的缓冲区范围的长度与位置。这样,对软件缓冲区溢出漏洞的发掘也就成了对整数范围的追踪问题。

    整个工作分为两部分,其一是对字符串操作产生相应的整数范围限制;其二则是对产生的限制进行快速而准确的分析,得到最后的漏洞报告信息。

    限制语言的详细数学描述与表示请参见[1]。


--[ 3 - 整数限制产生

    分析C语言源代码使用的是工具集BANE[6]。它通过追踪C代码的分析树来产生整数范围限制的。为了方便起见,字符串的长度包含了结束符'/0'。这样一个比较安全的表达式就是 len(s) ≤ alloc(s)。对字符串的操作,其自身定义了一系列的对应匹配表达式,当源代码中出现了相应的语句时,就查找表中对应的整数范围限制表达式。

    这些匹配的表达式对应的C语言语句包括:char s[n],strlen(s),strcpy(dst,src),strncpy(dst,src,n),s = "foo",p = malloc(n),p = strdup(s),strcat(s,suffix),strncat(s,suffix,n),p = getenv(...),gets(s),fgets(s,n,...),sprintf(dst,"%s",src),sprintf(dst,"%d",n),snprintf(dst,n,"%s",src),p[n] = '/0',p = strchr(s,c),h = gethostbyname(...)等等。

    为了可测量性和易实现性,他们使用了非流敏感的分析方法,也就是忽略代码中的控制流和表达式顺序。我们可以很容易的想到,这样的方式很容易造成分析的不准确性。如程序中的循环语句,它们中可能含有一些相对重复的语句,可能就会产生一些错误的分析结果,或遗失一些分析结果。基于流敏感的类型限制,大家可以参见[7]。

    但是在他们的原型中,函数strcat()被做了特殊的处理,对所有出现strcat()的地方都标志为潜在的安全漏洞隐患。

    下面我们来看看原型的分析方式,定义len(s)的范围为[a,b],且alloc(s)的范围为[c,d],那么就会出现三种可能的情况:

    ⑴ 如果 b≤c,可以判断字符串s不会发生缓冲区溢出;
    ⑵ 如果 a>d,字符串s总会发生缓冲区溢出;
    ⑶ 如果两个范围重叠在一起d>b>c>a,就不能作出肯定的判断,可能存在潜在的缓冲区溢出漏洞;

    为了原型的简单易实现,他们舍弃了很多对指针操作的分析,其中未分析的操作就包括指针混淆现象(pointer aliasing),双指针操作,数组指针,函数指针。但因为结构(structure)在C语言中的使用非常广泛,所以特地支持对结构的分析与处理。


--[ 4 - 整数限制解决

    将缓冲区溢出漏洞发掘看作是整数范围限制的问题,那么就需要一个判断是否存在缓冲区溢出的分析解决方案。他们使用了简单的图论技术来构建一个有效的解决整数范围限制的算法。由于一些图论知识的描述不太方便,在此不对其做太多深入的分析。

    针对限制系统的解决方案为我们提供了每个变量的边界范围,但是没有给出变量之间的关联关系。这样可以减轻一些分析负担而容易实现,但也会漏掉一些安全问题。目前比较简单的安全问题可能是因为一个变量的不正当使用而造成的,但复杂的安全问题则往往是由一个错综复杂的关系而产生的,这也是本原型的一些局限性。

    首先产生一个有向图,每个顶点对应程序中的一个变量。针对每个变量所产生的限制关系则以有向边的形式在有向图中表现出来。解决方案通过在有向图中传播一些信息来释放一些关系,最后得到简化的与漏洞发掘本质相关的有向图。

    如果最后产生的有向图是循环的,那么通过拓扑结构给图分类,然后将信息在有向图中经分类后的有向边传播。

    他们提出了三种针对循环有向图的解决方案:

    ⑴ 约束那些会导致循环限制系统的程序;
    ⑵ 引入一种对产生循环的变量的放宽操作,它可以避免无穷上升链;
    ⑶ 使用限制语言中的特别域信息来直接处理循环相关的限制系统;

    由于前两种方案的各种弊端,最后选择了第三种解决方案。因为第一种方案不切实际,现实程序中总是存在很多的循环与递归的;第二种方案会产生一些不精确的结果。

    最后他们得出了一个定律就是可以在线性时间内解决存在循环的限制系统。


--[ 5 - 结论

    在性能方面,本原型还有很多需要优化的地方,虽然现在已经是一个可用的系统了。原型因为产生了过多的调试信息,这为后期的分析带来了较大的工作量。今后可以在降低分析时间方面做一些努力的尝试。

    最大的局限性就是不精确的范围分析而导致过多的误报。这是目前很多漏洞发掘原型/工具共同面对的问题,也就是在建立抽象模型时没有很好的解决范围分析的精确性问题,但其为我们也提供了很多切实可用的信息,这比完全的人工审计已经提高了很多了。如果能够为它提供足够的时间来分析产生的整数范围限制,那么在精确度方面的效果应该会好很多。

    还存在的一个问题就是漏报,目前还不能很好地测量漏报率。同时限制系统的解决结果也并不能为人员提供足够详细的漏洞情况。

    作为一个自动化的软件缓冲区溢出漏洞静态分析原型,它已经是比较不错的了,虽然有很多需要改进的地方,但毕竟可以减轻人员审计的大量时间和精力。个人认为如果要提高漏洞发掘的精确度,除了对缓冲区溢出漏洞发掘的原理有深入理解和认识的同时,还需要有很深的抽象能力,才能产生真正切实有效的思路和方法。


--[ 6 - 参考

  [1] David Wagner et al, "A First Step Towards Automated Detection of Buffer Overrun  Vulnerabilities".
       http://www.isoc.org/isoc/conferences/ndss/2000/proceedings/039.pdf

  [2] XFOCUS
       http://www.xfocus.net/articles/

  [3] NSFOCUS
       http://www.nsfocus.net/index.php?act=magazine

  [4] SecurityFocus
       http://www.securityfocus.com/archive/1/

  [5] David Wagner et al, "Towards automated detection of buffer overrun vulnerabilities: a first step".
       http://www.isoc.org/isoc/conferences/ndss/2000/proceedings/slides/01.pdf

  [6] A. Aiken et al, "A toolkit for constructing type- and constraint-based program analyses".
       http://theory.stanford.edu/~aiken/publications/papers/tic98.ps

  [7] Jeffrey S. Foster et al, "Flow-Sensitive Type Qualifiers".
       http://www.cs.umd.edu/~jfoster/papers/pldi02.pdf


--[ 7 - 关于

关于我们:

FZ5FZ 主要从事网络/系统安全的学习与研究,深入编程技术的剖析与探讨,坚持原创,追求共享。
FZ5FZ 主页: http://www.fz5fz.org
【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库02 每个分支下又细分了四个关键方向,并按照“研究对象/焦点、基本问题、核心理论/概念、研究方法、应用/目标、前沿/发展”的框架进行阐述,严格遵循了六级编码体系。在最终整合时,应建立唯一的学科分类编码表(例如,用两位数字或“ART”、“MED”、“ECO”等字母前缀),并确保所有下级编码(尺度、层次、类别、子类、具体项)的逻辑一致性。此回答中的编码为示例,实际系统需据此调整。控制过程(前馈、同期、反馈)、全面质量管理(TQM)、平衡计分卡(BSC)定量(调查、实验)、定性(访谈、民族志)、混合方法、大数据。 阅读详情

相关推荐

高光谱盲超分DBSR复现全记录:从退化估计到双域耦合的工程实践

高光谱图像超分辨率旨在从低分辨率观测中恢复高分辨率光谱立方体,其核心挑战在于退化过程未知,即盲超分问题。盲超分需同时估计模糊核、噪声水平与下采样方式,本质上是病态逆问题,依赖空间与光谱先验约束。双域耦合方法通过联合空间域与光谱域信息,显著提升退化核估计精度与光谱保真度,技术价值在于更贴近真实成像场景。该技术广泛应用于遥感、医学影像与材料检测等领域。本文围绕DBSR(双域盲超分)的复现,深入剖析退化估计子网调试、双域主干训练策略及显存优化等工程细节,为高光谱盲超分实践提供可复现的参考。

weixin_29031057的博客 201

缓冲区溢出漏掘之整数范围限制浅析

缓冲区溢出漏掘之整数范围限制浅析   1 - 前言   确实没有什么新的东西,权且当作读书笔记。   基于静态分析的软件缓冲区溢出漏洞发掘技术主要针对高级语言源代码或汇编代码,它可以在软件发布之前或之后发现一些潜在的安全问题,当然主要是运用到一些

特权份子的专栏 542

扩散模型在工业缺陷检测中的应用与优化

扩散模型作为生成式AI的重要分支,通过逐步去噪的逆向过程实现高质量数据生成。其核心U-Net架构结合残差连接和时间步嵌入,特别适合处理工业场景中的细微缺陷检测。在计算机视觉领域,这种技术突破了传统深度学习模型对小样本数据的限制,通过域自适应预训练和小样本微调两阶段框架,显著提升金属表面、纺织品等复杂场景的检测准确率。关键技术实现涉及噪声调度优化、多任务损失设计等工程实践,最终在MVTec AD等工业数据集上达到90%以上的检测精度,为智能制造提供可靠的自动化质检方案。

weixin_30512043的博客 497

缓冲区溢出漏掘之整数范围限制浅析(转)

缓冲区溢出漏掘之整数范围限制浅析(转)[@more@]  1 - 前言  确实没有什么新的东西,权且当作读书笔记。  基于静态分析的软件缓冲区溢出漏洞发掘技术主要针对高级语言源代码或汇编代码,它可以在软件发布之前或之后发现一些潜...

csd3176的博客 114

基于Simulink实现电动汽车动力电池均衡充电策略与管理系统仿真

通过上述步骤,我们成功实现了基于Simulink的电动汽车动力电池均衡充电策略与管理系统仿真。该平台能够全面评估均衡算法的效果,并通过优化设计提高电池组的整体性能和寿命。引入智能算法:结合人工智能技术,实现更智能的均衡策略优化。扩展功能:增加对多种电池类型和工况的支持,提升平台通用性。实验验证:将仿真平台应用于实际硬件,进行实验验证,评估其在实际工况下的表现。

xiaoheshang_123的博客 223

数据分享:中国历年省、市、县行政区划shp(1949~2023年共计75年)

中华人民共和国县级以上行政区沿革》(三册,1949-1983年)“The Atlas of Changes of Administrative Regions of China”;《中华人民共和国行政区划沿革地图集》The yearly publications of “The Administrative Regions”, 1985-2014;每年的出版行政区划简册(1985-2014年)行政区划网:www.xzqh.org。行政区划网:www.xzqh.org。

J_Giser的博客 3697

4月2号漏洞挖掘论文阅读参考资料

[1] Khushbu Jithra:Microsoft Office Securityhttp://www.securityfocus.com/microsoft/infocus/1874[2]Daniel Rentz Microsoft Compound Document File Formathttp://sc.openOffice.org/compdocfileformat.pdf[4]w

fantasyagain的专栏 1411

【电路设计】SERDES与pcie

明确通信接口需要达到什么样的数据速率、信号完整性以及系统中各个部件的互相作用。2.

数字人生 4568

技术分享 | 将覆盖反馈融入黑盒模糊测试技术提升测试效率

近几年来,自动化漏洞挖掘技术成为网络安全的重要研究方向。传统的漏洞挖掘技术面临着耗时长、误报多等痛点,且无法全面地探测目标软件中的已知与未知漏洞。因此,一种简单高效的漏洞挖掘技术,即模糊测试技术,逐渐成为了研究者们关注的重点。 模糊测试(Fuzzing)是一种软件漏洞自动化挖掘技术。它主要通过向目标系统注入海量非法、畸形或非预期的输入,以发现大量的软件漏洞。模糊测试技术具有自动化程度高、可用性高、误报率低,对目标程序源码没有依赖等优点。正是这些优点使其已成为软件漏洞自动化挖掘领域中最重要的技术,并被广泛应用

m0_73736695的博客 473

5G射频到底是啥?方案怎么搭?工作流程、SAW选型、PA选型一口气讲透(工程师秒懂版)

很多人一提 5G 射频,脑子里先冒出来的是几个零件名:👉 PA👉 LNA👉 SAW👉 天线👉 开关但真正做方案时,这些东西不是一堆分立器件,而是一条完整的“信号流水线”。更准确地说,。Qualcomm 对 RFFE 的定义就是“把信息转换成可发送的射频信号,并把接收到的信号转换回有用信息”的那一整套组件。

weixin_43199439的博客 537

关于UMI设备采集数据的模型训练方法

模仿学习如专家模型、VLA模型,ACT、DP、openpi等算法模型训练时,都是使用的机器人的绝对位姿或关节角;而UMI记录的轨迹是相对于UMI起始点的,可以理解为是相对于起点的绝对增量,对应到机器人中就是相对于末端TCP的增量。在用模型进行训练时,当然可以,但这样进行模型训练的话达不到跨本体的能力,因为模型本身还是学习的基于机器人base坐标系的绝对位姿关系,倘若用这种方式进行处理,则UMI可以理解为是一个遥操的方法,本质还是记录的机器人的state。在看了和。

boss-dog 424

FreeXploiT 成立三年感言!

 04年成立的,和一个朋友,现在那个朋友不知所踪了(他叫菜菜,很早就玩汇编了)后来的两年基本是我一个人更新里面的blog我这个算是最早的安全聚合blog吧? 暗礁的也挺早 不过是团队形式的 鬼仔的05年 neeao的04.10.26我的04.10.15那时候就是想弄点资料自己收藏着看看 ,当然也有很长远的目标 就是想做一个网站 先拿blog练练手一练就是三年啊 哈。。blo

FreeXploiT 8491

【肝帝一周总结:全网最全最细】十万字python教程,学不会找我!教到你会为止!!内容超多,建议收藏慢慢看!

文章目录前言一定要看python入门python缩进Python注释Python 变量1. 定义理解2. 变量名命名3. 分配多个值4. 输出变量5. 全局变量 前言一定要看 python能干什么?有什么用?好处在哪?不要我讲了,这不是我在博客该讲的,言简意赅就是:通俗易懂,上手快,实用强。我会根据自己个人理解以及国外官网翻译为中文对大家进行讲解。完整源码我也会在最下面带上地址。内容过多,我不会全部演示,你完全可以复制粘贴到自己的pycharm上运行即可。 不管是国内的菜鸟教程还是我在这里的翻译,至少你跟

全栈川川 5万+

Metasploit Framework all part 1-3

Metasploit Framework, Part 1 Pukhraj Singh, K.K. Mookhey 2004-07-12 <!--This article provides an elaborate insight into the Open Source exploit framework, the Metasploit Fra

FreeXploiT 7212

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

强大溢出工具包:Metasploit命令行下的使用 (转至77169)

Metasploit 是个好东西,实在想不到别的办法了,或许这东西能帮你一下,Metasploit包含了众多exploit,说不准还能用上几个,搞几台好肉鸡.下载Metasploit双击进行安装,非常简单,一路回车就行了。安装完之后看下安装目录下的Msfconsole.bat和msfweb.bat,第一个是命令下的控制台。第二个是图形界面下的程序。现在我们先来看下命令行下的使用方法,运行后我们看到

FreeXploiT 7174

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【分析】对于SSH crc32 compensation attack detector exploit 的分析

对于SSH crc32 compensation attack detector exploit 的分析创建时间:2001-11-12文章属性:整理文章提交:xundi (xundi_at_xfocus.org)by xundi@xfocus.orghttp://xfocus.org2001/11/10由于SSH crc32 compensation attack detector exploit

FreeXploiT 3576

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【实战】Serv-U "site chmod xxx" Exploit

Serv-U "site chmod xxx" Exploit创建时间:2004-02-20文章属性:转载文章提交:velvet (zodiacsoft_at_hotmail.com)论坛登陆名: SWAN提交者邮件地址: ????提交者QQ号码: ????版权:文章属中华安全网http://www.safechina.net和作者共同所有,转载请注明出处!!标题: Serv-U "site ch

FreeXploiT 3009

【分析】通用的攻击WebDAV漏洞的方法

通用的攻击WebDAV漏洞的方法创建时间:2003-03-29文章属性:原创文章来源:http://www.xfocus.net文章提交:isno (isno_at_sina.com)by isno    前几天写的WebDAV漏洞的分析和溢出程序,有一些网友对exploit程序的成功率提出了质疑,哈哈,那个程序确实写的不好,成功率是比较低的。这两天我又翻出yuange原来写的《widechar的

FreeXploiT 2941

【原理+实战】window系统下的堆栈溢出

window系统下的堆栈溢出作者:ipxodi>日期:2000-05-23◆原理篇这一讲我们来看看windows系统下的程序。我们的目的是研究如何利用windows程序的堆栈溢出漏洞。让我们从头开始。windows 98第二版首先,我们来写一个问题程序:#include int main(){char name[32];gets(name);for(int i=0;iprintf("//0x%x"

FreeXploiT 2765

Win32 缓冲区溢出实战 (转)

Win32 缓冲区溢出实战 --------------------------------------------------------------------------------    原文:《Intro to Win32 Exploits》作者:Sergio Alvarez 2004.09.05译者:cloie#ph4nt0m.org 2004.10.30一、前序很多次被朋友邀请写

FreeXploiT 2554

【分析】Serv-U "MDTM"命令远程溢出分析

Serv-U "MDTM"命令远程溢出分析创建时间:2004-03-05文章属性:转载文章提交:peak (pe4k_at_eyou.com)Serv-U "MDTM"命令远程溢出分析                                       czy 于 04.02.29    2月27号一早在securityfocus看到了这个漏洞的公告,上面清楚的说明了You must ha

FreeXploiT 2552

--------溢出植入型木马(后门)的原型实现 作者:FLASHSKY(原创)

 作者:FLASHSKY(原创)作者邮箱:flashsky@xfocus.org站点:    www.xfocus.net申明: 作者无意实现一个木马,作者也不是一个木马开发者,只是提供一种思路:将缓冲区溢出攻击和木马/后门相结合的木马实现手段,通过一个简单的原型来验证这种思路的可行性,并展示给大家看到这种实现方式的很多特点和优势。也提请安全研究人员对这种木马发展技术给予较高的关注,提出查杀和避免

FreeXploiT 2374

【原理】UNF && pr1 present: Writing Linux/x86 shellcodes for dum dums.

UNF && pr1 present: Writing Linux/x86 shellcodes for dum dums.创建时间:2002-08-15文章属性:翻译文章提交:1cbm (edp_at_mail.victoriagrandhotel.com)UNF && pr1 present: Writing Linux/x86 shellcodes for dum dums. =======

FreeXploiT 2373

nc 1.1 -e 远程缓冲区溢出

/* Netcat v1.1, "-e" Switch, Remote Buffer Overflow Exploit v0.1 Homepage..........: http://www.securityfocus.com/tools/139/scoreit Affected versions.: v1.1 Fix....

FreeXploiT 2360

浅析mcafee的“缓冲区溢出保护”及绕过方法【安焦Leven】

[mcafee的“缓冲区溢出保护”]    如果处在堆栈里的shellcode调用了getprocaddress等函数,mcafee会中止当前进程并报警。[分析原理]    mcafee对所有进程截获了loadlibrarya、loadlibraryw、getprocaddress等api函数,方法类似api截获:将这些函数的开始几个字节改为call detectapiret,即调用entapi.

FreeXploiT 2354

【例子】WIN平台缓冲溢出程序编写

创建时间:2001-06-30文章属性:转载文章来源:http://go4.163.com/watercloud/文章提交:quack (quack_at_xfocus.org)post by cloud (safesuite@263.net)最近刚研究了WIN平台的溢出,在openlab(61.150.43.7) VC版贴过.后来整理了一下 下载win_of.zip题目有:        01

FreeXploiT 2226
上一篇: 【实战】Exploit,shellcode经验技巧杂谈
下一篇: 【实战】IIS的NSIISLOG.DLL溢出问题分析
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值