首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C/C++代码审计,缓冲区溢出漏洞分析,危险函数汇总与解决方案

C/C++代码审计,缓冲区溢出漏洞分析,危险函数汇总与解决方案

原创
作者头像
软件实验室建设交流
发布2026-02-10 14:14:33
发布2026-02-10 14:14:33
1240
举报
文章被收录于专栏:软件测试技术软件测试技术

GB/T 34943-2017《C/C++语言源代码漏洞测试规范》中,第6.2.3.6条是对缓冲区溢出的介绍。缓冲溢出这类问题比较常见,经典漏洞的利用和分析教程中经常把这类问题当作经典的案例。本文我们一起来学习以下在C/C++代码审计中缓冲区溢出漏洞,以及常见的危险函数汇总与解决方案。

6.2.3.6 缓冲区溢出

漏洞描述:

对被分配内存空间之外的内存空间进行读或写操作。

漏洞风险:

攻击者可利用缓冲区溢出让系统崩溃或者执行恶意代码。

修复或规避建议:

在对缓冲区进行读或写时,对读写缓冲区的数据长度进行检查,确保读写的内存在被分配的内存空间之内。

它表示如果内存当中的空间,如果超出了预期的长度的的话,攻击者能够去把一个构造的命令返回到要利用的那个内存地址,然后让命令去执行。所以建议对缓冲区在读写时对长度进行检查。举的例子也是要在 scanf输入的接收的这个程序当中,去把十个字符的长度限制死。不然用户可能会输入很长很长,长到一定程度,有些程序就能够找到命令执行的地址。

常见危险函数有:

函数

严重性

解决方案

gets

最危险

使用 fgets(buf, size, stdin)。这几乎总是一个大问题!

strcpy

很危险

改为使用 strncpy。

strcat

很危险

改为使用 strncat。

sprintf

很危险

改为使用 snprintf,或者使用精度说明符。

scanf

很危险

使用精度说明符,或自己进行解析。

sscanf

很危险

使用精度说明符,或自己进行解析。

fscanf

很危险

使用精度说明符,或自己进行解析。

vfscanf

很危险

使用精度说明符,或自己进行解析。

vsprintf

很危险

改为使用 vsnprintf,或者使用精度说明符。

vscanf

很危险

使用精度说明符,或自己进行解析。

vsscanf

很危险

使用精度说明符,或自己进行解析。

streadd

很危险

确保分配的目的地参数大小是源参数大小的四倍。

strecpy

很危险

确保分配的目的地参数大小是源参数大小的四倍。

strtrns

危险

手工检查来查看目的地大小是否至少与源字符串相等。

realpath

很危险(或稍小,取决于实现)

分配缓冲区大小为 MAXPATHLEN。同样,手工检查参数以确保输入参数不超过 MAXPATHLEN。

syslog

很危险(或稍小,取决于实现)

在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。

getopt

很危险(或稍小,取决于实现)

在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。

getopt_long

很危险(或稍小,取决于实现)

在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。

getpass

很危险(或稍小,取决于实现)

在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。

getchar

中等危险

如果在循环中使用该函数,确保检查缓冲区边界。

fgetc

中等危险

如果在循环中使用该函数,确保检查缓冲区边界。

getc

中等危险

如果在循环中使用该函数,确保检查缓冲区边界。

read

中等危险

如果在循环中使用该函数,确保检查缓冲区边界。

bcopy

低危险

确保缓冲区大小与它所说的一样大。

fgets

低危险

确保缓冲区大小与它所说的一样大。

memcpy

低危险

确保缓冲区大小与它所说的一样大。

snprintf

低危险

确保缓冲区大小与它所说的一样大。

strccpy

低危险

确保缓冲区大小与它所说的一样大。

strcadd

低危险

确保缓冲区大小与它所说的一样大。

strncpy

低危险

确保缓冲区大小与它所说的一样大。

vsnprintf

低危险

确保缓冲区大小与它所说的一样大。

以上就是对C/C++代码审计中缓冲区溢出漏洞、常见的危险函数与解决方案的介绍。如需C/C++代码安全测试作业指导书,可私信我获取。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6.2.3.6 缓冲区溢出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档