cwe - 625:宽容的正则表达式
视图定制的信息:
这实际上导致regexp接受子字符串匹配的模式,产生部分比较到目标。在某些情况下,这可能会导致其他的弱点。常见的错误包括:
![]() ![]()
![]() ![]()
![]()
![]() 语言 Perl患病率(待定) PHP患病率(待定) ![]()
示例1 下面的代码将电话号码作为输入,并使用一个正则表达式拒绝无效的电话号码。
(坏的代码)
例如语言:Perl
$电话= GetPhoneNumber ();
如果美元的手机= ~ / \ d + - \ d + /) {
#看起来只有连字符和数字
}系统(“lookup-phone $电话"); 其他{
错误(“畸形数!”); }攻击者可以提供一个参数如:”;ls - l;回声123 - 456”这将通过检查,因为“123 - 456”足以匹配“\ d + - \ d +“正则表达式的一部分。 示例2 这段代码使用正则表达式来验证一个IP字符串之前使用它在一个叫“ping”命令。
(坏的代码)
例如语言: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命令将八进制zero-prepended IP地址 结果=子流程。调用((“平”,验证)) 打印(结果) 由于正则表达式没有锚(cwe - 777),即无限没有^和$字符,然后将一个0或0 x的IP地址仍将导致匹配正则表达式模式。自从ping命令支持八进制和十六进制将IP地址,它将使用出人意料地有效的IP地址(cwe - 1389)。例如,“0 x63.63.63.63”会被认为相当于“99.63.63.63”。因此,攻击者可能会平系统,攻击者不能直接到达。
![]()
更多的信息是可用的,请选择一个不同的过滤器。
|
使用常见的弱点枚举(CWE)和相关的引用从这个网站的使用条款。CWE赞助的美国国土安全部(DHS)网络和基础设施安全机构(CISA)和管理的国土安全系统工程和发展研究所这是由(HSSEDI)manbetx客户端首页(斜方)。版权©2006 - 2023,斜方公司。manbetx客户端首页CWE、水煤浆、CWRAF, CWE标志是斜方公司的商标。manbetx客户端首页 |