CWE

常见的弱点枚举

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

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

cwe - 78:中和不当使用特殊的元素在一个操作系统命令(OS命令注入)

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

这可能允许攻击者执行意想不到的,危险的命令直接在操作系统上。这个弱点会导致脆弱的环境中攻击者没有直接访问操作系统,如在web应用程序中。交替,如果缺陷发生在有特权的程序,它可能允许攻击者指定命令,通常不会访问,或调用备用命令攻击者没有的特权。问题是加剧了如果妥协过程不遵循最小特权原则,因为attacker-controlled命令可能运行特殊的系统权限,增加的伤害。

至少有两种亚型的OS命令注入:

  • 应用程序将执行一个单一的、固定的程序,在自己的控制之下。它打算使用外来的输入参数,程序。例如,程序可能使用系统(“网路资讯查询(主机名)”)运行网路资讯查询,让用户提供一个主机名,用来作为参数。攻击者不能阻止网路资讯查询执行。然而,如果程序没有删除命令分隔符从主机名参数,攻击者可以把分隔符的参数,它允许他们执行自己的计划后,网路资讯查询执行完成。
  • 它使用的应用程序接受一个输入完全选择程序运行,以及使用哪个命令。应用程序只是整个命令重定向操作系统。例如,程序可能使用“exec([命令])”执行(命令)是用户提供的。如果攻击者控制下的命令,那么攻击者可以执行任意命令或程序。如果正在执行的命令使用exec()等函数,CreateProcess(),攻击者可能无法把多个命令组合在一起在同一条线上。

从疲软的角度来看,这些变异代表不同的程序员的错误。在第一个变种,程序员明确计划,来自不受信任的输入方的将部分参数在命令执行。在第二个变种,程序员并不打算让命令访问任何不可信,但是程序员可能并没有占交替方式恶意的攻击者可以提供输入。

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

语言

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

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

技术的影响:执行未经授权的代码或命令;DoS:崩溃,退出或重新启动;阅读文件或目录;修改文件或目录;阅读应用程序数据;修改应用程序数据;隐藏活动

攻击者可以执行未经授权的命令,它可以用于禁用产品,或读取和修改数据的直接攻击者没有权限访问。由于目标应用程序直接执行命令,而不是攻击者,任何恶意活动似乎来自应用程序或应用程序的所有者。
+利用的可能性
+示范例子

示例1

这个示例代码将把用户的名字和列表,用户的主目录的内容。它受到第一个变种的OS命令注入。

(坏的代码)
例如语言:PHP
$ userName = $ _POST(“用户”);
$命令= ' ls - l /home/ '。美元的用户名;
系统($命令);

$ userName变量不是检查恶意输入。攻击者可以将$ userName变量设置为任意操作系统命令,如:

(攻击代码)
;rm射频/

这将导致美元的命令是:

(结果)
ls - l /home/; rm射频/

因为分号在Unix命令分隔符,操作系统将首先执行ls命令,然后rm命令,删除整个文件系统。

还注意到,这个示例代码是容易受到路径遍历(CWE-22)和不受信任的搜索路径(cwe - 426)的攻击。

示例2

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

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

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

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

示例3

这个例子是一个web应用程序,它将执行DNS查找的用户提供的域名。它受到第一个变种的OS命令注入。

(坏的代码)
例如语言:Perl
使用CGI qw(:标准);
$ name =参数('名称');
网路资讯查询美元= " /道路/ /网路资讯查询”;
打印头;
如果(打开(fh美元,“网路资讯查询名称|美元”)){
而(< $ fh >) {
打印escapeHTML ($ _);
打印“< br > \ n”;
}
关闭(fh);
}

假设攻击者提供了一个这样的域名:

(攻击代码)
cwe.mitre.org % 20% 3 b % 20 / bin / ls % 20-l

“% 3 b”序列解码”;“字符,和% 20解码空间。open()语句将过程这样一个字符串:

