CWE-242: Use of Inherently Dangerous Function(使用危险函数)

本文讨论了在C和C++编程中使用不安全函数如gets()的风险,这种函数可能因未执行边界检查而导致缓冲区溢出,为攻击者提供可乘之机。文章提供了代码示例,展示了如何通过使用安全的替代函数来避免此类安全问题。
摘要由CSDN通过智能技术生成

 ID: 242

类型:基础
结构:简单

状态:草稿

描述

程序调用一个无法保证安全工作的函数。

扩展描述

某些函数的行为是危险的,不管它们是如何使用的。这类功能的实现通常不考虑安全问题。get()函数不安全,因为它不对输入的大小执行边界检查。攻击者可以轻松地将任意大小的输入发送到get()并溢出目标缓冲区。同样,当读取静态分配的字符数组时,>>运算符是不安全的,因为它不会对输入的大小执行边界检查。攻击者可以轻松地将任意大小的输入发送给>>运算符,并溢出目标缓冲区。

相关视图

与“研究层面”视图(CWE-1000)相关

引入模式

阶段

说明

实现

 

应用平台

语言

C (出现的可能性不确定)

C++ (出现的可能性不确定)

后果

范围

冲击

可能性

Other

技术冲击: 随上下文而变

 

被利用的可能性:

示例

例1

下面的代码调用gets()将信息读取到缓冲区中。

(问题代码)

Example Language:

char buf[BUFSIZE];
gets(buf);

c语言中的 gets() 函数是不安全的.

例2

下面代码调用gets()从命令行中读取数据。

(问题代码)

Example Language:

char buf[24];
printf("Please enter your name and press <Enter>\n");
gets(buf);
...

}

但是,程序员使用的函数gets()本质上是不安全的,因为它盲目地将stdin中的所有输入复制到缓冲区,而不检查大小。这允许用户提供大于缓冲区大小的字符串,从而导致溢出条件。

应对措施

阶段: 实现; 需求

禁止使用危险函数。使用功能相同的替代函数

阶段: 测试

使用静态分析工具发现使用危险函数的代码。

种属

 

关系

类型

ID

名称

属于

227

7PK - API Abuse

属于

748

CERT C Secure Coding Standard (2008) Appendix - POSIX (POS)

属于

1001

SFP Secondary Cluster: Use of an Improper API

属于

1171

SEI CERT C Coding Standard - Guidelines 50. POSIX (POS)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值