千家信息网

C语言内存分配函数被污染的示例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,C语言内存分配函数被污染的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、被污染的内存分配C 语言的内存分配函
千家信息网最后更新 2026年10月31日C语言内存分配函数被污染的示例分析

C语言内存分配函数被污染的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1、被污染的内存分配

C 语言的内存分配函数包括 malloc()、 kmalloc 、 smalloc()、 xmalloc()、realloc()、 calloc()、 GlobalAlloc()、 HeapAlloc()等等,以 malloc()为例, malloc() 函数的原型为:

extern void*malloc (unsignedintnum_bytes);

malloc() 函数分配了 num_bytes 字节的内存,并返回了指向这块内存的指针。当内存分配长度的整数来自于可能被污染的不可信源时,如果没有对外部输入的数据进行有效判断,会导致超大的内存分配。其中可能被污染的不可信源包括:命令行参数、配置文件、网络通讯、数据库、环境变量、注册表值以及其他来自应用程序以外的输入等。

2、 被污染的内存分配的危害

直接将被污染的数据作为内存分配函数长度参数,如传入了一个极大的整数值,程序就会相应的分配一块极大的内存,从而导致系统极大的内存开销,甚至导致拒绝服务攻击。

CVE中也有一些与之相关的漏洞信息,从2018年1月至2019年3月,CVE中就有4条相关漏洞信息。漏洞信息如下:

CVE概述
CVE-2018-6869ZZIPlib 0.13.68 版本中的 zzip/zip.c 文件的'__zzip_parse_root_directory'函数存在安全漏洞。远程攻击者可借助特制的zip文件利用该漏洞造成拒绝服务(不可控的内存分配和崩溃)。
CVE-2018-5783PoDoFo 0.9.5 版本中的 base/PdfVecObjects.h文件的'PoDoFo::PdfVecObjects::Reserve'函数存在安全漏洞。远程攻击者可借助特制的pdf文件利用该漏洞造成拒绝服务(不受控的内存分配)。
CVE-2018-5296PoDoFo 0.9.5 版本中的 base/PdfParser.cpp 文件的'PdfParser::ReadXRefSubsection'函数存在安全漏洞,该漏洞源于程序没有控制内存的分配。远程攻击者可借助特制的pdf文件利用该漏洞造成拒绝服务。


3、示例代码

本节所用示例参考CWE-789: Uncontrolled Memory Allocation (http://cwe.mitre.org/data/definitions/789.html) 提供的代码示例,并对示例中的 GetUntrustedInt() 函数进行了定义。

3.1缺陷代码

在上述示例代码中,在第9行使用 malloc() 函数进行长度为 totBytes 字节的内存分配,通过跟踪路径可以看出, totBytes 在第6行通过 size*sizeof(char); 计算结果进行赋值,而 size 的值是第7行使用 scanf() 函数获取的用户键盘输入,为被污染的数据源,从而导致内存分配长度 totBytes 被污染,存在"被污染的内存分配"问题。

使用360代码卫士对上述示例代码进行检测,可以检出"被污染的内存分配"缺陷,显示等级为高。如图1所示:


图1:被污染的内存分配的检测示例

3.2 修复代码

在上述修复代码中,虽然 totBytes 的来源为被污染的数据,但在第10行对 totBytes 的长度进行了有效限制,从而避免了被污染的内存分配。

使用360代码卫士对修复后的代码进行检测,可以看到已不存在"被污染的内存分配"缺陷。如图2:


图2:修复后检测结果

4、如何避免被污染的内存分配

(1)避免使用被污染的数据直接作为内存分配函数的长度参数,如无法避免,则应对被污染的数据进行有效限制。

(2)使用源代码静态分析工具,可以有效发现这类问题。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内存 分配 污染 函数 代码 漏洞 示例 数据 文件 长度 有效 攻击 服务 检测 安全 信息 参数 安全漏洞 攻击者 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡网 华服互联网科技靠谱吗 为想互联网科技怎么样 科技赋能下的互联网金融 疫情对互联网科技公司影响 港股互联网科技股 没上市的科技互联网公司 美国互联网科技 奇酷互联网科技 国外互联网科技网站 无锡溥仪互联网科技有限公司 央行互联网金融科技公司 岳阳华臻互联网科技有限公司 国大互联网教育科技有限公司工作 中国互联网公司排名锤子科技 南博望互联网科技有限公司 上海科技产业互联网平台 互联网企业科技类企业如何做账 江苏互联网智能科技软件 兰石爱特工业互联网科技分公司 精品咖啡豆 华服互联网科技靠谱吗 互联网科技工作委员会 互联网科技巨头监管 广州紫鲸互联网科技 互联网校园科技培训 世界互联网科技公司市值排名 速维有品互联网信息科技(苏州)有限公司 佛山市拉法互联网科技有限公司 中和天地互联网科技有限公司
0