 描述
产品从一个上游组件接收输入,但它不会消除或中和NUL字符或空字节错误当他们被发送到一个下游组件。
 扩展描述
数据解析,注入NUL字符或null字节可能导致产品相信输入比它实际上是提前终止,或者导致输入被误解。这个可以用来注射后发生的潜在危险输入零字节或绕过验证例程和其他保护机制。
 的关系
 模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
 常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
 观察到的例子
参考 |
描述 |
|
空字节主题名称导致目录遍历影响更糟 |
|
源代码公开使用null。 |
|
源代码公开使用null。 |
|
落后于零允许文件包括。 |
|
Null字符在MIME头允许检测绕过。 |
|
Web服务器,远程攻击者可以查看通过null字符CGI程序的源代码(% 00)的URL。 |
|
Web服务器之前允许允许远程攻击者绕过访问限制,列出目录的内容,阅读源代码中插入一个空字符(% 00)的URL。 |
|
日志系统允许攻击者造成拒绝服务(挂),导致空字节放在日志消息。 |
|
Web服务器允许读源代码可执行程序通过一个null字符(% 00)的请求。 |
|
保护机制可以绕过限制文件访问使用一个空字符(% 00)的目录名称。 |
|
应用程序服务器允许远程攻击者读取JSP源代码通过零字节编码在一个HTTP GET请求,导致服务器发送未解析的JSP文件。 |
|
XSS保护机制只检查序列与后一个字母字符(<),所以non-alphabetical或null字符(% 00)<后可能会被处理。 |
|
解码功能代理允许正则表达式绕过acl通过url和空字符。 |
|
零字节绕过PHP regexp检查(交互错误)。 |
|
零字节绕过PHP regexp检查(交互错误)。 |
 潜在的缓解措施
开发人员应该预料到空字符或null字节将被注入/删除/操纵产品的输入向量。使用一个适当的组合denylists和allowlists确保只有有效,预期和适当的输入处理的系统。 |
实施阶段:
假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,使用一个可接受的输入列表,严格遵守规范。拒绝任何不严格符合规范的输入,或将其转换为一些。
当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。
不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。
|
实施阶段:
输入应该解码和规范化应用程序当前的内部表示之前验证( cwe - 180)。确保应用程序不会解码输入两次相同( cwe - 174)。这些错误可以用来绕过allowlist验证方案通过引入危险的输入后检查。 |
 笔记
的关系
这可能是一个因素在多个解释错误,其他交互错误,文件名等价等。
 分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
千鸟 |
|
|
Null字符/零字节 |
WASC |
28 |
|
零字节注入 |
软件故障模式 |
SFP24 |
|
污染输入命令 |
 引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第八章,“NUL字符注入”,411页。1版。艾迪生卫斯理》2006。 |
|