本发明专利技术涉及源代码检测技术领域,特别涉及一种源代码中易受攻击的正则表达式的检测方法。步骤一、在环境中导入所有正则表达式的库文件myregexes.txt,只导入库文件中自动编译的正则表达式;步骤二、使用正则表达式列表进行正则开发,通过标准输入正则表达regexploit传入正则参数,通过cat myregexes.txt|regexploit库文件提取正则表达式;启动参数AST解析源代码,查找正则表达式,然后对ReDoS分析正则表达式;步骤三、使用捆绑的NodeJS包将JavaScript解析为AST并打印出所有正则表达式,这些正则表达式被输入到python ReDoS查找器中;步骤四、通过命令运行工具。本发明专利技术提供了一种源代码中失陷正则表达式检测方法,以助于开放者节省源代码审计时间规避安全风险。开放者节省源代码审计时间规避安全风险。开放者节省源代码审计时间规避安全风险。
【技术实现步骤摘要】
一种源代码中易受攻击的正则表达式的检测方法
[0001]本专利技术涉及源代码检测
,特别涉及一种源代码中易受攻击的正则表达式的检测方法。
技术介绍
[0002]随着越来越多的开发人员使用了正则表达式来对用户输入的数据进行有效性校验,当编写校验的正则表达式存在缺陷或者不严谨时,攻击者可以构造特殊的字符串来大量消耗服务器的系统资源,造成服务器的服务中断或停止。
[0003]许多默认的正则表达式解析器具有无限的最坏情况复杂性。当呈现匹配的输入字符串时,正则表达式匹配可能会很快。但是,某些不匹配的输入字符串会使正则表达式匹配器进入疯狂的回溯循环,并且需要很长时间来处理。这可能会导致拒绝服务,因为CPU将卡住尝试匹配的正则表达式。
[0004]例如正则表达式/(a+)+z/.test('aaaaab')浏览器很快给出结果false,如果正则表达式为/(a+)+z/.test('aaaaaaaaaaaaaaaaaaaaaaaa
‘
)浏览器也许半小时都出不来结果,且观察cpu处于高占用率状态,同时浏览器当前Tab页无任何响应(只能强制关闭)。
[0005]现有技术的缺陷是正则表达式检测往往需要结合白盒审计,人工渗透测试以及代码审计等技术。从静态入手检测缺陷正则表达式,该方法准确性高。现有技术需要人工鉴别,耗时多,成本高,较难挖掘源代码中缺陷的正则表达式。
技术实现思路
[0006]本专利技术要解决的技术问题是提供一种有助于开放者节省源代码审计时间规避安全风险,该方法能够实现从源代码中提取正则表达式,扫描它们并找到ReDos,通过命令行操作、速度快且有效性高的优点。
[0007]为了解决上述技术问题,本专利技术的技术方案为:一种源代码中易受攻击的正则表达式的检测方法,包括以下步骤:
[0008]步骤一、在环境中导入所有正则表达式的库文件myregexes.txt,只导入库文件中自动编译的正则表达式
[0009]步骤二、使用正则表达式列表进行正则开发,通过标准输入正则表达regexploit传入正则参数,通过cat myregexes.txt|regexploit库文件提取正则表达式;启动参数AST解析源代码,查找正则表达式,然后对ReDoS分析正则表达式;
[0010]步骤三、使用捆绑的NodeJS包将JavaScript解析为AST并打印出所有正则表达式,这些正则表达式被输入到python ReDoS查找器中;
[0011]步骤四、通过命令运行工具。
[0012]优选地,所述提取正则表达式包括从Python、JavaScript、TypeScript、C#、JSON和YAML中提取正则表达式。
[0013]优选地,所述提取正则表达式是用正则表达式列表进行正则开发,通过标准输入
正则表达regexploit传入正则参数,通过cat myregexes.txt|regexploit库文件提取正则表达式。
[0014]优选地,所述正则表达式是基于JavaScript、C#语言实现检测到受ReDoS攻击的正则表达式。
[0015]与现有技术相比,本专利技术的有益效果为:
[0016]本专利技术提供了一种源代码中失陷正则表达式检测方法,以助于开放者节省源代码审计时间规避安全风险,该方法可以开发成一个工具,将其安装在虚拟环境下,使用pip安装,实现从源代码中提取正则表达式,扫描它们并找到ReDos,通过命令行操作、速度快且有效性高的。
附图说明
[0017]图1为典型的正则表达式;
[0018]图2为本专利技术的方法流程图。
具体实施方式
[0019]下面结合附图对本专利技术的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本专利技术,但并不构成对本专利技术的限定。此外,下面所描述的本专利技术各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
[0020]本专利技术可以开发成一个工具,其内置支持从Python,JavaScript,TypeScript,C#,JSON和YAML中提取正则表达式。本专利技术是从代码中提取正则表达式,扫描它们并找到ReDoS。该专利技术的实现步骤如下:
[0021]步骤一、在环境中导入所有正则表达式的库文件myregexes.txt,只导入库文件中自动编译的正则表达式;
[0022]步骤二、使用正则表达式列表进行正则开发,通过标准输入正则表达regexploit传入正则参数,通过cat myregexes.txt|regexploit库文件提取正则表达式;
[0023]启动参数AST解析源代码,查找正则表达式,然后对ReDoS分析正则表达式;
[0024]步骤三、使用捆绑的NodeJS包将你的JavaScript解析为AST并打印出所有正则表达式,这些正则表达式被输入到python ReDoS查找器中。
[0025]步骤四、通过命令运行工具,事件1:被检测的正则表达式能够完成匹配,它会返回“找不到ReDos”。事件2:如果检测的正则表达式不匹配,会检测回溯时间,如果回溯时间大于5秒,则返回易受攻击的正则表达式,请进一步核对;事件3:检测正则表达式复杂度,若复杂度大于阈值,则返回易受攻击的正则表达式,请进一步核对。事件4:如果检测到不信任的正则表达式,返回告警信息。
[0026]以上结合附图对本专利技术的实施方式作了详细说明,但本专利技术不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本专利技术原理和精神的情况下,对这些实施方式进行多种变化、修改、替换和变型,仍落入本专利技术的保护范围内。
本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种源代码中易受攻击的正则表达式的检测方法,其特征在于,包括以下步骤:步骤一、在环境中导入所有正则表达式的库文件myregexes.txt,只导入库文件中自动编译的正则表达式步骤二、使用正则表达式列表进行正则开发,通过标准输入正则表达regexploit传入正则参数,通过cat myregexes.txt|regexploit库文件提取正则表达式;启动参数AST解析源代码,查找正则表达式,然后对ReDoS分析正则表达式;步骤三、使用捆绑的NodeJS包将JavaScript解析为AST并打印出所有正则表达式,这些正则表达式被输入到python ReDoS查找器中;步骤四、通过命令运行工具。2.根据权利要求1所...
【专利技术属性】
技术研发人员:段孟松,孙江兵,
申请(专利权)人:贵州多彩网安科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。