CWE

常见的弱点枚举

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

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

cwe - 77:不当中和一个命令中使用的特殊元素(“命令注入”)

弱点ID: 77
抽象:
结构:简单的
视图定制的信息:
+描述
产品结构的全部或部分命令使用externally-influenced输入从一个上游组件,但这并不中和或错误地中和特殊元素时可以修改预定的命令发送到下游组件。
+扩展描述

命令注入漏洞通常发生在:

1。数据进入应用程序从一个不可信的来源。
2。数据是一个字符串的一部分,作为应用程序命令的执行。
3所示。通过执行命令,应用程序为攻击者提供了特权或能力,否则攻击者不会有。

许多协议和产品有自己的自定义命令语言。虽然OS或shell命令字符串经常发现和有针对性,开发人员可能没有意识到,这些其他命令语言也可能容易受到攻击。

包装程序命令注入是一种常见的问题。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 74年 不当中和下游组件使用的特殊元素的输出(注射)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 78年 不当使用中和特殊元素在一个操作系统命令(OS命令注入)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 88年 不当中和一个命令的参数分隔符(“参数注入”)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 624年 可执行正则表达式错误
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 917年 不当中和一个表达式语言语句中使用的特殊元素(表达式语言注入)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 74年 不当中和下游组件使用的特殊元素的输出(注射)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1019年 验证输入
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 78年 不当使用中和特殊元素在一个操作系统命令(OS命令注入)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 88年 不当中和一个命令的参数分隔符(“参数注入”)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 624年 可执行正则表达式错误
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 917年 不当中和一个表达式语言语句中使用的特殊元素(表达式语言注入)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 78年 不当使用中和特殊元素在一个操作系统命令(OS命令注入)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 88年 不当中和一个命令的参数分隔符(“参数注入”)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 624年 可执行正则表达式错误
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 917年 不当中和一个表达式语言语句中使用的特殊元素(表达式语言注入)
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

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

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

技术的影响:执行未经授权的代码或命令

如果恶意用户注入一个字符(比如分号)划入一个命令的结束和另一个的开始,它可能会插入一个全新的和无关的命令并不是为了被执行。
+利用的可能性
+示范例子

示例1

以下简单的程序接受文件名作为命令行参数并显示文件的内容给用户。程序安装setuid root,因为它的目的是作为一个学习工具,允许系统管理员培训检查特权系统文件没有给他们修改他们的能力或破坏系统。

(坏的代码)
例如语言:C
int主要(int命令行参数个数,char * * argv) {
char cmd [CMD_MAX] = " / usr / bin /猫”;
strcat (cmd, argv [1]);
系统(cmd);
}

因为根特权的程序运行,调用系统()也使用root特权执行。如果用户指定了一个标准的文件名,调用是否按预期运行。然而,如果攻击者通过一个字符串的形式”;rm射频/”,然后调用系统()失败执行猫由于缺乏论据,然后犁递归删除根分区的内容。

注意,如果argv[1]是一个很长的参数,那么这个问题可能还受到缓冲区溢出(cwe - 120)。

示例2

下面的代码是一个管理web应用程序允许用户启动一个Oracle数据库的备份使用批处理文件包装rman实用程序,然后运行清理。蝙蝠脚本删除一些临时文件。脚本rmanDB。蝙蝠接受一个命令行参数,它指定什么类型的备份执行。因为限制访问数据库,应用程序运行备份作为特权用户。

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

字符串btype = request.getParameter (“backuptype”);
字符串cmd =新的字符串(“cmd。exe / K \”
c: \ \ util \ \ rmanDB。蝙蝠”
+ btype +
“c: \ \你\ \ cleanup.bat \“”)

System.Runtime.getRuntime () .exec (cmd);

