描述
产品调用一个有潜在危险的函数,可以引入一个漏洞,如果使用不正确,但是函数也可以安全使用。
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
其他
|
技术的影响:不同的上下文;质量退化;意想不到的状态
如果函数是使用不当,就可能导致安全问题。 |
|
利用的可能性
示范例子
示例1
下面的代码试图创建一个本地副本的缓冲区数据执行一些操作。
空白manipulate_string (char *字符串){
char buf [24]; 拷贝字符串(字符串缓冲区); … }
然而,程序员并不确保数据指向字符串的大小适合本地缓冲和复制数据的潜在危险strcpy()函数。这可能会导致缓冲区溢出条件如果攻击者可以影响的内容字符串参数。
观察到的例子
参考 |
描述 |
|
图书馆有多个缓冲区溢位使用sprintf()和strcpy () |
|
缓冲区溢位使用strcat () |
|
缓冲区溢位使用strcpy () |
|
缓冲区溢位使用strcpy () |
|
脆弱的使用strcpy()改为使用安全strlcpy () |
|
缓冲区溢位使用strcpy () |
潜在的缓解措施
阶段:构建和编译;实现
识别一个禁止列表API函数和禁止开发人员使用这些功能,提供更安全的替代方案。在某些情况下,自动代码分析工具或编译器可以指示点使用禁止功能,比如“禁止。从微软的SDL h”包含文件。( ref - 554][ REF-7] |
弱点Ordinalities
Ordinality |
描述 |
主 |
(其他弱点的弱点存在独立的) |
间接 |
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测) |
检测方法
自动静态分析——二进制或字节码
根据飙升,以下检测技术可能是有用的:
-
字节码的弱点分析,包括反汇编程序+源代码弱点分析
-
二进制弱点分析,包括反汇编程序+源代码弱点分析
-
二进制字节码质量分析
-
二进制/字节码简单器-字符串,精灵读者等。
|
人工静态分析——二进制或字节码
根据飙升,以下检测技术可能是有用的:
|
动态分析与人工解释结果
根据飙升,以下检测技术可能是有用的:
|
人工静态分析源代码
根据飙升,以下检测技术可能是有用的:
|
自动静态分析源代码
根据飙升,以下检测技术可能是有用的:
-
源代码缺陷分析仪
-
Context-configured源代码分析器
|
自动静态分析
根据飙升,以下检测技术可能是有用的:
|
体系结构或设计审查
根据飙升,以下检测技术可能是有用的:
|
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
738年 |
CERT C安全编码标准(2008)第五章-整数(INT) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
743年 |
CERT C安全编码标准(2008)第十章-输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
746年 |
CERT C安全编码标准(2008)第十三章-错误处理(ERR) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
865年 |
2011年前25 -资源管理风险 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
872年 |
CERT c++安全编码部分04 -整数(INT) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
877年 |
CERT c++安全编码部分09 -输入输出(FIO) |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
884年 |
CWE横截面 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1001年 |
SFP二级集群:使用不当的API |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1161年 |
07年SEI CERT C编码标准,指导方针。字符和字符串(STR) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1165年 |
SEI CERT 10 C编码标准指导方针。环境(ENV) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1167年 |
SEI CERT 12 C编码标准指导方针。错误处理(ERR) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1169年 |
SEI CERT 14 C编码标准指导方针。并发性(CON) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1170年 |
SEI CERT 48 C编码标准指导方针。杂项(MSC) |
笔记
的关系
这个弱点是不同的 cwe - 242(使用固有危险的函数)。 cwe - 242覆盖函数的重大安全问题,他们不能保证是安全的。一些功能,如果使用得当,不直接构成安全风险,但可以引入一个弱点如果不正确。这些被认为是潜在的危险。一个著名的例子是strcpy()函数。当提供一个目的地缓冲区大于其来源,strcpy()不会溢出。然而,它是如此经常被滥用,一些开发人员完全禁止strcpy ()。
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
7有害的王国 |
|
|
危险的功能 |
CERT C安全编码 |
CON33-C |
CWE更抽象 |
使用库函数时避免竞态条件 |
CERT C安全编码 |
ENV33-C |
CWE更抽象 |
不调用系统() |
CERT C安全编码 |
ERR07-C |
|
喜欢功能不支持错误检查等效函数 |
CERT C安全编码 |
ERR34-C |
CWE更抽象 |
检测错误时将一个字符串转换为一个数字 |
CERT C安全编码 |
FIO01-C |
|
小心使用函数,使用文件名来识别 |
CERT C安全编码 |
MSC30-C |
CWE更抽象 |
不要使用兰德()函数生成伪随机数 |
CERT C安全编码 |
STR31-C |
不精确的 |
保证存储字符串为字符数据有足够的空间和零终结者 |
软件故障模式 |
SFP3 |
|
使用不当的API |
引用
|
|
|
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第八章,“C字符串处理”,388页。1版。艾迪生卫斯理》2006。 |
|