(结果)
/道路/ /网路资讯查询cwe.mitre.org;/bin/ls - l

因此,攻击者执行/ bin / ls - l命令和获取的列表中的所有文件程序的工作目录。输入可以替换为更危险命令,如安装恶意程序在服务器上。

示例4

下面的例子执行读取一个shell脚本的名字从系统属性。这是第二版本OS命令注入。

(坏的代码)
例如语言:Java
字符串脚本= System.getProperty (“SCRIPTNAME”);
如果(脚本! = null)
System.exec(脚本);

如果攻击者控制了这个属性,那么他们可以修改属性指向一个危险的计划。

示例5

在下面的示例中,一个方法用于地理坐标从纬度和经度格式转换为UTM格式。方法获取输入坐标从用户通过一个HTTP请求并执行一个程序本地应用服务器执行转换。方法通过纬度和经度坐标作为外部程序和命令行选项将执行一些处理检索结果的转换和返回结果UTM坐标。

(坏的代码)
例如语言:Java
coordinateTransformLatLonToUTM公共字符串(字符串坐标)
{
字符串utmCoords =零;
尝试{
字符串latlonCoords =坐标;
运行时rt = Runtime.getRuntime ();
过程执行= rt.exec (“cmd。exe / C实例。exe -“+ latlonCoords);
/ /流程坐标变换的结果

/ /……
}
捕获(异常e) {…}
返回utmCoords;
}

然而,方法不确认坐标输入参数的内容只包含正确格式化的纬度和经度坐标。如果输入坐标没有验证在调用这个方法之前,恶意用户可以执行另一个程序本地应用程序服务器通过添加“&”其次是另一个程序的命令协调字符串的结束。“&”指示Windows操作系统执行另一个程序。

例子6

下面的代码是一个管理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 \ \ *。*”,则应用程序将执行这个命令以及其他指定的项目。因为应用程序的性质,它运行所必需的特权与数据库交互,这意味着攻击者将会运行任何命令与特权。

+观察到的例子
参考 描述
OS命令注入在wi - fi路由器,每中钢协KEV利用在野外。
模板功能网络配置管理工具允许操作系统命令注入,每中钢协KEV利用在野外。
链:不当输入验证(CWE-20)在用户参数,导致操作系统命令注入(cwe - 78),利用每中钢协KEV在野外。
规范的操作系统命令的例子注入。CGI程序并不中和“|”元字符当调用一个电话本程序。
语言翻译的邮件函数接受另一个论点是连接到一个字符串中使用危险的popen()调用。由于没有中和这个论点,包括OS命令注入(cwe - 78)和参数注入(cwe - 88)是可能的。
命令执行Web服务器允许使用“|”(管)字符。
FTP客户端不过滤从服务器返回的文件名“|”,允许操作系统命令注入。
在ZIP归档Shell元字符的文件名
远程登录Shell元字符:/ /链接不启动应用程序时妥善处理过程的联系。
操作系统命令注入通过环境变量。
OS命令注入通过https://的url
链:完整denylist OS命令注入
产品允许远程用户通过创建一个文件的路径名包含执行任意命令shell元字符。
+潜在的缓解措施

阶段:体系结构和设计

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

阶段:体系结构和设计;操作

策略:沙盒或监狱

运行代码的“监狱”或类似沙箱环境执行严格的流程和操作系统之间的边界。这可能有效地限制哪些文件可以在一个特定的目录或访问哪些命令可以执行的软件。

操作系统的例子包括Unix chroot监狱,AppArmor对,SELinux。在一般情况下,托管代码可能会提供一些保护。例如,java。在Java SecurityManager FilePermission允许软件指定文件操作的限制。

这可能不是一个可行的解决方案,它只限制对操作系统的影响;应用程序的其余部分可能仍然接受妥协。

应该注意避免cwe - 243和其他相关弱点监狱。

有效性:有限

注意:这种缓解的有效性取决于特定的沙盒或监狱的预防功能使用,只可能有助于减少攻击的范围,比如限制攻击者对特定文件系统的系统调用或限制部分,可以访问。

阶段:体系结构和设计

策略:减少攻击表面

对于任何数据将被用来生成一个命令执行,让尽可能多的数据的外部控制。例如,在web应用程序中,这可能需要将数据存储在会话的状态,而不是发送到客户端在一个隐藏的表单字段。

阶段:体系结构和设计

对于任何一个在客户端执行安全检查,确保这些检查复制在服务器端,为了避免cwe - 602。攻击者可以绕过客户端检查通过修改值后,检查执行,或通过改变客户端完全删除客户端检查。然后,这些修改的值将被提交到服务器。

阶段:体系结构和设计

策略:库或框架

使用审查库或框架不允许这个弱点发生或提供了结构,使这个弱点更容易避免的。

例如,考虑使用ESAPI编码控制(REF-45)或类似的工具、库或框架。这些将帮助程序员编码输出的方式不容易错误。

实施阶段:

策略:输出编码

虽然风险使用动态生成的查询字符串,代码,或命令,控制和数据混合在一起,有时它可能是不可避免的。正确引用参数和任何特殊字符转义在这些参数。最保守的方法是逃跑或者过滤不经过极其严格的allowlist的所有字符(如一切不是字母数字或空白)。如果仍然需要一些特殊字符,如空格,每个参数封装在引号转义后/过滤步骤。小心论证注入(cwe - 88)。

实施阶段:

如果要执行的程序允许参数被指定在一个输入文件或标准输入,那么考虑使用模式传递参数,而不是命令行。

阶段:体系结构和设计

策略:参数化

如果可用,使用结构化机制自动执行数据和代码之间的分离。这些机制可以提供相关的引用,编码,自动验证,而不是依赖于开发人员提供此功能在每一个点生成输出。

一些语言提供多种功能,可用于调用命令。在可能的情况下,识别任何函数调用命令shell使用一个字符串,并替换函数,需要个人参数。这些函数通常执行适当的引用和过滤参数。例如,在C语言中,系统()函数接受一个字符串,该字符串包含整个执行命令,而execl (), execve(),和其他需要一个字符串数组,每个参数。在Windows中,CreateProcess()只接受一个命令。在Perl中,如果系统()提供了一组参数,那么它将引用的每个参数。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

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

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

当构建操作系统命令字符串,使用限制严格的allowlists字符集基于请求中的参数的期望值。这将间接限制的范围攻击,但这种技术没有适当的重要输出编码和逃避。

注意,适当的输出编码、逃避和引用是防止OS命令注入最有效的解决方法,尽管输入验证可能提供一些深度防护。这是因为它有效地限制了将出现在输出。输入验证不会总是阻止OS命令注入,尤其是当你需要支持自由格式的文本字段可以包含任意字符。例如,当调用一个邮件程序中,您可能需要允许主题字段包含危险输入”;“和”>“字符,否则需要转义或处理。在这种情况下,剥离的字符可能会降低OS命令注入的风险,但是它会产生不正确的行为,因为主题字段将不会记录为用户的目的。这可能似乎是一个小小的不便,但它可能是更重要的是当程序依赖于结构良好的主题行,以将消息传递给其他组件。

即使你犯了一个错误在你的验证(如100年忘记一个输入字段),适当的编码仍可能会保护你免受喷射的攻击。只要不是做隔离,输入验证仍然是一个有用的技术,因为它可能会大大降低你的攻击面,让你发现一些攻击,并提供其他安全的好处,适当的编码并没有解决。

阶段:体系结构和设计

战略:执行的转换

组接受对象时,如文件名或url,是有限的或已知,从一组固定的输入值创建一个映射(比如数字id)实际的文件名或url,并拒绝所有其他输入。

阶段:操作

策略:编译和构建硬化