这里的问题是,这个项目不做任何验证backuptype参数读取用户。通常Runtime.exec()函数不会执行多个命令,但在这种情况下,程序第一次运行cmd。exe壳为了运行多个命令用一个叫Runtime.exec ()。一旦调用shell,它将愉快地执行多个指令通过两个&号分开。如果攻击者通过一个字符串的形式”& del c: \ \ dbms \ \ *。*”,则应用程序将执行这个命令以及其他指定的项目。因为应用程序的性质,它运行所必需的特权与数据库交互,这意味着攻击者将会运行任何命令与特权。

示例3

下面的代码从系统实用程序使用系统属性APPHOME确定安装的目录,然后执行一个初始化脚本基于指定的目录的相对路径。

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

字符串回家= System.getProperty (“APPHOME”);
字符串cmd = + INITCMD回家;
java.lang.Runtime.getRuntime () .exec (cmd);

上面的代码允许攻击者执行任意命令的高架特权应用程序通过修改系统属性APPHOME指向一个包含恶意INITCMD版本不同的道路。因为程序不验证值读取环境,如果攻击者可以控制APPHOME系统属性的值,然后他们可以愚弄应用程序运行恶意代码和系统的控制。

示例4

下面的代码是一个包装的UNIX命令猫将文件的内容打印到标准输出。这也是注射:

(坏的代码)
例如语言:C
# include < stdio . h >
# include < unistd.h >

int主要(int命令行参数个数,char * * argv) {

猫char[] = "猫";
char *命令;
size_t commandLength;

commandLength = strlen (cat) + strlen (argv [1]) + 1;
命令= (char *) malloc (commandLength);
strncpy(指挥、猫、commandLength);
strncat(命令、argv [1] (commandLength - strlen (cat)));

系统(命令);
返回(0);
}

正常使用,输出就是文件的内容要求:

(信息)
美元。/ catWrapper Story.txt
当我们离开我们的英雄……

然而,如果我们添加一个分号,这条线的结束另一个命令,该命令执行catWrapper没有抱怨:

(攻击代码)
美元。/ catWrapper Story.txt;ls
当我们离开我们的英雄……
Story.txt
SensitiveFile.txt
PrivateData.db
a.o ut *

如果catWrapper设置高特权级别比标准的用户,可以执行任意命令与更高的特权。

+观察到的例子
参考 描述
面向依赖管理工具可以避免OS命令注入在生成Git命令但是允许注入可选参数和输入从少量开始,可能允许代码执行。
规范的操作系统命令的例子注入。CGI程序并不中和“|”元字符当调用一个电话本程序。
链:不当输入验证(CWE-20)在用户参数,导致操作系统命令注入(cwe - 78),利用每中钢协KEV在野外。
注入sed脚本语法(sed注入)
注入sed脚本语法(sed注入)
注入sed脚本语法(sed注入)
图像程序允许注入的命令在“魔法矢量图形(MVG)”的语言。
反垃圾邮件产品允许注入SNMP命令到confiuration文件中
+潜在的缓解措施

阶段:体系结构和设计

如果可能的话,使用库调用而不是外部流程重建所需的功能。

实施阶段:

如果可能的话,确保所有外部命令从程序静态创建。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,使用一个可接受的输入列表,严格遵守规范。拒绝任何不严格符合规范的输入,或将其转换为一些。

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

阶段:操作

运行时间:运行时可以使用策略实施allowlist方式以防止任何non-sanctioned命令的使用。

阶段:系统配置

分配权限,阻止用户访问/开放特权文件。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 713年 OWASP十大2007类别A2 -注塑缺陷
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 722年 OWASP十大2004类别A1 -用户输入
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 727年 OWASP十大2004类别A6 -注塑缺陷
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 929年 OWASP十大2013类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 990年 SFP二级集群:污染输入命令
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1005年 7 pk -输入验证和代表性
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1027年 OWASP十大2017类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1337年 2021 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1340年 方案及数据保护措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1347年 OWASP十大2021类别A03:2021 -注射
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

映射

使用映射:Allowed-with-Review (CWE ID可以用来映射到实际的漏洞在有限的情况下需要仔细审查)。

理由是:cwe - 77时通常使用操作系统命令注入(cwe - 78)的目的是(ref - 1287]。

