CWE

常见的弱点枚举

一个由社区开发的软件&硬件缺陷类型的列表

2021 CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表> CWE -个人字典定义(4.10)
ID

cwe - 400:不受控制的资源消耗

弱点ID: 400
抽象:
结构:简单的
视图定制的信息:
+描述
产品不适当控制的分配和维护一个有限的资源,从而使一个演员来影响资源消耗的数量,最终导致可用资源的枯竭。
+扩展描述

有限的资源包括内存、文件系统存储、数据库连接池条目和CPU。如果攻击者可以触发的分配这些有限的资源,但资源的数量或大小不是控制,那么攻击者可能导致拒绝服务消耗所有可用的资源。这将阻止合法用户访问产品,它可能会对周围环境产生影响。例如,内存耗尽攻击应用程序可以减缓以及它的主机操作系统的应用程序。

至少有三个不同的场景,通常会导致资源枯竭:

  • 缺乏调节资源分配的数量
  • 失去所有引用资源之前关闭阶段
  • 处理后没有关闭/返回一个资源

资源枯竭问题往往是由于不正确的结果的实现下列情形:

  • 错误条件和其他特殊情况。
  • 混乱的部分程序负责释放资源。
+替代条款
资源枯竭
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 支柱支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 664年 资源的不当控制通过它的生命周期
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 770年 资源配置没有限制或节流
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 771年 缺少参考活动分配资源
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 779年 过多的数据的日志
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 920年 不当限制电力消耗
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1235年 对性能关键的操作不正确使用自动装箱和拆箱
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1246年 写处理不当Limited-write非易失性记忆
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 410年 足够的资源池
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 770年 资源配置没有限制或节流
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 920年 不当限制电力消耗
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
操作
架构和设计
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
可用性

技术的影响:DoS:崩溃,退出或重新启动;DoS:资源消耗(CPU);DoS:资源消耗(内存);DoS:资源消耗(其他)

最常见的资源耗尽的结果是拒绝服务。产品可能会慢下来,崩溃由于未处理的错误,或合法用户锁定。
访问控制
其他

技术的影响:旁路保护机制;其他

在某些情况下它可能会迫使产品“失败”开放的资源枯竭。产品的状态,可能是安全功能——可能会被破坏。
+利用的可能性
+示范例子

示例1

下面的例子显示出,需求不足。

(坏的代码)
例如语言:Java
类工作者实现遗嘱执行人{

公共空间执行(可运行r) {

尝试{
}
抓住(InterruptedException ie) {

/ /延迟响应
.interrupt Thread.currentThread () ();
}
}

公共工人(ch频道,int nworkers) {
}

保护无效激活(){

可运行循环= new Runnable () {

公共空间run () {

尝试{
(,){
可运行r =…;
r.run ();
}
}
抓住(InterruptedException ie) {
}
}
};
新线程(循环).start ();
}
}

没有可运行的极限。潜在的攻击者会很快导致资源的问题。

示例2

这段代码分配一个套接字和叉子在每次接收一个新的连接。

(坏的代码)
例如语言:C
袜子=插座(AF_INET SOCK_STREAM 0);
而(1){
万博下载包newsock =接受(袜子,…);
printf("连接已被接受\ n ");
pid = fork ();
}

程序不追踪有多少联系,和它不限制数量的连接。因为分支是相对昂贵的操作,攻击者能够导致系统耗尽CPU、流程或记忆,使大量的连接。另外,攻击者可以使用所有可用的连接,防止其他人访问远程系统。

示例3

在下面的示例中用于接受请求的服务器套接字连接在本地文件系统存储数据使用一个指定的文件名。openSocketConnection方法建立一个服务器套接字接受来自客户的请求。当客户端建立一个连接到这个服务getNextMessage方法首先从套接字用于检索文件的名称来存储数据,openFileToWrite方法将验证文件名和打开一个文件写入本地文件系统。然后getNextMessage内使用while循环,不断从套接字读取数据和输出数据的文件,直到不再有任何数据从套接字。

(坏的代码)
例如语言:C
int writeDataFromSocketToFile (char *主机,int端口)
{

字符的文件名(FILENAME_SIZE);
字符缓冲区(BUFFER_SIZE);
int插座= openSocketConnection(主机、端口);

如果(套接字< 0){
printf("无法打开套接字连接");
返回(失败);
}
如果(getNextMessage(套接字,文件名,FILENAME_SIZE) > 0) {
如果(openFileToWrite(文件名)> 0){
而(getNextMessage(套接字缓冲区,BUFFER_SIZE) > 0) {
如果(! (writeToFile(缓冲区)> 0))
打破;
}
}
closeFile ();
}
closeSocket(插座);
}

