软件所陈海明团队在redos漏洞检测与修复技术上取得重要进展
来源:软件研究所|发布时间:2021-06-22|【 】
近日,中国科学院软件研究所陈海明团队在正则表达式拒绝服务攻击(redos)漏洞检测与修复技术上取得重要进展,设计研发当前最先进redos漏洞检测工具——redoshunter,提出首个抗redos漏洞正则表达式修复工具——flashregex,不仅解决了静态与动态redos检测工具的局限性,实现了正则表达式修复结果无redos漏洞的突破,而且在性能上大幅提升并全面超越了现有最先进redos漏洞检测及修复工具,对redos漏洞挖掘、利用、修复及防御工作提供了便捷、高效、性能优越的重要工具。
redos漏洞检测工具——redoshunter
正则表达式在计算机科学领域中被广泛使用,但正则表达式拒绝服务攻击(redos)漏洞是一种常见且严重的算法复杂度攻击漏洞,并在近几年呈增长趋势。但现有的redos漏洞检测工具都存在准确率较低(误报多)或召回率较低(漏报多)的缺陷,产生这一缺陷的根本原因在于,给出全面的、形式化的redos漏洞检测条件这一挑战性问题未得到解决。
针对该问题,陈海明团队经过长期深入研究,通过对海量易受redos漏洞攻击的正则表达式的分析,创新性地系统提出了redos漏洞检测条件,即redos漏洞模式,并形式化地给出了触发这些模式的必要条件。基于上述工作,进一步提出了动静态结合的redos漏洞检测算法,并设计实现了redos漏洞检测工具——redoshunter。
redoshunter能够高效检测redos漏洞,实现诊断漏洞根本原因、分析漏洞严重程度、追踪漏洞位置并生成触发攻击的字符串等功能。在检测redos漏洞数量方面,redoshunter超越现有最先进工具,在corpus, regexlib, snort三个大型数据集(共计37651个正则表达式)上实现了100%的准确率和召回率。在检测redos漏洞相关的cves(common vulnerabilities and exposures通用漏洞披露)方面,现有最先进的检测算法只能检测出60%的redos相关的cves,redoshunter能成功检测出100%的cves。由于redoshunter的卓越性能,目前软件所在redos相关的cves披露数量排名中位居国际首位。
此外,redoshunter 的应用对于寻找、纠正广大的开源社区的redos漏洞发挥了重大作用。该工具已应用在python源码、ckeditor和prismjs等开源项目的redos漏洞检测中。同时,该团队与知名安全公司snyk建立了长期的合作关系,共同致力于高效披露redos漏洞。在已发现的200多个尚未被披露的漏洞中,截至目前已获批了27个cves, 并收到多个项目的官方致谢。
相关研究成果以为题被usenix security 2021会议录用。论文第一作者为博士生李页霆,论文通讯作者为陈海明研究员。
redoshunter工具检测流程实例
redos漏洞检测工具在三大数据集上的识别效果比较
抗redos漏洞正则表达式修复工具——flashregex
正则表达式以难以掌握著称,其现有的自动化合成与修复工作均忽略了redos漏洞,使其结果可能受到该漏洞的攻击。
针对该问题,陈海明团队提出了首个抗redos漏洞正则表达式的合成与修复算法,其通过去除正则表达式的歧义来生成或修复出无redos漏洞的正则表达式。为加速合成和修复过程,团队使用了确定性自动机和局部约束加强启发式策略,并且设计实现了相应的工具——flashregex。
与传统的人工修复相比,采用维护人员的修复方案得到的结果仍然经常有redos漏洞,而flashregex能够高效地生成或修复出无redos漏洞的正则表达式,修复的所有正则表达式中发现的redos漏洞数量为0。
该工具已应用到实际开源项目中修复redos漏洞,得到postccs、nltk和python源码等十多个项目维护者及知名安全公司snyk的一致认可或致谢。
相关研究成果以为题在ase 2020会议上发表。论文第一作者为博士生李页霆,论文通讯作者为陈海明研究员。
flashregex工具修复流程
附件下载: