描述
产品从一个上游组件接收输入,但它不中和或错误中和特殊元素,可以被解释为控制元素或句法标记,当他们被发送到一个下游组件。
扩展描述
大多数语言和协议都有自己的特殊元素,如人物和保留字。这些特殊的元素可以控制内容。如果产品不能防止外部控制或影响包含这样的特殊元素,更改程序的控制流的目的是什么。例如,Unix和Windows解释符号<(“小于”)意味着“从文件读取输入”。
的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
自然 |
类型 |
ID |
的名字 |
ChildOf |
支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 |
707年 |
不适当的中和 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
140年 |
中和不当分隔符 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
147年 |
中和不当输入结束符 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
148年 |
不当中和输入的领导人 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
149年 |
中和不当引用语法 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
150年 |
中和不当逃脱、元或控制序列 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
151年 |
中和不当评论分隔符 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
152年 |
不当中和宏观符号 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
153年 |
不当中和替换字符 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
154年 |
中和不当变量名称分隔符 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
155年 |
不当中和通配符或匹配的符号 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
156年 |
不当中和的空白 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
157年 |
未能净化成对分隔符 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
158年 |
中和不当零字节或NUL字符 |
ParentOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
159年 |
处理不当的无效使用特殊的元素 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
160年 |
不当中和领导特殊元素 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
162年 |
不当中和落后于特殊的元素 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
164年 |
不当中和内部特殊的元素 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
464年 |
哨兵的数据结构 |
ParentOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
790年 |
过滤不当的特殊元素 |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关视图”架构概念”(cwe - 1008)
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1019年 |
验证输入 |
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
实现 |
实现:造成这一弱点在建筑安全策略的实施。 |
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
保密 完整性 可用性 其他
|
技术的影响:执行未经授权的代码或命令;改变执行逻辑;DoS:崩溃,退出或重新启动
|
|
观察到的例子
参考 |
描述 |
|
从邮件客户端读取任意文件通过提供一个特殊的MIME消息头内部用来存储路径名的附件。 |
|
Setuid程序不清洁特殊转义序列之前将数据发送到一个邮件程序,导致邮件程序处理这些序列。 |
|
多通道的问题。终端转义序列不过滤日志文件。 |
|
多通道的问题。终端转义序列不过滤日志文件。 |
潜在的缓解措施
实施阶段:
开发人员应该预料到特殊元素(如分隔符、符号)将注入产品的输入向量。防御之一是创建一个allowlist(例如一个正则表达式),它定义了有效的输入根据需求规格说明书。严格筛选对allowlist不匹配的任何输入。正确编码输出,引用任何元素,有特殊意义的组件通信。 |
实施阶段:
假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,使用一个可接受的输入列表,严格遵守规范。拒绝任何不严格符合规范的输入,或将其转换为一些。
当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。
不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。
|
实施阶段:
使用并指定一个适当的输出编码,确保特殊元素是定义良好的。一个正常的字节序列在一个编码在另一个可能是一种特殊的元素。 |
实施阶段:
输入应该解码和规范化应用程序当前的内部表示之前验证( cwe - 180)。确保应用程序不会解码输入两次相同( cwe - 174)。这些错误可以用来绕过allowlist验证方案通过引入危险的输入后检查。 |
实施阶段:
虽然风险使用动态生成的查询字符串,代码,或命令,控制和数据混合在一起,有时它可能是不可避免的。正确引用参数和任何特殊字符转义在这些参数。最保守的方法是逃跑或者过滤不经过极其严格的allowlist的所有字符(如一切不是字母数字或空白)。如果仍然需要一些特殊字符,如空格,每个参数封装在引号转义后/过滤步骤。小心论证注入( cwe - 88)。 |
弱点Ordinalities
Ordinality |
描述 |
主 |
(其他弱点的弱点存在独立的) |
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
笔记
的关系
这个弱点可以解释冲突或交互错误有关的中介机构(如代理或应用程序防火墙)当一个端点的中介的模型并不占特定于协议的特殊元素。
的关系
看到这个条目的孩子为不同类型的特殊元素,一度曾被观察到。然而,很难找到合适的CVE的例子。为了完成,CWE包括某些类型没有任何相关的观察到的例子。
研究的差距
这个弱点可能是超专有的或自定义格式。很可能这些问题是相当常见的应用程序中使用自己的自定义格式的配置文件、日志、元数据、消息传递、等等。他们只会偶然被发现或集中精力基于理解的格式。
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
千鸟 |
|
|
特殊元素(字符或保留字) |
千鸟 |
|
|
定制特殊字符注入 |
软件故障模式 |
SFP24 |
|
污染输入命令 |
|