cwe - 180:不正确的行为秩序:规范化之前验证
描述
产品验证输入之前规范化,防止产品检测数据规范化步骤后变得无效。
扩展描述
这可以被攻击者绕过验证和发动攻击,暴露缺点,否则是可以预防的,如注射。
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示范例子
示例1
下面的代码尝试验证给定输入路径通过检查它对一个allowlist然后返回规范化道路。在这个特定的例子中,被认为是有效的路径字符串开头“safe_dir /”。
字符串路径= getInputPath (); 如果(path.startsWith (" / safe_dir / ")) {
文件f =新文件(路径); 返回f.getCanonicalPath (); }
上面的代码的问题是,验证步骤前进行规范化。攻击者可以提供一个输入路径“/ safe_dir / . ./”,通过验证步骤。然而,规范化过程中看到的二阶导数作为一个遍历到父目录,因此当canonicized路径将成为“/”。
为了避免这个问题,应该进行验证后规范化。在这种情况下规范化发生在初始化文件的对象。下面的代码修复这个问题。
字符串路径= getInputPath (); 文件f =新文件(路径); 如果(f.getCanonicalPath () .startsWith (" / safe_dir / ")) {
返回f.getCanonicalPath (); }
观察到的例子
参考 |
描述 |
|
产品允许远程攻击者查看限制文件通过一个HTTP请求包含一个“*”(通配符或星号)字符。 |
|
产品修改文件扩展名的前两个字母后执行安全检查,它允许远程攻击者绕过身份验证通过文件名判明扩展而不是.hts扩展。 |
|
数据库消耗额外的在处理字符,不能转换,可以从查询和删除一个转义字符使应用程序SQL注入攻击。 |
|
重叠“fakechild / . . / realchild” |
|
产品检查URI " < "和其他文字字符,但它在十六进制解码URI,所以“% 3 e”和其他序列是允许的。 |
潜在的缓解措施
实施阶段:
输入应该解码和规范化应用程序当前的内部表示之前验证( cwe - 180)。确保应用程序不会解码输入两次相同( cwe - 174)。这些错误可以用来绕过allowlist验证方案通过引入危险的输入后检查。 |
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
脆弱性映射笔记
用法:允许
(CWE ID可以用来映射到现实世界的漏洞) |
原因:可接受的使用 |
理由是: 这个CWE条目是变体的抽象级别,这是一个首选的抽象级别映射到漏洞的根本原因。 |
评论: 仔细阅读这两个名称和描述,以确保此映射是一个适当的配合。不要试图“力”映射到底层基础/变体只是遵守这首选的抽象级别。 |
笔记
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
千鸟 |
|
|
Validate-Before-Canonicalize |
OWASP十大2004 |
A1 |
CWE更具体 |
用户输入 |
CERT甲骨文安全Java编码标准(2011) |
IDS01-J |
确切的 |
规范化字符串之前验证它们 |
SEI CERT甲骨文Java编码标准 |
IDS01-J |
确切的 |
规范化字符串之前验证它们 |
更多的信息是可用的,请编辑自定义过滤器或选择一个不同的过滤器。
|