ID: 676 类型:基础 | 状态:草稿 |
描述
该程序调用一个潜在的危险函数,如果使用不当,可能会引入一个漏洞,但该函数也可以安全使用。
相关视图
与“研究层面”视图(CWE-1000)相关
与“开发层面”视图(CWE-699)相关
引入模式
阶段 | 说明 |
架构与设计 | |
实现 |
应用平台
语言
C (出现的可能性不确定)
C++ (出现的可能性不确定)
后果
范围 | 冲击 | 可能性 |
其它 | 技术冲击: 根据上下文而变; 质量下降; 意外状态 如果功能使用不正确,则可能导致安全问题。 |
被利用的可能性:
高
示例
例1
以下代码尝试创建缓冲区的本地副本,以对数据执行一些操作。
(问题代码)
Example Language: C
void manipulate_string(char * string){
char buf[24];
strcpy(buf, string);
...
}
但是,程序员不能确保字符串指向的数据的大小适合本地缓冲区,并且盲目地使用潜在危险的strcpy()函数复制数据。如果攻击者可以影响字符串参数的内容,这可能会导致缓冲区溢出。
应对措施
阶段: 编译及链接; 实现 确定禁止的API函数列表,并禁止开发人员使用这些函数,提供更安全的替代方法。在某些情况下,可以指示自动代码分析工具或编译器发现禁止使用的函数,例如来自Microsoft SDL的“banked.h”include文件。[REF-554] [REF-7] |
种属
说明
相关弱点
这种弱点不同于CWE-242(使用固有的危险函数)。CWE-242涵盖了具有如此严重的安全问题的功能,它们永远无法保证安全。某些函数如果使用得当,不会直接带来安全风险,但如果调用不正确,则可能会导致弱点。这些都被认为是潜在的危险。一个众所周知的例子是strcpy()函数。当提供的目标缓冲区大于其源缓冲区时,strcpy()不会溢出。然而,它经常被误用,以至于一些开发人员完全禁止strcpy()。