运行代码的一个执行自动的环境污染传播,防止使用受污染的任何命令执行变量,比如Perl的“t”开关。这将迫使程序执行验证步骤,消除污染,尽管你必须小心正确验证您的输入,这样你就不会意外危险的输入标记为未染污的(见cwe - 183cwe - 184)。

阶段:操作

策略:环境硬化

运行代码的一个执行自动的环境污染传播,防止使用受污染的任何命令执行变量,比如Perl的“t”开关。这将迫使程序执行验证步骤,消除污染,尽管你必须小心正确验证您的输入,这样你就不会意外危险的输入标记为未染污的(见cwe - 183cwe - 184)。

实施阶段:

确保错误消息只包含最小的细节,目标受众是有用的,没有其他人。消息需要罢工之间的平衡过于神秘的(可以迷惑用户)或过于详细的(可能揭示超过预期)。不应该透露的消息的方法被用来确定错误。攻击者可以使用详细信息完善或优化他们最初的攻击,从而增加成功的机会。

如果必须捕捉到一些细节错误,记录在日志消息,但想想会发生什么,如果日志消息可以被攻击者。高度敏感的信息,如密码永远不应该被保存到日志文件中。

避免不一致的消息可能会意外地提示攻击者对内部状态,如是否存在一个用户帐户。

在OS命令注入,错误信息返回给用户可能揭示是否正在执行一个操作系统命令,并可能正在使用哪个命令。

阶段:操作

策略:沙盒或监狱

使用运行时策略执行创建的allowlist容许命令,然后阻止使用的任何命令allowlist没有出现。技术,如AppArmor对可用。

阶段:操作

防火墙策略:

使用应用程序防火墙,可以检测到攻击这个弱点。它可以是有益的情况下,代码不能固定(因为它是由第三方控制),作为一项紧急预防措施,更全面的软件保证措施被应用,或者提供深度防御。

有效性:温和

注意:应用程序防火墙不可能覆盖所有可能的输入向量。此外,攻击技术可能可以绕过保护机制,比如使用畸形的输入,仍然可以由组件接收处理这些输入。根据功能的不同,应用程序防火墙可能会无意中拒绝或修改合法请求。最后,一些手动工作可能需要定制。

阶段:体系结构和设计;操作

策略:环境硬化

使用所需的最低特权运行您的代码来完成必要的任务(ref - 76]。如果可能的话,创建独立帐户权限有限,只用于一个任务。这样,一个成功的攻击不会立即给攻击者访问其他软件或其环境。例如,数据库应用程序很少需要作为数据库管理员运行,特别是在日常操作。

阶段:操作;实现

策略:环境硬化

使用PHP时,配置应用程序,以便它不使用register_globals。在实现,开发应用程序,以便它不依赖于这个特性,但是小心实现register_globals的模拟等弱点cwe - 95,cwe - 621和类似的问题。
+检测方法

自动静态分析

这个弱点常常可以发现使用自动静态分析工具。许多现代工具使用数据流分析或基于技术来减少假阳性的数量。

自动静态分析可能无法识别在执行适当的输入验证时,导致假阳性——即。警告,没有任何安全后果或需要任何代码更改。

自动静态分析可能无法检测的使用自定义的API函数或第三方库间接调用操作系统命令,导致假阴性——特别是如果API /库代码不可用进行分析。

注意:这不是一个完美的解决方案,因为100%的准确率和覆盖率不可行。

自动动态分析

这个弱点能被探测到的使用动态交互的工具和技术的软件使用大型测试套件和许多不同的输入,如模糊测试(起毛)健壮性测试和故障注入。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。

有效性:温和

人工静态分析

因为这个弱点通常并不经常出现在一个软件包,手动白盒技术可以提供足够的代码覆盖率和减少假阳性如果所有可能受到操作可以在有限的时间内评估约束。

有效性:高

自动静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 字节码的弱点分析,包括反汇编程序+源代码弱点分析
  • 二进制弱点分析,包括反汇编程序+源代码弱点分析

有效性:高

