描述
产品不妥善处理所使用的字符的开始和结束的一组实体,如括号,括号,括号。
扩展描述
成对的分隔符可能包括:
- <和>尖括号
- ()括号
- {和}括号
- 方括号[和]
- ”“双引号
- ' '单引号
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
观察到的例子
参考 |
描述 |
|
崩溃通过失踪配对分隔符(开放的双引号,但没有关闭双引号)。 |
|
通过消息没有崩溃关闭“>”。 |
|
通过邮箱的名字与一个缓冲区溢出开双引号,但缺少一个关闭双引号,导致一个更大的比预期的副本。 |
潜在的缓解措施
开发人员应该预料到分组元素将被注入/删除/操纵产品的输入向量。使用一个适当的组合denylists和allowlists确保只有有效,预期和适当的输入处理的系统。 |
实施阶段:
假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,使用一个可接受的输入列表,严格遵守规范。拒绝任何不严格符合规范的输入,或将其转换为一些。
当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。
不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。
|
实施阶段:
虽然风险使用动态生成的查询字符串,代码,或命令,控制和数据混合在一起,有时它可能是不可避免的。正确引用参数和任何特殊字符转义在这些参数。最保守的方法是逃跑或者过滤不经过极其严格的allowlist的所有字符(如一切不是字母数字或空白)。如果仍然需要一些特殊字符,如空格,每个参数封装在引号转义后/过滤步骤。小心论证注入( cwe - 88)。 |
实施阶段:
输入应该解码和规范化应用程序当前的内部表示之前验证( cwe - 180)。确保应用程序不会解码输入两次相同( cwe - 174)。这些错误可以用来绕过allowlist验证方案通过引入危险的输入后检查。 |
笔记
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
千鸟 |
|
|
分组元素/分隔符 |
软件故障模式 |
SFP24 |
|
污染输入命令 |
|