C/C++ 程序中的缓冲区下溢指的是什么


今天就跟大家聊聊有关C/C++ 程序中的缓冲区下溢指的是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在前续专题中对缓冲区上溢进行了分析(见第7期),本文对缓冲区溢出的另一种情况——缓冲区下溢进行描述。缓冲区上溢专题中介绍的造成缓冲区溢出的原因同样适用于缓冲区下溢,因此在本文中就不再赘述。简单的说,缓冲区下溢是指当填充数据溢出时,溢出部分覆盖的是下级缓冲区。本文主要从缓冲区下溢的危害、在源代码中的表现以及如何修复等方面对该问题进行描述。缓冲区下溢是 C/C++ 程序中非常严重的漏洞类型,可能会导致程序崩溃、执行恶意代码等后果。2018年1月至10月,CVE中共有494条漏洞信息与其相关。部分漏洞如下:示例源于 Samate Juliet Test Suite for C/C++ v1.3 (https://samate.nist.gov/SARD/testsuite.php),源文件名:CWE121_Sta免费云主机域名ck_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c。在上述示例代码中,在第36行对指针 data 进行赋值,通过赋值操作可以看出指针 data 指向 dataBadBuffer,当第41行使用 strcpy() 进行内存拷贝时,源缓冲区长度大于目的缓冲区长度从而产生溢出,溢出部分超出了 dataBadBuffer 的下边界,导致缓冲区下溢问题。使用360代码卫士对上述示例代码进行检测,可以检出“缓冲区下溢”缺陷,显示等级为高。如图1所示:图1:缓冲区下溢检测示例
在上述修复代码中,Samate 给出的修复方式为:在第37行对指针 data 进行赋值,将 data指向 dataGoodBuffer,此时 data 的长度与 source 一致,当第42行使用 strcpy() 进行拷贝操作时,源缓冲区与目的缓冲区长度相同,从而避免了缓冲区下溢的问题。该问题也可以通过对边界进行检查等其他方法来进行避免。使用360代码卫士对修复后的代码进行检测,可以看到已不存在“缓冲区下溢”缺陷。如图2:图2:修复后检测结果要避免缓冲区下溢,需要注意以下几点:(1)尽量避免使用不安全的内存操作函数。
(2)对返回值有明确指示意义的内存操作函数,应对函数返回值进行有效判断,从而判断操作是否成功。(3)在向缓冲区中填充数据时必须进行边界检查。看完上述内容,你们对C/C++ 程序中的缓冲区下溢指的是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注云编程开发博客行业资讯频道,感谢大家的支持。

相关推荐: 电子商务风险防控

风险:账户风险:账户被***盗用;恶意注册;等等买家风险:恶意下单;黄牛;良品拒收;欺诈退免费云主机域名款;虚假询价卖家风险:货不对板;虚假发货;炒作信用;违禁品;侵权交易风险:信用卡盗刷;支付欺诈;洗钱套现;风险控制1、规则引擎技术(自己写规则)2、统计模型…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/07 12:09
下一篇 02/07 12:09