这个例子创建了一个情况)可以将数据转储到一个文件在本地文件系统中没有任何文件的大小限制。这个有可能排文件或磁盘资源和/或限制其他客户端访问服务的能力。

示例4

在下面的例子中,processMessage方法接收一个二维字符数组包含消息的处理。二维字符数组包含消息的第一个字符数组的长度和消息体第二个字符数组。getMessageLength方法检索整数值从第一个字符数组的长度。后确认消息长度大于零,身体开始字符数组指针指向二维字符数组的第二个字符数组和内存分配的新身体字符数组。

(坏的代码)
例如语言:C

/ *信息接受过程二维字符数组的形式(长度)(身体)包含消息的处理* /
int processMessage (char * *消息)
{
char *的身体;

int长度= getMessageLength(消息[0]);

如果(长度> 0){
身体=消息[1][0];
processMessageBody(身体);
返回(成功);
}
其他{
printf("无法处理消息;无效的消息长度”);
返回(失败);
}
}

这个示例创建一个情况身体字符数组的长度可以非常大,会消耗过多的内存,耗尽系统资源。这可以避免通过限制第二个字符数组的长度与最大长度检查

同时,考虑改变类型从“int”到“unsigned int”,所以你总是保证数量是正的。这也许不可能如果协议特别需要允许负值,或者如果你不能控制getMessageLength的返回值(),但它可以简化检查,以确保输入是积极的,并消除其他错误如signed-to-unsigned转换错误(cwe - 195)可能发生的其他代码。

(好的代码)
例如语言:C
无符号整数长度= getMessageLength(消息[0]);
如果(长度(长度> 0)& & (< MAX_LENGTH)) {…}

示例5

在接下来的例子中,一个服务器对象创建一个服务器套接字并接受客户端连接到套接字。为每一个客户端连接到套接字使用ClientSocketThread类生成一个单独的线程对象处理请求的客户机通过套接字。

(坏的代码)
例如语言:Java
公共空间acceptConnections () {
尝试{
ServerSocket ServerSocket =考察(SERVER_PORT);
int counter = 0;
布尔hasConnections = true;
而(hasConnections) {
套接字客户= serverSocket.accept ();
线程t =新线程(新ClientSocketThread(客户端);
.getHostName t.setName (client.getInetAddress()() +“:”+计数器+ +);
t.start ();
}
serverSocket.close ();


}捕捉(IOException特异){…}
}

在这个例子中是没有限制客户端连接的数量和客户端线程创建的。允许无限的客户端连接和线程可能会淹没系统和系统资源。

服务器应该限制客户端连接的数量和客户端线程创建的。这可以很容易地通过创建一个线程池对象生成的线程数量的限制。

(好的代码)
例如语言:Java
公共静态最终int SERVER_PORT = 4444;
公共静态最终int MAX_CONNECTIONS = 10;


公共空间acceptConnections () {
尝试{
ServerSocket ServerSocket =考察(SERVER_PORT);
int counter = 0;
布尔hasConnections = true;
而(hasConnections) {
hasConnections = checkForMoreConnections ();
套接字客户= serverSocket.accept ();
线程t =新线程(新ClientSocketThread(客户端);
.getHostName t.setName (client.getInetAddress()() +“:”+计数器+ +);
ExecutorService池= Executors.newFixedThreadPool (MAX_CONNECTIONS);
pool.execute (t);
}
serverSocket.close ();


}捕捉(IOException特异){…}
}
+观察到的例子
参考 描述
链:Python库不限制指定的资源用于处理图像大量的乐队(cwe - 1284),导致过度的内存消耗(cwe - 789)或一个整数溢出(cwe - 190)。
Go-based工作量协调器并不限制资源使用未经身份验证的连接,允许一个DoS洪水服务
资源枯竭在分布式操作系统因“证据不足”IGMP队列管理,每中钢协KEV利用在野外。
产品允许攻击者通过大量连接导致崩溃。
畸形的请求触发控制的递归,导致堆栈疲惫。
链:内存泄漏(cwe - 404)会导致资源枯竭。
司机不使用一个最大宽度时调用sscanf样式功能,导致堆栈消费。
大整数长度属性值对象导致大量的内存分配。
Web应用程序防火墙消耗过多的内存,当一个HTTP请求包含一个大的内容长度值,但没有提交数据。
产品允许疲惫的文件描述符在处理大量的TCP数据包。
沟通产品允许内存消耗大量的SIP请求,导致许多创建会话。
TCP实现允许攻击者消耗CPU和防止新连接使用TCP SYN洪水攻击。
端口扫描触发器CPU消耗过程,试图从关闭套接字读取数据。
产品允许攻击者造成拒绝服务通过大量的指示,每打开一个单独的窗口。
产品允许通过大量调用资源枯竭,没有完成一个我家的握手。
邮件服务器不妥善处理深层嵌套的几部分的MIME消息,导致堆栈疲惫。
链:反病毒产品遇到一个畸形的文件但是没有关闭从函数返回一个文件描述符(cwe - 775消费()导致文件描述符cwe - 400)和扫描失败。
+潜在的缓解措施

阶段:体系结构和设计

到系统架构设计节流机制。最好的保护是限制未经授权的用户可以引起的资源消耗。一个强大的身份验证和访问控制模型将有助于防止这种攻击发生在第一个地方。登录应用程序应该尽可能DoS攻击的保护。限制数据库访问,也许通过缓存结果集,能够最大限度地减少资源消耗。进一步限制潜在的DoS攻击,考虑跟踪来自用户的请求速率和阻塞请求超过率定义阈值。

阶段:体系结构和设计

缓解资源耗尽攻击目标系统要求:

  • 认识到攻击和否认用户进一步访问对于一个给定的时间,或
  • 统一扼杀所有请求,以使其更难以消耗资源的速度比可以再次被释放。

第一个解决方案本身就是一个问题,因为它可能允许攻击者,以防止系统通过一个特定的有效用户的使用。如果攻击者模仿合法用户,他们可能会阻止用户访问服务器的问题。

第二个解决方案是很难有效研究所——甚至当处理得当,它并没有提供一个完整的解决方案。它只是使攻击的攻击者需要更多的资源。

阶段:体系结构和设计

确保协议的规模有特定的限制。

实施阶段:

确保所有失败资源分配系统到一个安全的姿势。
+检测方法

自动静态分析

自动静态分析通常在认识到资源枯竭问题方面有其局限性,除了program-independent系统资源(如文件、套接字和过程。系统资源,自动静态分析可以检测环境资源没有公布后过期。自动分析配置文件可以检测设置不指定一个最大值。

自动静态分析工具将不适合检测自定义资源的枯竭,如预期的安全政策的公告板的用户只允许有限数量的帖子每天。

有效性:有限

自动动态分析

某些自动动态分析技术可以有效地发现资源枯竭问题,特别是与流程等资源,内存,和连接。这项技术可能需要生成大量的产品在短时间内的请求。

有效性:温和

起毛

而起毛通常是面向发现底层实现bug,它可以无意中发现资源枯竭问题。这可能发生在当fuzzer生成大量的测试用例,但不重新启动测试用例之间的有针对性的产品。如果一个单独的测试用例生成一个崩溃,但它不可靠,那么无法处理资源枯竭可能原因。

有效性:投机取巧

+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 730年 OWASP十大2004类别A9 -拒绝服务
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 858年 CERT甲骨文安全Java编码标准(2011)第十五章-序列化(SER)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 861年 CERT甲骨文安全Java编码标准(2011)第18章-杂项(MSC)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 985年 SFP二级集群:无限制的消耗
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1003年 弱点简化映射的漏洞发布
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1148年 SEI CERT甲骨文Java安全编码标准,准则14。序列化(SER)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1152年 SEI CERT甲骨文Java安全编码标准,指南49。杂项(MSC)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1200年 弱点在2019 CWE最危险的软件错误
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1350年 2020 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

理论

脆弱性理论主要是关于行为和资源交互。“资源枯竭”可以被视为一个后果或攻击,根据不同的视角。这个条目是为了反映潜在的弱点,使这些攻击(或结果)。

其他

数据库查询,需要很长时间来处理好DoS的目标。攻击者将不得不编写几行Perl代码来产生足够的流量超过保持网站的能力。这将有效地防止授权用户使用该网站。资源可以利用简单的通过确保目标机器必须做更多工作,消耗更多的资源,以服务请求比攻击者必须发起一个请求。

一个典型的例子可以发现在旧交换机的容易受到“macof”攻击(如此命名工具由Dugsong)。这些攻击淹没与随机切换IP和MAC地址的组合,因此耗尽开关的缓存,这些港口通过MAC地址的信息。一旦这个缓存筋疲力尽,开关会失败在一个不安全的方式,将开始采取行动只是作为一个中心,广播所有港口和交通允许基本嗅探攻击。

维护

“资源消耗”可以被理解为一个结果,而不是一个不安全的行为,这对修改条目被认为是。它似乎过于频繁地引用时更精确映射是可用的。它的一些孩子,等cwe - 771,可能是更好的视为链。

维护

Taxonomy_Mappings ISA / IEC 62443 CWE 4.10中加入了,但他们仍在审查和将来可能会改变CWE版本。这些映射草案是由“CWE映射到62443”小组的成员CWE -CAPEC ICS / OT特殊利益集团(团体),CWE 4.10的和他们的工作是不完整的。映射是包括促进讨论和审查由更广泛的ICS / OT的社区,他们可能会改变在未来CWE版本。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
资源枯竭(文件描述符、磁盘空间、套接字、…)
OWASP十大2004 A9 CWE更具体 拒绝服务
WASC 10 拒绝服务
WASC 41 XML属性崩溃
CERT甲骨文安全Java编码标准(2011) SER12-J 序列化期间避免内存和资源泄漏
CERT甲骨文安全Java编码标准(2011) MSC05-J 不排气堆空间
软件故障模式 SFP13 无限制的消耗
ISA / IEC 62443 3 - 3部分 7.1要求老
ISA / IEC 62443 3 - 3部分 7.2要求老
ISA / IEC 62443 4 - 2部分 点播CR 7.1
ISA / IEC 62443 4 - 2部分 点播CR 7.2
+引用
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
(ref - 386)若昂安图内斯,努诺·费雷拉七巧板和保罗Verissimo。“资源耗尽漏洞的检测和预测”。《IEEE软件可靠性工程国际研讨会(ISSRE)。2008 - 11。<http://homepages.di.fc.ul.pt/努诺- /论文/ ISSRE08.pdf>。
D.J.伯恩斯坦(ref - 387)。“资源枯竭”。<http://cr.yp.to/docs/resources.html>。
ref - 388帕斯卡默。“资源枯竭”。安全编程教育材料。2004。<http://homes.cerias.purdue.edu/ pmeunier / secprog /消毒/ class1/6.resource % 20 exhaustion.ppt>。
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。17章,“防止拒绝服务攻击“517页。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新Common_Consequences、关系、Other_Notes Taxonomy_Mappings
2008-10-14 CWE内容团队 主教法冠
更新描述、名称、关系
2009-01-12 CWE内容团队 主教法冠
更新描述
2009-05-27 CWE内容团队 主教法冠
更新的名字,关系
2009-07-27 CWE内容团队 主教法冠
更新描述、人际关系
2009-10-29 CWE内容团队 主教法冠
更新的关系
2009-12-28 CWE内容团队 主教法冠
更新Common_Consequences、Demonstrative_Examples Detection_Factors、Likelihood_of_Exploit Observed_Examples, Other_Notes Potential_Mitigations、引用
2010-02-16 CWE内容团队 主教法冠
更新Detection_Factors Potential_Mitigations、引用Taxonomy_Mappings
2010-04-05 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2010-06-21 CWE内容团队 主教法冠
更新描述
2010-09-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples Related_Attack_Patterns,关系,Taxonomy_Mappings
2013-07-17 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新Related_Attack_Patterns、人际关系
2017-01-19 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Demonstrative_Examples Likelihood_of_Exploit Potential_Mitigations,引用关系
2018-03-27 CWE内容团队 主教法冠
更新引用类型
2019-01-03 CWE内容团队 主教法冠
更新Alternate_Terms、描述、名称、关系、Taxonomy_Mappings Theoretical_Notes
2019-06-20 CWE内容团队 主教法冠
更新Related_Attack_Patterns、人际关系
2019-09-19 CWE内容团队 主教法冠
更新描述、人际关系
2020-02-24 CWE内容团队 主教法冠
更新描述、引用Related_Attack_Patterns、人际关系
2020-06-25 CWE内容团队 主教法冠
更新描述,Maintenance_Notes
2020-08-20 CWE内容团队 主教法冠
更新的关系
2022-04-28 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2023-01-31 CWE内容团队 主教法冠
更新Common_Consequences、描述Detection_Factors、Maintenance_Notes Related_Attack_Patterns Taxonomy_Mappings
+以前的条目名称
改变日期 以前的条目名称
2008-10-14 资源枯竭
2009-05-27 不受控制的资源消耗(又名“资源枯竭”)
2019-01-03 不受控制的资源消耗(“资源枯竭”)
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日