动态分析与自动化的结果解释

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • Web应用程序扫描
  • Web服务的扫描仪
  • 数据库扫描仪

有效性:飙升部分

动态分析与人工解释结果

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 模糊测试
  • 基于框架Fuzzer

有效性:飙升部分

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 手工源代码审查(不检查)
成本有效的部分报道:
  • 关注人工抽查,手动分析来源

有效性:高

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 源代码缺陷分析仪
  • Context-configured源代码分析器

有效性:高

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 正式的方法/ Correct-By-Construction
成本有效的部分报道:
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。

有效性:高

+功能区域
  • 程序调用
+影响资源
  • 系统进程
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 635年 最初使用的弱点NVD从2008年到2016年
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 714年 OWASP 2007年十大类别A3 -恶意文件执行
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 727年 OWASP十大2004类别A6 -注塑缺陷
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 741年 CERT C安全编码标准(2008)第八章-字符和字符串(STR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 744年 CERT C安全编码标准(2008)第11章-环境(ENV)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 751年 2009年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 801年 2010年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 810年 OWASP十大2010类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 845年 CERT甲骨文安全Java编码标准(2011)第二章-输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 864年 2011年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 875年 CERT c++安全编码部分07 -字符和字符串(STR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 878年 CERT c++安全编码部分10 -环境(ENV)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 929年 OWASP十大2013类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 990年 SFP二级集群:污染输入命令
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1027年 OWASP十大2017类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1134年 SEI CERT甲骨文Java安全编码标准,指南00。输入验证和数据卫生处理(IDS)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1165年 SEI CERT 10 C编码标准指导方针。环境(ENV)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1200年 弱点在2019 CWE最危险的软件错误
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1337年 2021 CWE最危险软件的弱点的弱点
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1347年 OWASP十大2021类别A03:2021 -注射
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1350年 2020 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

术语

“OS命令注入”词对不同的人有着不同的意义。对一些人来说,它只指的情况下,攻击者注入命令分隔符为参数application-controlled程序调用。对一些人来说,它指的是任何类型的攻击,可以允许攻击者执行操作系统命令自己的选择。这种用法可能包括不受信任的搜索路径的弱点(cwe - 426),导致应用程序发现和执行一个attacker-controlled程序。更为复杂的是当参数注入(cwe - 88)允许不同的命令行开关或插入命令行选项,如“-”开关,其目的可能是执行后续的参数作为一个命令(这-开关存在于UNIX“查找”命令,例如)。在后者情况下,然而,cwe - 88可以被视为主要的弱点在链cwe - 78

研究的差距

需要更多的调查到OS命令注入变体之间的区别,包括角色与参数注入(cwe - 88)。等效的区别可能存在于其他injection-related SQL注入等问题。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 操作系统命令注入
OWASP十大2007 A3 CWE更具体 恶意文件执行
OWASP十大2004 A6 CWE更具体 注塑缺陷
CERT C安全编码 ENV03-C 当调用外部程序清洁环境
CERT C安全编码 ENV33-C CWE更具体 不调用系统()
CERT C安全编码 STR02-C Sanitize数据传递到复杂的子系统
WASC 31日 操作系统命令
CERT甲骨文安全Java编码标准(2011) IDS07-J 不通过不可信,unsanitized数据Runtime.exec()方法
软件故障模式 SFP24 污染输入命令
OMG ASCSM ASCSM -cwe - 78
+引用
(ref - 140)霍格伦德和加里·麦克格劳博士。“利用软件:如何打破代码”。addison - wesley。2004-02-27。<https://www.amazon.com/Exploiting-Software-How-Break-Code/dp/0201786958>。
ref - 685帕斯卡默。“元字符漏洞”。2008-02-20。<http://www.cs.purdue.edu/homes/cs390s/slides/week09.pdf>。
[ref - 686]罗伯特钻。“操作系统指挥”。2009 - 06。<http://projects.webappsec.org/OS-Commanding>。
(ref - 687)林肯斯坦和约翰·斯图尔特。“万维网安全常见问题解答”。章:“CGI脚本”。2002-02-04。<http://www.w3.org/Security/Faq/wwwsf4.html>。
(ref - 688)乔丹Dimov Cigital。“Perl脚本的安全问题”。<http://www.cgisecurity.com/lib/sips.html>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪恶之十:命令注入。”Page 171. McGraw-Hill. 2010.
(ref - 690)弗兰克·金。“前25系列——排名9 - OS命令注入”。无软件安全研究所。2010-02-24。<http://blogs.sans.org/appsecstreetfighter/2010/02/24/top-25-series-rank-9-os-command-injection/>。
REF-45 OWASP。“OWASP企业安全API (ESAPI)项目”。<http://www.owasp.org/index.php/ESAPI>。
(ref - 76)肖恩·巴纳姆和迈克尔Gegick。“最小特权”。2005-09-14。<https://www.cisa.gov/uscert/bsi/articles/knowledge/principles/least-privilege>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第八章,“Shell元字符”,425页。1版。艾迪生卫斯理》2006。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ascsm - cwe - 78。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 肖恩Eidemiller Cigital
添加/更新示范例子
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-01 股的分析
添加/更新白盒定义
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新的关系,Other_Notes Taxonomy_Mappings
2008-10-14 CWE内容团队 主教法冠
更新描述
2008-11-24 CWE内容团队 主教法冠
更新Observed_Examples、关系、Taxonomy_Mappings
2009-01-12 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples,描述、Likelihood_of_Exploit名字,Observed_Examples, Other_Notes, Potential_Mitigations,关系,Research_Gaps Terminology_Notes
2009-03-10 CWE内容团队 主教法冠
更新Potential_Mitigations
2009-05-27 CWE内容团队 主教法冠
更新的名字,Related_Attack_Patterns
2009-07-17 股的分析
改善了White_Box_Definition
2009-07-27 CWE内容团队 主教法冠
更新描述,名称,White_Box_Definitions
2009-10-29 CWE内容团队 主教法冠
更新Observed_Examples,引用
2009-12-28 CWE内容团队 主教法冠
更新Detection_Factors
2010-02-16 CWE内容团队 主教法冠
更新Detection_Factors Potential_Mitigations、引用关系,Taxonomy_Mappings
2010-04-05 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences、描述Detection_Factors、名称、Observed_Examples Potential_Mitigations,引用关系
2010-09-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-12-13 CWE内容团队 主教法冠
更新描述,Potential_Mitigations
2011-03-29 CWE内容团队 主教法冠
更新Demonstrative_Examples、描述
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2011-06-27 CWE内容团队 主教法冠
更新的关系
2011-09-13 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples、引用关系,Taxonomy_Mappings
2012-10-30 CWE内容团队 主教法冠
更新Observed_Examples Potential_Mitigations
2014-02-18 CWE内容团队 主教法冠
更新Applicable_Platforms、Demonstrative_Examples Terminology_Notes
2014-06-23 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors、关系、Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Modes_of_Introduction、引用关系,Taxonomy_Mappings White_Box_Definitions
2018-03-27 CWE内容团队 主教法冠
更新的关系
2019-01-03 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2019-09-19 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2020-06-25 CWE内容团队 主教法冠
更新Observed_Examples Potential_Mitigations
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2021-07-20 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-04-28 CWE内容团队 主教法冠
更新Demonstrative_Examples
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新的引用
2023-01-31 CWE内容团队 主教法冠
更新Common_Consequences、描述
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 操作系统命令注入
2009-01-12 未能清理数据转化为一个操作系统命令(又名“OS命令注入”)
2009-05-27 未能保存操作系统命令结构(又名“OS命令注入”)
2009-07-27 未能保存操作系统命令结构(OS命令注入)
2010-06-21 卫生处理不当使用特殊的元素在一个操作系统命令(OS命令注入)
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日