G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarks

admin 2024年9月25日21:25:01评论6 views字数 2073阅读6分54秒阅读模式

先插播一则7月16日的新闻:

神秘技术故障导致数百架无人机掉进了墨尔本的雅拉河里。这些无人机原本是一场体育比赛前的灯光秀的一部分,但因为未知原因无人机中断程序掉进了附近的雅拉河。拥有这些无人机的 Australian Traffic Network(ATN)称它起飞了 500 架无人机,有多达 350 架无人机未能返回。它表示此前完成了数百场演出,第一次遭遇此类技术故障。ATN 的 Vic Lorusso 称,坠落的无人机未造成任何伤害或财产损失。他说,无人机按照技术故障应急方法旋转降落,但不幸的是它们当时处于水面之上,所以降落在了河里。
https://www.abc.net.au/news/2023-07-16/hundreds-of-drones-plunge-into-yarra-river/102607576

如果ATN上周刚好参加了在墨尔本召开的ASIACCS会议,应该就知道原因了:

G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarks


言归正传,今天我们要介绍的正是ASIACCS 2023上面的一篇论文 Benchmarking the Benchmarks,这篇论文讨论了当前很多安全漏洞相关的benchmark套件(security-focused benchmark suite)的缺点(没错点名批评的就是你Juliet测试集),并且给出了一个更好的解决方案:

G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarks

我们先从当前这些包含了(可能是人造的)漏洞的benchmark套件的一个基本特点说起。这些benchmark套件一般包含两类test case——包含漏洞的叫做positive test case,不包含漏洞的叫做negative test case,这两类test case可以测试代码分析工具(特别是漏洞检测工具)的准确程度(一般都会考虑precision和recall指标,写论文的同学都懂得)。

然而,benchmark套件里面的许多test case颇有一点生编硬造的感觉,没有考虑代码运行的环境和相关的安全威胁模型,因此你可能根本没法说某个特定的例子到底算不算是漏洞。比如说,有一个Android APP中的代码会把敏感数据写入到自己的沙盒目录中的某个文件,如果按照传统的source-sink模型,这是一个标准的信息泄露(往外部文件泄露),但是在Android安全模型中,由于APP沙盒中的数据受到了强保护,到底这种信息泄露算不算漏洞呢?传统的benchmark套件在设计test case的时候,在这方面其实存在很大的不足之处。

本文作者设计了一个更好的撰写security test case的方法,基本的流程如下图所示。其中最重要的改进,是为test case引入相关的specification,对其安全假设(security assumption)进行描述。这个specification既可以用来指导exploit的生成,也可以指导生成相关的测试环境,这样就保证了benchmark套件更加符合现实情况。

G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarks

从上图中我们可以看出,在这篇论文中,最重要的两个方面的工作,一个是specification怎么描述,另一个是specification相关的测试代码和测试环境如何生成。我们首先关注第一个点,作者开发了名为SecExploitLang的描述语言,用来精确刻画test case的安全威胁模型。它可以指定26种不同的attack pattern(例如下面的Listing 1),然后给出一个具体的test case描述(例如下面的Listing 2)

G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarks

G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarks

除了对安全威胁模型的描述,作者还开发了两个组件,一个叫做Exploiter exploit generator,可以根据特定的SecExploitLang specification来生成相关的exploit代码;另一个叫做test environment generator,用来生成特定的docker container,专为test case和exploit代码提供可复现的运行环境。关于这两个组件,可以参考Section 3.4和3.5来了解更多细节。

当然,作者这篇论文的研究局限于Java代码,他们的实验针对Juliet和OWSAP提供的Java安全测试套件,对这些套件中的test case的不足进行了总结。论文的第五章进行了详细的讨论,但是对我们推荐文章来说有点太啰嗦了,所以略过这部分内容,有兴趣的读者可以自己去看看细节。

G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarks

本文美中不足的一点在于,尽管作者对现有benchmark套件的缺点进行了评估,却没有把自己的SecExploitLang进行更详细的介绍,读者只能在相关的GitHub repo里面去自己寻找答案了:

https://github.com/Fraunhofer-SIT/AsiaCCS2023-BenchmarkingTheBenchmarks


论文:https://dl.acm.org/doi/10.1145/3579856.3582830

 

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarks

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月25日21:25:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-07-17 Benchmarking the Benchmarkshttps://cn-sec.com/archives/1884966.html

发表评论

匿名网友 填写信息