评论:如果弱点涉及到命令语言除了操作系统shell调用,然后cwe - 77可以使用。

术语

“命令注入”词对不同的人有着不同的意义。对一些人来说,它指的是任何类型的攻击,可以允许攻击者执行命令自己的选择,无论如何插入这些命令。因此命令注入可以合成从另一个弱点。这种用法还包括病例的功能允许用户指定一个完整的命令,然后执行;CWE之内,这种情况可能是更好的被视为授权问题(因为攻击者不能指定任意命令。)

另一个常见的用法,包括cwe - 77及其后裔,包括分隔符注入情况下,攻击者的命令被构造。

+分类法映射
映射分类名称 节点ID 适合 映射节点名
7有害的王国 命令注入
命令注入
OWASP十大2007 A2 CWE更具体 注塑缺陷
OWASP十大2004 A1 CWE更具体 用户输入
OWASP十大2004 A6 CWE更具体 注塑缺陷
软件故障模式 SFP24 污染输入命令
SEI CERT Perl编码标准 IDS34-PL CWE更具体 不通过不可信,unsanitized数据命令解释器
+引用
卡特里娜REF-6 Tsipenyuk,布莱恩象棋和加里·麦克格劳博士。“七有害的王国:分类软件安全错误”。NIST研讨会软件安全保障技术和度量工具。NIST的。2005-11-07。<https://samate.nist.gov/SSATTM_Content/papers/Seven%20Pernicious%20Kingdoms%20-%20Taxonomy%20of%20Sw%20Security%20Errors%20-%20Tsipenyuk%20-%20Chess%20-%20McGraw.pdf>。
(ref - 140)霍格伦德和加里·麦克格劳博士。“利用软件:如何打破代码”。addison - wesley。2004-02-27。<https://www.amazon.com/Exploiting-Software-How-Break-Code/dp/0201786958>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪恶之十:命令注入。”Page 171. McGraw-Hill. 2010.
(ref - 1287)主教法冠。“补充细节- 2022 CWE前25”。的细节问题映射。2022-06-28。<https://cwe.mitre.org/top25/archive/2022/2022_cwe_top25_supplemental.html problematicMappingDetails>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 7有害的王国
+贡献
贡献的日期 贡献者 组织
2022-05-20 匿名的外部因素
在术语报告中报告错误
+修改
修改日期 修饰符 组织
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 Weakness_Ordinalities
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples、名称
2009-07-27 CWE内容团队 主教法冠
更新Demonstrative_Examples、描述的名字
2009-10-29 CWE内容团队 主教法冠
Common_Consequences更新,描述、Other_Notes Potential_Mitigations
2010-02-16 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2010-06-21 CWE内容团队 主教法冠
更新描述、名称
2011-03-29 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples、引用Related_Attack_Patterns、人际关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-02-21 CWE内容团队 主教法冠
更新的关系
2013-07-17 CWE内容团队 主教法冠
更新的关系
2014-02-18 CWE内容团队 主教法冠
更新Applicable_Platforms Demonstrative_Examples,描述、Other_Notes Terminology_Notes
2014-06-23 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系
2017-05-03 CWE内容团队 主教法冠
更新Potential_Mitigations Related_Attack_Patterns,关系
2017-11-08 CWE内容团队 主教法冠
更新Causal_Nature、Likelihood_of_Exploit Modes_of_Introduction、引用关系,Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新的关系
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新Related_Attack_Patterns、人际关系
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系
2020-06-25 CWE内容团队 主教法冠
更新Potential_Mitigations
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新的关系
2021-07-20 CWE内容团队 主教法冠
更新描述、Observed_Examples关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples、引用Terminology_Notes
2023-01-31 CWE内容团队 主教法冠
更新描述,Potential_Mitigations
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 命令注入
2009-05-27 未能清理数据到控制面(又名“命令注入”)
2009-07-27 未能清洁数据到控制面(命令注入)
2010-06-21 卫生处理不当的特殊元素中使用一个命令(“命令注入”)
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日