G.O.S.S.I.P 阅读推荐 2022-10-27 Acquirer

admin 2022年10月29日09:15:16评论35 views字数 2106阅读7分1秒阅读模式
今天为大家推荐的论文是来自香港中文大学计算机安全实验室投稿的关于识别可能易受算法复杂度DoS攻击的代码块的最新工作Acquirer: A Hybrid Approach to Detecting Algorithmic Complexity Vulnerabilities。
G.O.S.S.I.P 阅读推荐 2022-10-27 Acquirer

背景介绍
算法复杂度拒绝服务(DoS)攻击是一种危害性尤其严重的DoS攻击,它利用目标服务器代码中使用的不高效算法,提供触发其最高复杂度的输入,以实现消耗目标服务器计算资源的目的。
在传统的DoS攻击中,攻击者向目标服务器发送包含任意输入的请求。目标服务器将按照常规流程处理这些请求,并在一定的时间内做出响应。要显著消耗目标服务器的计算资源,攻击者必须重复或同时发送许多请求。目标服务器可以容易地检测到这些异常请求。算法复杂度DoS攻击则很难被检测到。攻击者向目标服务器发送的是精心编制的请求,每个请求都将导致目标服务器长时间挂起。攻击者仅使用几个简单的请求就可以消耗目标服务器的大量计算资源。这放大了攻击者的能力,使其比传统的DoS攻击更具危害性。
G.O.S.S.I.P 阅读推荐 2022-10-27 Acquirer
现有的检测算法复杂度DoS攻击的方法或是只针对于某一种具体类型的算法复杂度DoS,适用范围很小;或是使用通用的模糊测试、符号测试的方法,检测效率低。这种低效一方面是因为可能的程序执行路径过多,无法从中有效分辨出能导致算法复杂度DoS的程序执行路径,另一方面是因为针对不同程序制定一个统一的检测标准很困难。不同的程序预计的返回时间不同,为了降低误报率,现有方法使用了较大的超时设定(timeout),这不但降低了单个问题的检测效率、也增加了漏报率。一些研究人员使用循环分析的知识构建算法复杂度漏洞的静态分析器。然而据作者的了解,此类静态分析仪具有较高的误报,并需要许多的人力工作来进行漏洞验证。
这篇文章致力于结合静态分析与动态分析来提升现有算法复杂度漏洞检测工具的效率。
作者提出了一种广泛适用的代码模式,用于识别可能易受算法复杂度DoS攻击的代码块。这能帮助快速高效地定位程序中存在风险的代码块。在此基础上,使用符号执行来进一步分析这些代码块。文章中的工具ACQUIRER自动构建动态符号执行必要的调用上下文,并生成测试模块,随后对目标程序进行插装。针对插装后的程序,执行选择性动态符号执行,以有效地验证前一步检测到的高危代码块中是否存在具有显著复杂度差异的两条不同程序执行路径。
相比之前工作设定一个固定的超时作为漏洞检测标准,ACQUIRER通过比较同一代码块两条路径的相对差值来判定是否存在漏洞,更加准确高效。
设计与实现
作者实现了用于检测Java程序中算法复杂度漏洞的混合分析工具ACQUIRER。下图展示了ACQUIRER系统的系统总览图。ACQUIRER系统由静态分支策略生成、动态选择性符号执行、可选循环过滤与测试模块生成四个部分构成。
G.O.S.S.I.P 阅读推荐 2022-10-27 Acquirer
1. 静态分支策略生成
在Java控制流图的基础上,作者通过静态分析找到三类程序分支,如循环的for/while条件式。对于这些分支来说,选择其中的一条路径相对于选择另一条路径会带来更多的指令执行。作者将这些分支的选择记录为策略。使用这些策略,可以获知应该选择哪个分支以生成快速路径和慢速路径。详细的程序分支模式请参考ACQUIRER论文正文。
2. 动态选择性符号执行
在分支策略的指导下,作者进行动态符号执行以找到两条长度非常不同的快速和慢速路径。作者使用约束求解来检查路径的有效性,并检查两条路径执行指令数的绝对和相对差是否足够高,若是,较长路径可以被视为一个算法复杂度漏洞。作者通过实验确定了适合检测多种程序的绝对和相对差标准。
3. 可选循环过滤
为了进一步提高工具的效率,作者在执行分析之前进行代码插装。以Java程序的源代码作为输入,收集循环并进行循环过滤,只关注有潜在漏洞的循环。作者过滤了复杂度固定的循环或不可从指定程序入口到达的循环。
4. 测试模块生成
为了将ACQUIRER应用于自动测试大规模的web应用程序,作者实现了自动化的测试模块生成,并在测试模块中只保留必要的调用上下文,以提高检测效率并确保有效性。现有的工具要么无法保存调用上下文,要么需要手动构建测试模块。作者还在符号插装中使用了合理的近似替换,以处理约束解算器无法解决的某些情况。
性能评估
作者使用两个广泛使用的数据集WISE和STAC对ACQUIRER进行了充分的性能评估。作者将ACQUIRER与四种最先进的工具进行了比较,它可以检测到几乎所有其它工具能检测到的漏洞并检测出一些新漏洞。与最先进的工具HotFuzz相比,它可以在33%的分析时间内检测出3.4倍的漏洞。
G.O.S.S.I.P 阅读推荐 2022-10-27 Acquirer
作者进一步在GitHub上46个流行的开源Java网络应用程序上应用ACQUIRER,并发现了11个新的漏洞。根据作者的评估结果表明,ACQUIRER可以有效且高效地检测算法复杂度DoS漏洞。


论文下载:
https://seclab.cse.cuhk.edu.hk/papers/ccs22_acquirer.pdf

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2022-10-27 Acquirer

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月29日09:15:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2022-10-27 Acquirerhttps://cn-sec.com/archives/1376160.html

发表评论

匿名网友 填写信息