CWE-185:不正确的正则表达式
查看自定义信息:
![]() ![]()
![]() 语言 班级:不是特定语言的(不确定的患病率) ![]()
示例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错误可能是许多MFV的主要因素,尤其是那些需要多次操纵的MFV。但是,他们很少在这个细节上被诊断出来。
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |