CWE

普遍的弱点

社区开发的软件和硬件弱点类型清单

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

CWE-185:不正确的正则表达式

弱点ID:185
抽象:班级
结构:简单的
查看自定义信息:
+描述
该产品以导致数据不当匹配或比较的方式指定正则表达式。
+扩展描述
当正则表达式用于滤波或验证等保护机制时,这可能会使攻击者绕过对传入数据的预期限制。
+关系
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与观点“研究概念”相关(CWE-1000)
自然 类型 ID 姓名
Childof 支柱支柱 - 弱点是最抽象的弱点类型,代表了与之相关的所有类别/基础/变体弱点的主题。从技术上讲,柱子与类别不同,因为在技术上仍然是一种描述错误的弱点,而类别代表用于分组相关事物的常见特征。 697 不正确的比较
父母 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 186 过于限制的正则表达
父母 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 625 允许的正则表达
canpreceede 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 182 数据崩溃成不安全的值
canpreceede 变体变体 - 与某种类型的产品相关的弱点,通常涉及特定的语言或技术。比基本弱点更具体。变体级别的弱点通常以以下维度的3到5来描述问题:行为,财产,技术,语言和资源。 187 部分字符串比较
+介绍模式
部分帮助引言的不同模式提供了有关如何以及何时引入这种弱点的信息。该阶段识别可能发生介绍的生命周期中的一个点,而音符提供了与给定阶段中引言有关的典型情况。
阶段 笔记
执行
+适用的平台
部分帮助该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。

语言

班级:不是特定语言的(不确定的患病率)

+常见后果
部分帮助该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
范围 影响 可能性
其他

技术影响:意外状态;随上下文而变化

当未正确指定正则表达式时,数据可能具有与程序其余部分期望的格式或类型不同的格式或类型,从而产生结果弱点或错误。
访问控制

技术影响:旁路保护机制

在PHP中,有时可以用无效字节绕过正则表达检查,从而导致许多弱点。
+示例的例子

示例1

以下代码将电话号码视为输入,并使用正则表达式拒绝无效的电话号码。

(不良代码)
示例语言:珀尔
$ phone = getphoneNumber();
if($ phone =〜 /\ d+ - \ d+ /){
#看起来只有连字符和数字
系统(“ Lookup-Phone $ Phone”);
}
别的 {
错误(“畸形号码!”);
}

攻击者可以提供一个参数:“; ls -L; echo 123-456”这将通过检查,因为“ 123-456”足以匹配正则表达式的“ \ d+ - \ d+”部分。

示例2

该代码在调用“ ping”命令中使用它之前使用正则表达式来验证IP字符串。

(不良代码)
示例语言:Python
导入子过程
导入

def validate_ip_regex(ip:str):
ip_validator = re.compile(r“((25 [0-5] |(2 [0-4] | 1 \ d | [1-9] |)\ d)\。?\ b){4}”)
如果ip_validator.match(ip):
返回IP
别的:
提高ValueError(“ IP地址不匹配有效模式。”)

def run_ping_regex(ip:str):
验证= validate_ip_regex(ip)
#ping命令将零prepended的IP地址视为八十
结果= subproces.call([[“ ping”,已验证]))
打印(结果)

由于正则表达式没有锚点(CWE-777),即没有 ^或$字符的无界无限,然后将0或0x预先到IP地址的开头仍将导致匹配的REGEX模式。由于PING命令支持八进制和十六进制的IP地址,因此它将使用意外有效的IP地址(CWE-1389)。例如,“ 0x63.63.63.63”将被认为等同于“ 99.63.63.63”。结果,攻击者可能会可能会直接达到攻击者无法直接到达的PING系统。

+观察到的例子
参考 描述
Regexp不是“锚定”到开始或结束的,这允许伪造的值可信值作为子字符串。
IP地址的REGEXP最终没有锚定,可以添加外壳Metacharacters。
通过多个领导斜线绕过访问限制,这会导致正则表达式失败。
本地用户通过无效的正则表达式。
链:畸形输入会产生正则表达误差,从而导致信息暴露。
某些字符串后来在RegexP中使用,导致崩溃。
MFV。旨在防止目录遍历的正则表达式减少了“ .../... //”至“ ../”。
畸形的REGEXP语法导致错误消息中的信息暴露。
注射代码由于不当引用正则表达式。
NULL BYTE绕过PHP RegexP检查。
NULL BYTE绕过PHP RegexP检查。
+潜在的缓解

阶段:建筑和设计

策略:重构

正式表达式在定义复杂的语言时,即使对于那些撰写语法的人,也可能会变得容易出错。确定几个较小的正则表达式是否简化了一个大的正则表达式。同样,将正则表达式视为彻底的测试技术,例如等效分配,边界价值分析和鲁棒性。在测试并达到了合理的置信度之后,正则表达方式可能无法万无一失。如果允许漏洞滑动,请记录利用并重构正则表达式。
+会员资格
部分帮助此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
自然 类型 ID 姓名
成员 看法查看 - CWE条目的子集,提供了一种检查CWE内容的方法。两个主视图结构是切片(平面列表)和图(包含条目之间的关系)。 884 CWE横截面
成员 类别类别 - 包含共享共同特征的其他条目的CWE条目。 990 SFP辅助群集:污染输入的命令
+笔记

关系

尽管允许清单/否认的问题有一些重叠,但该条目旨在处理错误的书面正则表达式,无论其预期用途如何。并非每个正则表达式都用于用作允许列表或否定者。此外,除正则表达式外,还可以使用其他机制来实施允许清单和否认者。

研究差距

REGEXP错误可能是许多MFV的主要因素,尤其是那些需要多次操纵的MFV。但是,他们很少在这个细节上被诊断出来。
+分类映射
映射的分类名称 节点ID 合身 映射的节点名称
plover 正则表达式错误
+参考
[Ref-7] Michael Howard和David LeBlanc。“编写安全代码”。第10章,“使用正则表达式检查输入”第350页。第二版。Microsoft Press。2002-12-04。<https://www.microsoftpressstore.com/store/writing-secure-code-9780735617223>。
+内容历史记录
+提交
提交日期 提交者 组织
2006-07-19 plover
+修改
修改日期 修饰符 组织
2008-07-01 埃里克·达奇(Eric Dalci) 雪茄
更新的time_of_introduction
2008-09-08 CWE内容团队 MITER
更新的描述,名称,关系,obsoved_example,other_notes,gualomy_mappings
2009-12-28 CWE内容团队 MITER
更新的common_cconsquences,other_notes
2010-02-16 CWE内容团队 MITER
更新的引用
2010-04-05 CWE内容团队 MITER
更新的描述
2011-03-29 CWE内容团队 MITER
更新了观察到的examples
2011-06-01 CWE内容团队 MITER
更新的common_cconsquences
2012-05-11 CWE内容团队 MITER
更新了Dexplyative_examples,Related_attack_patterns,关系
2012-10-30 CWE内容团队 MITER
更新的势_MINEIGATIONS
2014-06-23 CWE内容团队 MITER
更新已更新的适用_platforms,common_consequences,other_notes,relatess_notes
2014-07-30 CWE内容团队 MITER
更新的示范_examples,关系
2015-12-07 CWE内容团队 MITER
更新的关系
2017-11-08 CWE内容团队 MITER
更新的引用
2018-03-27 CWE内容团队 MITER
更新的引用
2019-06-20 CWE内容团队 MITER
更新相关的_attack_patterns,关系,类型
2020-02-24 CWE内容团队 MITER
更新的关系,类型
2020-06-25 CWE内容团队 MITER
更新的关系_notes
2021-03-15 CWE内容团队 MITER
更新的关系
2022-10-13 CWE内容团队 MITER
更新的示范_examples,关系
2023-01-31 CWE内容团队 MITER
更新的描述
+先前的输入名称
改变日期 先前的输入名称
2008-09-09 正则表达式错误
提供更多信息 - 请选择其他过滤器。
页面最后更新:2023年1月31日