软件工程学术顶会——ASE 2022 论文(网络安全方向)清单、摘要与总结

bb6f4a6a94cc911806e978ec8e6d7bd5.png

总结

热门研究方向

  1. 基于深度学习的漏洞检测技术:多篇论文探讨了如何利用深度学习模型来检测代码中的安全漏洞,例如VDet for Java,ReVulDL等,以及多篇论文探讨了如何设计更高效和自动化的模糊测试技术,例如基于强化学习的漏洞引导模糊测试,语法无关的数据库管理系统模糊测试等。这显示出基于深度学习进行漏洞挖掘的研究热点方向。

  2.  自动程序修复技术:多篇论文探讨了如何利用机器学习和程序分析技术来自动修复程序缺陷,例如TransRepair, SelfAPR等。这显示程序自动修复是一个热点方向。

  3. 移动应用的隐私保护:多篇论文详细讨论了移动增强现实应用中的用户隐私问题,这显然是一个备受关注的研究领域。

冷门研究方向

  1. 交叉生态系统漏洞影响分析。例如Insight论文分析了不同软件生态系统中的组件之间的漏洞传播问题。

  2. 开发者之间的不友好交流检测。例如ToxiCR论文探讨了如何检测开发者代码review时的不友好言论。

  3. 游戏安全。例如利用区块链技术提高游戏资产交易的安全性。

  4. 自驾车测试平台:论文4介绍了一个名为ADEPT的自动驾驶系统的模拟测试平台,这个领域相对较少研究。

未来值得研究的方向

  1. 人工智能系统的可解释性和可信性。多个论文提出了评估和提高自动驾驶系统安全性的技术。这显示确保人工智能系统安全可靠是一个重要方向。此外,随着深度学习技术的发展,如何利用深度学习进行更有效的软件漏洞检测也将是一个重要的研究方向。

  2. 移动应用和IoT系统的隐私保护。例如分析移动App对隐私的态度,检测过度访问问题等。保护用户隐私是一个重要方向。

  3. 实用的安全解决方案的研发。例如在自动化流程中结合人工,开发轻量级可靠的安全工具等。提高安全技术应用效果也很关键。

未来安全发展趋势和应对建议

随着技术的发展,网络安全将更加依赖于自动化和智能化的技术,如深度学习和机器学习。此外,随着物联网、云计算等新技术的广泛应用,网络安全将需要在更多层面和更大范围内进行保护。未来的发展趋势是安全需要更多地与其他质量属性以及社会因素结合考虑,通过持续的创新不断提高整体的可靠性和可信度。当前的安全研究需要更加关注用户需求,考虑实际应用场景,开发简单实用的技术和工具,并与其他研究领域加强交流合作。

1967a5155090a1aee9e55c3bef20a155.png

1、A Novel Coverage-guided Greybox Fuzzing based on Power Schedule Optimization with Time Complexity

覆盖引导的灰盒模糊测试被认为是一种检测软件漏洞的实用方法,其目标是尽可能扩大代码覆盖率。常见的实现方法是为那些能够在较短的执行时间内找到新边界的种子分配更多的能量。然而,仅考虑新边界可能效果较差,因为在程序的复杂代码中经常存在一些难以发现的分支。代码复杂性是衡量代码安全性的关键指标之一。与结构简单的代码相比,代码复杂性较高的程序更容易发现更多的分支并引发安全问题。本文提出了一种新颖的模糊测试方法,在AFL(American Fuzzy Lop)和AFLFAST(American Fuzzy Lop Fast)中进一步利用代码复杂性来优化能量调度过程。我们方法的目标是生成更偏向于被测试程序中代码复杂性较高的输入。此外,我们在三个广泛使用的真实世界程序下进行了初步实证研究,实验结果表明所提出的方法可以触发更多的崩溃,并提高覆盖率的发现。

论文链接:https://doi.org/10.1145/3551349.3559550

95bafc3c872ee7430ecb99ca9398e40f.png

2、A Study of User Privacy in Android Mobile AR Apps

随着增强现实(AR)技术的发展,移动AR应用程序(MAR应用)在人们日常生活的各个方面,如游戏、购物和教育中迅速增长。与传统应用程序相比,AR应用程序通常需要始终访问智能手机的摄像头,并收集和分析更多的数据,如传感器数据、地理位置和生物识别信息。由于MAR应用程序收集的数据的敏感性和量级,引发了新的隐私关注。本文描述了一项关于Android MAR应用程序的初步实证研究,重点关注MAR应用程序所收集的敏感数据,收集的数据是否受到良好保护,以及数据实践是否公开可见,以便用户了解数据安全并在决定安装哪些应用程序时做出明智决策。在本研究中,我们分析了390个真实的MAR应用程序,并报告了它们请求的危险权限、检测到的数据泄露情况以及其数据安全的可用性。

论文链接:https://doi.org/10.1145/3551349.3560512

051301f1fcaa293a4bb1344991721b50.png

3、A transformer-based IDE plugin for vulnerability detection

自动漏洞检测对于提高应用程序的安全性至关重要,并应在软件开发生命周期(SDLC)的早期阶段进行,以降低风险。尽管在软件漏洞检测方面,最先进的深度学习技术取得了进展,但开发环境尚未充分利用其性能。在这项工作中,我们将Transformer架构与自然语言处理的深度学习进展中的主要亮点之一结合在一起,开发了一个面向开发人员的代码安全工具:VDet for Java。VDet for Java是基于Transformer的VS Code扩展,可帮助用户发现Java文件中的漏洞。我们的初步模型评估显示,多标签分类的准确率达到了98.9%,并且可以检测出多达21种漏洞类型。我们的工具演示视频可在[https://youtu.be/OjiUBQ6TdqE找到 ↗](https://youtu.be/OjiUBQ6TdqE找到),源代码和数据集可在[https://github.com/TQRG/VDET-for-Java获取 ↗](https://github.com/TQRG/VDET-for-Java获取)。

论文链接:https://doi.org/10.1145/3551349.3559534

5667c4f5297cbd552ecbd9c995fbe3e5.png

4、ADEPT: A Testing Platform for Simulated Autonomous Driving

最近,对自动驾驶系统(ADS)的有效质量保证方法引起了越来越多的关注。本文报道了一种新的测试平台ADEPT,旨在为基于深度神经网络的ADS提供实际可行的、全面的测试设施。ADEPT基于虚拟模拟器CARLA,提供了诸多测试设施,如场景构建、ADS导入、测试执行和记录等。特别是,ADEPT具有两种独特的自动驾驶测试场景生成策略。首先,我们利用真实事故报告,运用自然语言处理技术,创造了丰富的驾驶场景。其次,我们综合考虑ADS的反馈,合成了物理强健的对抗攻击,从而能够生成闭环测试场景。实验证实了该平台的有效性。

论文链接:https://doi.org/10.1145/3551349.3559528

4b85834d9c9540ea6c6e5ce5811e0e91.png

5、AST-Probe: Recovering abstract syntax trees from hidden representations of pre-trained language models

预训练语言模型的目标是学习文本数据的上下文表示。预训练语言模型已成为自然语言处理和代码建模的主流。使用探针技术研究隐藏向量空间的语言属性,先前的研究表明这些预训练语言模型在其隐藏表示中编码了简单的语言属性。然而,先前的工作没有评估这些模型是否编码了完整的编程语言的语法结构。本文证明了预训练语言模型的隐藏表示中存在一个语法子空间,其中包含编程语言的语法信息。我们展示了这个子空间可以从模型的表示中提取出来,并定义了一种新的探测方法,AST-Probe,可以恢复输入代码片段的完整抽象语法树(AST)。在我们的实验中,我们展示了这个语法子空间存在于五个最先进的预训练语言模型中。此外,我们强调模型的中间层承载了大部分AST信息。最后,我们估计了这个语法子空间的最佳大小,并展示其维度远远低于模型的表示空间。这表明预训练语言模型仅使用其表示空间的一小部分来编码编程语言的语法信息。

论文链接:https://doi.org/10.1145/3551349.3556900

514736ee98d7cc2c7741bef13f13d78f.png

6、ASTOR: An Approach to Identify Security Code Reviews

在代码审查中,软件开发人员经常提出安全问题的担忧。忽视这些问题可能会严重影响软件产品的性能。如果我们能够自动识别引发安全问题的代码审查,那么可以通过安全专家的额外审查来降低这一风险。因此,本研究的目标是开发一个自动化工具来识别引发安全问题的代码审查。为了实现这一目标,我开发了一种名为ASTOR的方法,其中结合了两个独立的基于深度学习的分类器——(i)使用代码审查评论和(ii)使用相应的代码上下文,并使用逻辑回归进行集成。基于分层十折交叉验证,最佳集成模型的F1分数为79.8%,准确率为88.4%,可以自动识别引发安全问题的代码审查。

论文链接:https://doi.org/10.1145/3551349.3559509

92e5954a88fc0c9961fffb1417cf5cab.png

7、AUSERA: Automated Security Vulnerability Detection for Android Apps

为了减少应用程序源代码的攻击面,许多工具专注于检测Android应用程序中的安全漏洞。然而,以往的研究中已经突出显示了一些明显的弱点。例如,大多数可用的工具(如AndroBugs、MobSF、Qark和Super)都使用基于模式的方法来检测安全漏洞。虽然它们在检测某些类型的漏洞方面很有效,但会引入大量的误报,不可避免地增加了应用程序开发者的修复负担。同样地,静态污点分析工具(如FlowDroid和IccTA)提供了数百个数据泄漏的漏洞候选项,而不是确认的漏洞。最后但并非最不重要的是,缺少一个相对完整的漏洞分类法,这将导致大量的漏报。在本文中,基于我们在这一研究领域的先前知识,我们经验性地提出了一个漏洞分类法作为基准,然后通过增强AUSERA的检测能力来扩展到50种安全漏洞类型。同时,构建了一个包含这50种漏洞类型的新基准数据集,以展示AUSERA的有效性。工具和数据集可在[https://github.com/tjusenchen/AUSERA找到 ↗](https://github.com/tjusenchen/AUSERA找到),并且演示视频可在[https://youtu.be/UCiGwVaFPpY找到 ↗](https://youtu.be/UCiGwVaFPpY找到)。

论文链接:https://doi.org/10.1145/3551349.3559524

78b787049162a488f9cb858d5707876a.png

8、An Empirical Study of Automation in Software Security Patch Management

多项研究表明,自动化支持安全补丁管理流程的不同活动具有减少安装安全补丁延迟的巨大潜力。然而,了解实际应用中如何使用自动化、其在满足现实需求方面的局限性以及从业者真正需要的内容同样重要,而这些方面在现有软件工程文献中尚未经过实证研究。本文报告了一项经验性研究,旨在通过与医疗领域三个不同组织的17名从业者进行半结构化访谈,调查安全补丁管理自动化的不同方面。研究结果聚焦于自动化在安全补丁管理中的作用,以洞察实际应用中自动化的现状、当前自动化的局限性、如何增强自动化支持以有效满足从业者需求,以及在自动化流程中人类的角色。基于研究结果,我们提出了一系列建议,指导未来发展自动化支持安全补丁管理的努力。

论文链接:https://doi.org/10.1145/3551349.3556969

2f43f8cd8a113335d410446334550d3d.png

9、Are they Toeing the Line? Diagnosing Privacy Compliance Violations among Browser Extensions

浏览器扩展作为现代浏览器中的集成特性,旨在提升在线浏览体验。它们在用户和互联网之间的有利位置使其能够轻松访问用户的敏感数据,这引起了立法者和扩展用户的日益关注的隐私问题。在本研究中,我们提出了一种端到端的方法,自动诊断扩展中的隐私合规违规行为。它分析隐私政策与法规要求的合规性以及运行时的实际隐私相关实践。这种方法可以作为一个高效而实用的隐私合规违规行为检测机制,为扩展用户、开发人员和应用商店运营商提供服务。我们的方法利用了最先进的语言处理模型BERT来注释政策文本,并采用混合技术来分析扩展的源代码和运行时行为。为了便于模型训练,我们构建了一个名为PrivAud-100的语料库,其中包含100个手动注释的隐私政策。我们的大规模诊断评估显示,绝大多数现有扩展都存在隐私不合规问题。其中约92%的扩展至少存在一个隐私政策或数据收集实践的违规行为。根据我们的发现,我们进一步提出了一个指标,以高准确性(超过90%)促进隐私不合规扩展的过滤和识别。我们的工作应该提高扩展用户、服务提供商和平台运营商的意识,并鼓励他们实施解决方案以更好地遵守隐私合规要求。为了促进未来在这一领域的研究,我们已经发布了我们的数据集、语料库和分析器。

论文链接:https://doi.org/10.1145/3551349.3560436

1dfd53d8ed8d51997e38848d6b61e8e2.png

10、Assessment of Automated (Intelligent) Toolchains

【摘要】

【背景:】自动智能工具链是由使用人工智能或静态分析的不同工具组成的,广泛应用于软件工程中的自动程序修复技术部署,或者软件安全中的漏洞识别。【整体研究问题:】大多数关于自动智能工具链的研究仅报告链中各个组件的不确定性和评估。我们如何计算整体自动化工具链的不确定性和错误传播?【方法:】我计划复制研究案例来收集数据,并设计一种方法来重构工具链的整体正确性度量,或者识别缺失的变量。进一步将进行人类的确认性实验。最后,我将实现一种工具来自动评估整体的自动化工具链。【当前状态:】对已发表的研究进行了初步验证,结果显示有希望。

论文链接:https://doi.org/10.1145/3551349.3559572

e2dc2e05a29a9008421f34010fd353a4.png

11、Augur: Dynamic Taint Analysis for Asynchronous JavaScript

动态污点分析(DTA)是一种流行的方法,用于帮助保护JavaScript应用程序免受注入漏洞的攻击。2016年,ECMAScript 7 JavaScript语言标准引入了许多语言特性,而大多数现有的JavaScript DTA工具并不支持,例如用于异步编程的async/await关键字。我们提出了Augur,一种针对ES7 JavaScript的高性能动态污点分析,利用了虚拟机支持的插装技术。通过直接集成到公共稳定的插装API中,Augur能够在虚拟机内部高性能运行,并且能够抵御语言的变更。我们将抽象机制扩展到DTA中以处理异步函数调用。除了提供传统的DTA用例,即检测注入漏洞,Augur还具有高度可配置性,支持任何类型的污点分析,在安全领域之外也非常有用。我们在一组20个基准测试中对Augur进行了评估,观察到中位数运行时开销仅为1.77倍,相比于先前的最新技术,性能提升中位数为298%。

论文链接:https://doi.org/10.1145/3551349.3559522

56dc482d8f23063e5ca9e381e11fdf3c.png

12、Auto Off-Target: Enabling Thorough and Scalable Testing for Complex Software Systems

每天数十亿人依赖于为操作系统内核、基带、引导程序、固件、物联网或汽车构建的软件系统。随着这些系统的复杂性不断增长,并且它们通常使用不安全的语言(如C/C++)编写,对这些系统进行测试至关重要。然而,测试这样复杂的系统存在重大挑战,例如没有仿真器的定制硬件,或在目标设备上进行测试和调试的非平凡设置。因此,常用的测试技术和工具并不总是容易适用。离线目标(OT)测试是一种有希望应对这些挑战的技术:将部分代码提取并适应在具有更好工具支持、更容易调试和更高测试吞吐量的不同硬件平台上运行。不幸的是,由于创建OT程序的过程一直是手动的,这种技术并没有很好地扩展,并且大多以特定方式使用。在本文中,我们提出了一种名为Auto Off-target(AoT)的新型复杂系统测试方法。基于从源代码和构建过程中提取的信息,AoT可以自动生成C语言的OT程序。AoT不仅仅是代码生成,还提供了帮助在OT代码中重新创建和发现程序状态的机制。生成的OT程序是自包含的,独立于原始构建环境。因此,复杂或嵌入式软件的部分可以在标准的x86_64机器上轻松运行、分析、调试和测试。我们在选自操作系统内核、引导程序和网络堆栈的数万个函数上评估了AoT。我们证明我们可以在大多数生成的OT程序上运行模糊测试和符号执行。我们还在一个漏洞发现活动中使用了AoT,并在为Google Pixel 5和6手机提供动力的Android redfin和oriole内核中发现了七个漏洞。

论文链接:https://doi.org/10.1145/3551349.3556915

774ae5d2c83cb6c612497de17e41dd06.png

13、Automated Identification of Security-Relevant Configuration Settings Using NLP

为了保护计算机基础设施,我们需要配置所有与安全相关的设置。我们需要安全专家来确定安全相关的设置,但这个过程耗时且昂贵。我们提出的解决方案利用最先进的自然语言处理技术,根据描述将设置分类为与安全相关的设置。我们的评估结果显示,我们训练的分类器的表现还不足以取代人类安全专家,但可以帮助他们对设置进行分类。通过发布我们标记的数据集和训练模型的代码,我们希望帮助安全专家分析配置设置,并促进该领域的进一步研究。

论文链接:https://doi.org/10.1145/3551349.3559499

efcde7e8a06a33d094cc20a97428123a.png

14、Automatic Software Timing Attack Evaluation & Mitigation on Clear Hardware Assumption

嵌入式系统广泛用于实现各种物联网(IoT)应用。这些应用通常涉及秘密/敏感数据和加密密钥,可能通过定时侧信道分析泄漏。基于运行时的定时侧信道攻击是通过测量代码执行所需的时间,并利用该信息提取敏感数据来实施的。由于软件代码在底层硬件上的运行时依赖性,有效地高精度低误报地检测此类漏洞是一项具有挑战性的任务。由于嵌入式系统的多样性,有效地低开销地修复此类漏洞也是一项非平凡的任务。在本文中,我们提出了一种自动运行时侧信道漏洞检测和缓解框架,不仅考虑软件代码,还利用底层硬件架构信息来调整框架,以实现更准确的漏洞检测和针对特定系统的定制缓解。

论文链接:https://doi.org/10.1145/3551349.3559516

784071b1b97c9ffb674fcf5325587c43.png

15、CBMC-SSM: Bounded Model Checking of C Programs with Symbolic Shadow Memory

动态程序分析工具(如Eraser、TaintCheck或ThreadSanitizer)将个别内存位置的内容进行抽象,并将抽象结果存储在称为影子内存的独立数据结构中。然后,它们利用这些元信息来高效地实现实际的分析。本文描述了一个用于CBMC有界模型检查器的高效符号影子内存扩展的实现方式,可以通过API进行访问,并概述了它在设计一种通过代码转换实现的新数据竞争分析器中的应用。工具链接:[https://doi.org/10.5281/zenodo.7026604 ](https://doi.org/10.5281/zenodo.7026604) 视频链接:[https://youtu.be/pqlbyiY5BLU](https://youtu.be/pqlbyiY5BLU)

论文链接:https://doi.org/10.1145/3551349.3559523

0b8b0f403df8192ba1ea0935f8db8693.png

16、CoditT5: Pretraining for Source Code and Natural Language Editing

预训练语言模型在许多与软件相关的生成任务中表现出了有效性;然而,它们不适用于编辑任务,因为它们没有设计用于编辑推理。为了解决这个问题,我们提出了一种新颖的预训练目标,明确地建模编辑,并使用它构建了CoditT5,一个在大量源代码和自然语言注释上进行预训练的用于软件相关编辑任务的大型语言模型。我们在各种下游编辑任务上对其进行了微调,包括注释更新、错误修复和自动化代码审查。通过超越标准的基于生成的模型,我们展示了我们方法的泛化能力和其适用于编辑任务的性能。我们还展示了标准生成模型和我们基于编辑的模型如何通过简单的重新排序策略相互补充,通过这种策略,我们在这三个下游编辑任务中实现了最先进的性能。

论文链接:https://doi.org/10.1145/3551349.3556955

bca78a41313c54c419bf4e25aef14a5c.png

17、Compiler Testing using Template Java Programs

我们提出了JAttack,这是一个用于编译器的基于模板的测试框架。使用JAttack,开发人员编写一个描述要生成并作为测试输入提供给编译器的一组程序的模板程序。这样的框架使开发人员能够将他们对于测试编译器的领域知识纳入其中,提供一个基本的程序结构,允许探索可以触发复杂编译器优化的复杂程序。开发人员在宿主语言(Java)中编写一个包含由JAttack填充的空缺的模板程序。每个空缺使用特定领域的语言编写,构建了一个扩展抽象语法树(eAST)中的节点。eAST节点定义了空缺的搜索空间,即一组表达式和值。JAttack通过执行模板并通过在空缺定义的搜索空间内随机选择表达式和值来生成程序。此外,我们引入了几种优化方法来减少JAttack的生成成本。虽然JAttack可以用于测试各种编译器功能,但我们展示了它在帮助测试即时(JIT)Java编译器方面的能力,这些优化在足够数量的执行之后在运行时发生。使用JAttack,我们发现了六个由Oracle开发人员确认的关键错误。其中四个以前是未知的,包括两个未知的CVE(通用漏洞和披露)。JAttack展示了将开发人员的领域知识(通过模板)与随机测试相结合以检测JIT编译器中的错误的能力。

论文链接:https://doi.org/10.1145/3551349.3556958

a13403ae33a05cd4be34632a4d201977.png

18、Cornucopia : A Framework for Feedback Guided Generation of Binaries

二进制分析是许多安全和软件工程应用所需的重要功能。因此,存在许多具有不同能力的二进制分析技术和工具。然而,测试这些工具需要一个大而多样的二进制数据集,其中包含相应的源代码级信息。本文介绍了Cornucopia,这是一个与架构无关的自动化框架,可以利用编译器优化和反馈引导学习从相应的程序源代码生成大量的二进制文件。我们的评估结果显示,Cornucopia能够在四种架构(x86、x64、ARM、MIPS)上生成309K个二进制文件,每个程序平均生成403个二进制文件,并且优于类似的技术BinTuner \[53\]。我们的实验揭示了LLVM优化调度器的问题,导致编译器崩溃(约300次)。我们对四个流行的二进制分析工具angr、Ghidra、ida和radare进行了评估,使用Cornucopia生成的二进制文件,发现了这些工具的各种问题。具体而言,我们在angr中发现了263个崩溃问题和ida中的一个内存损坏问题。我们对分析结果进行的差异测试揭示了这些工具中的各种语义错误。我们还测试了声称捕捉二进制语义的机器学习工具Asm2Vec、SAFE和Debin,并发现它们在Cornucopia生成的二进制文件上表现不佳(例如,Debin的F1分数从报告的63.1%下降到了12.9%)。总之,我们详尽的评估结果显示,Cornucopia是一种有效的机制,可以有效地生成用于测试二进制分析技术的二进制文件。

论文链接:https://doi.org/10.1145/3551349.3561152

c3304c2d0dda75fd3e598a9fc7c26f98.png

19、Coverage-based Greybox Fuzzing with Pointer Monitoring for C Programs

C语言一直被视为系统软件实现的主要编程语言。然而,由于其低级内存控制,C语言经常面临各种内存漏洞的困扰。为了增强内存安全性,已经提出了许多方法,其中基于覆盖率的灰盒模糊测试(CGF)因其实用性和令人满意的效果而非常流行。然而,CGF基于捕获的崩溃来识别漏洞,因此无法检测非崩溃的漏洞。本文考虑通过追踪指针元数据(状态、边界和引用)来检测更多的漏洞。此外,由于C语言中的指针通常直接与内存操作相关,我们设计了两个标准,进一步利用指针元数据作为CGF的指导,使模糊测试过程针对程序的易受攻击部分。

论文链接:https://doi.org/10.1145/3551349.3559566

f8d64771dd7bab9f058fffe004d1754e.png

20、CrystalBLEU: Precisely and Efficiently Measuring the Similarity of Code

近年来,对于预测源代码的工作出现了一股热潮,例如代码补全、代码迁移、程序修复或将自然语言翻译成代码。所有这些工作面临着一个挑战,即如何评估预测结果的质量,通常以参考解决方案的形式来衡量。一种常见的评估指标是BLEU分数,这是一种基于n-gram的指标,最初用于评估自然语言翻译,但在软件工程领域得到了采用,因为它可以在任何编程语言上进行简便计算,并且可以进行大规模的自动化评估。然而,自然语言和编程语言之间的一个关键区别在于,在编程语言中,完全不相关的代码片段可能有许多共同的n-gram,仅仅是因为编程语言的语法冗长和编码惯例。我们观察到,这些毫无意义的共享n-gram妨碍了该指标区分真正相似的代码示例和仅仅是以相同语言编写的代码示例的能力。本文提出了一种基于BLEU的评估指标CrystalBLEU,可以精确高效地衡量代码的相似性。我们的指标保留了BLEU的有益特性,例如与语言无关、能够处理不完整或部分不正确的代码,并且计算效率高,同时减少了由毫无意义的共享n-gram引起的干扰。我们在两个先前工作的数据集和一个新的带标签的等价程序数据集上评估了CrystalBLEU。结果显示,与原始BLEU分数和先前提出的针对代码的BLEU变体相比,CrystalBLEU能够有效地区分相似和不相似的代码示例,效果提高了1.9-4.5倍。

论文链接:https://doi.org/10.1145/3551349.3556903

b4454abe6d440123f4eba9c4a16b9b6b.png

21、Dancing, not Wrestling: Moving from Compliance to Concordance for Secure Software Development

近年来,安全软件开发成为研究的一个越来越重要的焦点,这与人工智能(AI)、机器学习(AI/ML)、机器人技术以及自主系统(RAS)等技术的进步密切相关。AI/ML和RAS促进了自动化决策,并且具备对社会产生重大影响的能力。因此,这项技术需要值得信赖,而安全软件开发是信赖的关键属性之一。软件开发人员常常负责交付安全代码,并承担责任和问责,但对于如何实现安全性往往没有决策权。决策权往往掌握在网络安全专业人员手中,他们指定安全流程、工具和培训,但往往取得有限的成功。我们的研究目标是更好地理解如何弥合软件开发人员和网络安全从业人员之间的差距,使决策权、责任和问责得到平等分享。我们从研究医疗保健领域的合规性、依从性和协调性的关系中获得了启示。我们将这项研究作为一种视角,通过对35位专业软件开发人员的定性数据进行分析。我们的研究表明,如果软件开发人员和网络安全专业人员在互动中达成协调,可能会导致更现实的网络安全解决方案的协商,并消除软件开发人员的困扰,最终实现更安全、值得信赖的系统。

论文链接:https://doi.org/10.1145/3551349.3561145

123f8869348e34b463d6004b04696acb.png

22、Data Leakage in Notebooks: Static Detection and Better Processes

数据科学中用于训练和评估机器学习模型的流程可能会像其他代码一样存在错误。训练数据和测试数据之间的泄漏可能会导致在离线评估中高估模型的准确性,从而可能导致在生产环境中部署低质量的模型。这种泄漏可能是由于错误或遵循不良实践而轻易发生,但手动检测可能会繁琐且具有挑战性。我们开发了一种静态分析方法,用于检测数据科学代码中常见的数据泄漏形式。我们的评估结果表明,我们的分析能够准确地检测到数据泄漏,并且在分析的10万多个公开笔记本中,这种泄漏是普遍存在的。我们讨论了我们的静态分析方法如何帮助从业者和教育者,以及如何将泄漏预防设计到开发过程中。

论文链接:https://doi.org/10.1145/3551349.3556918

397417e4ef29c870e57cf49f92bc8c74.png

23、Detecting Semantic Code Clones by Building AST-based Markov Chains Model

代码克隆检测旨在寻找功能相似的代码片段,在软件工程领域越来越重要。已经提出了许多代码克隆检测方法,其中基于树的方法能够处理语义代码克隆。然而,由于树结构的复杂性,这些方法很难扩展到大型代码。在本文中,我们设计了一种可扩展的基于树的语义代码克隆检测器Amian,通过构建马尔可夫链模型。具体而言,我们提出了一种将原始复杂树转化为简单马尔可夫链的新方法,并测量这些链中所有状态的距离。在获取所有距离值后,我们将它们输入到机器学习分类器中,训练一个代码克隆检测器。为了检验Amian的有效性,我们在两个广泛使用的数据集Google Code Jam和BigCloneBench上对其进行评估。实验结果表明,Amian优于九种最先进的代码克隆检测工具(即SourcererCC、RtvNN、Deckard、ASTNN、TBCNN、CDLH、FCCA、DeepSim和SCDetector)。

论文链接:https://doi.org/10.1145/3551349.3560426

6fd08bc5c9f8c4d035ff226caa2d5afd.png

24、Do Regional Variations Affect the CAPTCHA User Experience? A Comparison of CAPTCHAs in China and the United States

全球系统使用CAPTCHA作为安全机制,以保护免受未经授权的自动访问。通常,对CAPTCHA的有效性评估是基于其对抗机器人的能力。用户对交互体验和CAPTCHA的有效性的感知得到较少关注,尤其是对比世界各地不同地区所呈现的CAPTCHA变体。作为填补这一空白的第一步,我们进行了半结构化访谈,与十名中英文流利的参与者分别调查了用户感知是否受到在中国和美国呈现的CAPTCHA变体的影响。我们发现不同CAPTCHA类型在用户体验和有效性方面存在显著差异,但在同一类型的区域变体之间没有差异。我们的发现指出了使CAPTCHA用户体验更加普遍和包容的多种途径。

论文链接:https://doi.org/10.1145/3551349.3561146

d0e71db93db731a1eae2d3bd97717f8a.png

25、Effectively Generating Vulnerable Transaction Sequences in Smart Contracts with Reinforcement Learning-guided Fuzzing

随着计算机程序在区块链上运行,智能合约在众多去中心化应用中得以广泛应用,但也带来了安全漏洞,可能导致巨大的财务损失。因此,检测智能合约的漏洞非常关键和紧迫。然而,现有的智能合约模糊器仍然无法高效地检测到需要特定的易受攻击的交易序列来触发的复杂漏洞。为了应对这一挑战,我们提出了一种基于强化学习的创新漏洞引导模糊器,名为RLF,用于生成易受攻击的交易序列,以检测智能合约中的这些复杂漏洞。具体而言,我们首先将智能合约模糊的过程建模为一个马尔可夫决策过程,构建我们的强化学习框架。然后,我们创造性地设计了一个合适的奖励,同时考虑漏洞和代码覆盖率,以有效地引导我们的模糊器生成特定的交易序列来揭示漏洞,特别是与多个函数相关的漏洞。我们进行了大量实验来评估RLF的性能。实验结果表明,我们的RLF在30分钟内比现有的漏洞检测工具表现更好(例如,在30分钟内检测到了8%到69%更多的漏洞)。

论文链接:https://doi.org/10.1145/3551349.3560429

c94df45d474c415bcce3dc7e78a0c804.png

26、Efficient Greybox Fuzzing to Detect Memory Errors

灰盒模糊测试是一种被证明有效的测试方法,用于检测现代软件系统中的安全漏洞和其他错误。灰盒模糊测试也可以与地址消毒器(如AddressSanitizer)等组合使用,进一步提高对某些类别错误(如缓冲区溢出和使用后释放错误)的检测能力。然而,消毒器也会引入额外的性能开销,这可能会降低灰盒模式模糊测试的性能,例如使用ASAN进行模糊测试的性能可能会下降2.36倍,从而部分抵消了使用消毒器的好处。最近的研究将额外的开销归因于程序启动/关闭成本,这可能会主导fork模式的模糊测试。在本文中,我们提出了一种专门针对fork模式模糊测试进行优化的新型内存错误消毒器设计。基本思想是使用随机标记而不是传统消毒器设计中使用的不连续元数据来标记对象边界。然后,所有的读/写操作都被加装了检查标记的代码,如果存在标记,则会检测到内存错误。由于我们的设计不使用不连续的元数据,因此非常轻量级,这意味着为了fork模式模糊测试的好处而将程序的启动和关闭成本降到最低。我们以工具的形式实现了我们的设计,并展示了改进后的模糊测试性能开销为1.14-1.27倍,具体取决于配置。

论文链接:https://doi.org/10.1145/3551349.3561161

f09d289836585c7d6359b6707624ec0a.png

27、Empirical Study of System Resources Abused by IoT Attackers

近年来,物联网(IoT)设备频繁遭受攻击,造成严重影响。先前的研究通过离线样本分析展示了一些具体IoT恶意软件家族或IoT攻击阶段的演变和特征。然而,我们仍然缺乏对主动攻击者滥用的各种系统资源以及这些行为背后的恶意意图的系统观察。这使得难以设计适当的保护策略来抵御现有攻击和可能的未来变种。在本文中,我们通过分析由我们专门设计的高交互式IoT蜜罐HoneyAsclepius捕获的117,862个有效攻击会话来填补这一空白,并在我们设计的工作流中发现了意图。HoneyAsclepius能够在实时的主动攻击会话中具备高捕获能力和持续行为监控。通过大规模部署,我们收集到了来自50,594个不同攻击者的11,301,239个恶意行为。基于这些信息,我们进一步将行为分离为针对不同系统资源类别的不同攻击会话,并估计它们之间的时间关系并总结其恶意意图。受到这些调查的启发,我们提出了关于文件、网络、进程和特殊能力资源的滥用行为的几个关键见解,并进一步提出了实际的防御策略,以更好地保护物联网设备。

论文链接:https://doi.org/10.1145/3551349.3556901

aaf57b1bc4f86562eb2d102f19000c0c.png

28、Enriching Compiler Testing with Real Program from Bug Report

研究人员提出了各种生成测试程序的方法。最先进的方法可以大致分为基于随机和基于变异的方法:基于随机的方法生成随机程序,而基于变异的方法则通过变异程序生成更多的测试程序。这两种方法主要生成随机代码,但使用真实程序更有益,因为更容易学习编译器错误的影响,并且使用有效和无效代码是合理的。然而,大多数来自代码仓库的真实程序在触发编译器错误方面效果不佳,部分原因是它们在提交之前已经编译过。在这篇实验论文中,我们将差异测试和代码片段提取这两种技术应用于编译器测试的特定研究领域。基于我们对编译器测试实践的观察,我们将编译器的错误报告作为编译器测试的新来源。为了说明新来源的好处,我们实现了一个名为LeRe的工具,该工具从错误报告中提取测试程序,并使用差异测试来检测使用提取的程序时的编译器错误。在丰富了测试程序之后,我们在最新版本的gcc和clang中发现了156个独特的错误。其中,103个错误被确认为有效,9个错误已经修复。我们发现的错误包括59个接收无效程序的错误和33个拒绝有效程序的错误。新来源使我们能够检测到通常被先前方法忽视的接收无效和拒绝有效的错误。先前的方法很少报告这两种类型的错误。除了我们发现的错误,我们还对无效错误报告进行了分析。这些结果对于程序员在从一个编译器切换到另一个编译器时是有用的,并且对于研究人员在应用差异测试来检测更多类型的软件中的错误也提供了见解。

论文链接:https://doi.org/10.1145/3551349.3556894

19d1855ef6272c13186fc60f78a7b709.png

29、Finding Property Violations through Network Falsification: Challenges, Adaptations and Lessons Learned from OpenPilot

Openpilot是一个开源系统,通过提供自动车道居中和自适应巡航控制等功能来帮助驾驶员。与大多数自动驾驶系统类似,Openpilot依赖于一种复杂的深度神经网络(DNN)来提供其功能,而这种网络容易出现安全性问题,可能导致事故发生。为了在部署之前发现这种潜在的问题,我们研究了一种称为伪造的方法,它是一种有针对性的测试方法,通过分析DNN生成导致安全性问题的输入。具体而言,我们探索了将最先进的伪造器应用于OpenPilot中使用的DNN,这反映了网络设计的最新趋势。我们的研究揭示了将这种伪造器应用于现实世界的DNN时面临的挑战,传达了我们的工程努力以克服这些挑战,并展示了伪造器检测属性违规并提供有意义的反例的潜力。最后,我们总结了所学到的教训以及伪造器在像OpenPilot这样的系统中实现其潜力所面临的待解决挑战。

论文链接:https://doi.org/10.1145/3551349.3559500

52e510bca0420a77513a0f93c8ad21b0.png

30、FuzzerAid: Grouping Fuzzed Crashes Based On Fault Signatures

模糊测试一直是发现程序中漏洞和问题的重要方法。许多在工业界使用的模糊器每天都在运行,并且可能会生成大量的崩溃。对这些崩溃进行诊断可能非常具有挑战性且耗时。现有的模糊器通常使用启发式方法,如代码覆盖率或调用堆栈哈希,以排除重复报告的漏洞。尽管这些启发式方法成本较低,但通常不够准确,导致仍然报告许多对应同一漏洞的“唯一”崩溃。本文介绍了一种名为FuzzerAid的方法,它使用故障签名来对模糊器报告的崩溃进行分组。故障签名是一个小型可执行程序,由原始程序中选取的一些必要语句组成,可以重现漏洞。在我们的方法中,我们首先使用给定的崩溃生成故障签名。然后,我们使用其他导致崩溃的输入执行故障签名。如果失败被重现,我们将崩溃分类到带有故障签名的组中;如果没有,我们生成一个新的故障签名。在对所有导致崩溃的输入进行分类后,我们进一步将相同根本原因的故障签名合并到一组中。我们在一个名为FuzzerAid的工具中实现了我们的方法,并在15个真实漏洞和4个大型开源项目生成的3020个崩溃上进行了评估。评估结果显示,我们能够正确地对99.1%的崩溃进行分组,并仅报告了17个(+2个)“唯一”漏洞,优于当前最先进的模糊器。

论文链接:https://doi.org/10.1145/3551349.3556959

abaadcf2df411a6b34470ba170079d81.png

31、Fuzzle: Making a Puzzle for Fuzzers

随着模糊测试技术的快速发展,对自动合成有缺陷的程序的需求不断增加。以往的方法主要集中在向现有程序中注入错误,导致生成的程序可能包含意外错误,从而无法提供真实的基准。在本文中,我们通过将错误合成问题转化为迷宫生成问题来解决这一挑战。具体而言,我们通过将迷宫中的一系列移动编码为函数调用链,来合成一个完整的有缺陷程序。按设计,我们的方法提供了合成基准的准确真实性。此外,它还允许生成具有从现有漏洞中提取的现实路径约束的基准。我们在一个名为Fuzzle的工具中实现了我们的想法,并使用五种最先进的模糊测试工具进行评估,以从实证上证明其价值。

论文链接:https://doi.org/10.1145/3551349.3556908

cc36e57878ba7208c6375631a8ed5fe2.png

32、GLITCH: Automated Polyglot Security Smell Detection in Infrastructure as Code

基础设施即代码(IaC)是通过可编程的配置文件(也称为IaC脚本)来管理IT基础设施的过程。与其他软件工件一样,IaC脚本可能包含安全问题,即可能导致安全弱点的编码模式。存在自动化分析工具来检测IaC脚本中的安全问题,但它们专注于特定的技术,如Puppet、Ansible或Chef。这意味着当一种工具中实现了新的安全问题检测时,它不会立即适用于其他工具支持的技术,唯一的选择是重复努力。本文提出了一种方法,可以在不同的IaC技术中实现一致的安全问题检测。我们进行了一项大规模的实证研究,分析了包含196,755个IaC脚本和12,281,251行代码的三个大型数据集中的安全问题。我们展示了在所有数据集中都可以识别出所有安全问题的各个类别,并且识别出可能影响许多IaC项目的一些问题。为了进行这项研究,我们开发了一个名为GLITCH的新的技术无关框架,通过将IaC脚本转换为中间表示形式,实现自动化的多语言安全问题检测,可以在其中定义不同的安全问题检测器。GLITCH目前支持在Ansible、Chef或Puppet中编写的脚本中检测九种不同的安全问题。我们将GLITCH与最先进的安全问题检测器进行了比较。得到的结果不仅显示GLITCH可以减少为多种IaC技术编写安全问题分析的工作量,而且它的精确度和召回率都高于当前最先进的工具。

论文链接:https://doi.org/10.1145/3551349.3556945

608e06da14dd2f9fe3cbac29e202010c.png

33、Generalizability of Code Clone Detection on CodeBERT

像CodeBERT这样的Transformer网络已经在基准数据集上取得了杰出的代码克隆检测结果,因此人们可能会认为这个任务已经得到了解决。然而,代码克隆检测并不是一项简单的任务。特别是语义代码克隆更具挑战性。我们展示了通过评估来自BigCloneBench的两个不同子集的Java代码克隆,CodeBERT的泛化能力降低的情况。当我们评估不同的代码片段和功能ID时,我们观察到F1分数显著下降,这些与用于构建模型的代码片段和功能ID不同。

论文链接:https://doi.org/10.1145/3551349.3561165

fbd228478fcbae1cc0825e8c96d4f45a.png

34、Generating Critical Test Scenarios for Autonomous Driving Systems via Influential Behavior Patterns

自动驾驶系统(ADSs)具有安全关键性,在部署到真实道路之前必须进行全面测试。为了全面评估ADSs的性能,生成各种安全关键场景至关重要。大多数现有研究要么通过搜索高维输入空间,要么使用简单和预定义的测试场景来评估ADSs,这两种方法都不够高效或不够充分。为了更好地测试ADSs,本文提出了一种通过挖掘真实交通轨迹中的有影响力的行为模式自动生成ADSs的安全关键测试场景的方法。基于有影响力的行为模式,提出了一种新颖的场景生成技术——CRISCO,用于生成ADSs测试的安全关键场景。CRISCO通过解决轨迹约束来生成不同的测试场景,并通过逐步添加有影响力行为模式中的参与者行为来提高那些非关键场景的挑战。我们在工业级ADS平台——百度Apollo上演示了CRISCO。实验结果显示,我们的方法能够有效高效地生成关键场景以使ADS崩溃,并在12小时内暴露出13种不同类型的安全违规行为。在同一道路上,它还通过暴露5种不同类型的安全违规行为超越了两种最先进的ADS测试技术。

论文链接:https://doi.org/10.1145/3551349.3560430

82ad00c397964ee05b4fe285c135c317.png

35、Griffin : Grammar-Free DBMS Fuzzing

模糊测试是数据库管理系统(DBMS)测试的一种有前途的方法。在DBMS模糊测试中,语法是一个至关重要的组成部分:由于DBMS对输入进行严格验证,语法通过生成语法和语义正确的SQL语句来提高模糊测试的效率。然而,由于各种DBMS的复杂语法存在巨大差异,将这些模糊测试器调整到它们上面是非常费时的。考虑到许多DBMS尚未经过充分测试,迫切需要一种不依赖于语法的有效DBMS模糊测试方法。在本文中,我们提出了Griffin,一种基于变异的无语法DBMS模糊测试工具。与依赖语法不同,Griffin将DBMS的状态总结为元数据图,这是一种轻量级的数据结构,可以提高模糊测试中的变异正确性。具体而言,它首先在执行内置SQL测试用例时跟踪语句的元数据,并迭代地构建元数据图以描述元数据和语句之间的依赖关系。基于这些图,它重新排列语句并使用元数据引导的替换来纠正语义错误。我们在MariaDB、SQLite、PostgreSQL和DuckDB上评估了Griffin。Griffin在12小时内比SQLancer、SQLsmith和Squirrel分别找到了27个、27个和22个更多的错误,并覆盖了73.43%-274.70%、80.47%-312.89%和43.80%-199.11%更多的分支。总体而言,Griffin找到了55个以前未知的错误,并分配了13个CVE标识符。

论文链接:https://doi.org/10.1145/3551349.3560431

8d8b5ac81337f46149511effb83f5bc1.png

36、HTFuzz: Heap Operation Sequence Sensitive Fuzzing

基于堆的时间性漏洞(如使用后释放、双重释放和空指针解引用)对堆操作(如内存分配、释放和访问)序列非常敏感。为了有效地发现这类漏洞,传统的代码覆盖引导的模糊测试解决方案可以通过集成堆操作序列反馈来提升。但目前的序列敏感解决方案在实践中存在限制。本文提出了一种名为HTFuzz的新型模糊测试解决方案,用于发现基于堆的时间性漏洞。在核心部分,我们利用模糊测试来增加运行时堆操作序列的覆盖范围和这些操作访问的指针的多样性,前者反映了控制流,后者反映了堆操作序列的数据流。通过这样的增加,模糊测试工具可以发现更多的基于堆的时间性漏洞。我们已经开发了HTFuzz的原型,并在14个真实应用程序上进行了评估,并与11个最先进的模糊测试工具进行了比较。结果表明,HTFuzz在发现基于堆的时间性漏洞的数量上表现优于所有基准,并且在统计上更好。具体而言,HTFuzz找到了比(AFL,AFL-sensitive-ma,AFL-sensitive-mw,Memlock,PathAFL,TortoiseFuzz,MOPT,Angora,Ankou)分别多出(1.82倍,2.62倍,2.66倍,2.02倍,2.21倍,2.06倍,1.47倍,2.98倍,1.98倍)的堆操作序列和(1.45倍,3.56倍,3.56倍,4.57倍,1.78倍,1.78倍,1.68倍,4.00倍,1.45倍)的0day基于堆的时间性漏洞。HTFuzz共发现了37个新漏洞,并分配了37个CVE编号,其中包括32个新的基于堆的时间性漏洞和5个其他类型的漏洞。

论文链接:https://doi.org/10.1145/3551349.3560415

60a8a4ef565a5942931d4f32eb84f21f.png

37、ICEBAR: Feedback-Driven Iterative Repair of Alloy Specifications

自动程序修复(Automated program repair,APR)技术在自动找到C语言或Java等编程语言中程序的修复方面取得了巨大成功。在本研究中,我们专注于修复形式化规范,特别是针对Alloy规范语言。与大多数APR工具不同,我们修复Alloy规范的方法名为ICEBAR,它不使用基于测试的神谕进行补丁评估。相反,ICEBAR依赖于基于属性的神谕,这些神谕通常在Alloy规范中作为谓词和断言出现。这些基于属性的神谕为补丁评估定义了更强的条件,从而减少了使用基于测试的神谕引起的臭名昭著的过拟合问题,这在APR环境中通常会观察到。此外,由于断言和谓词是Alloy固有的,而测试用例则不是,因此我们的工具对Alloy用户更具吸引力,相比基于测试的Alloy修复工具。从高层次上看,ICEBAR是一个基于反例的迭代过程,它生成并验证修复候选。ICEBAR接收一个有错误的Alloy规范和一个失败的基于属性的神谕,并使用Alloy的反例构建测试并将其提供给ARepair,一款基于测试的Alloy修复工具,以生成修复候选。然后,将候选与属性神谕进行过拟合检查:如果候选通过,则找到了一个修复;如果不通过,则生成进一步的反例以构建测试并增强测试套件,并迭代该过程。ICEBAR包括不同的机制,具有不同程度的可靠性,用于从失败的谓词和断言中生成反例。我们的评估结果显示,ICEBAR在减少过拟合和提高修复率方面显著优于ARepair。此外,ICEBAR表明,通过迭代改进,我们能够显著改进用于自动修复Alloy规范的最先进工具,而无需对该工具进行任何修改。

论文链接:https://doi.org/10.1145/3551349.3556944

87a8bd2f8fda209956fa3d7f0b32d53c.png

38、Identification and Mitigation of Toxic Communications Among Open Source Software Developers

开发者之间有毒和不健康的对话可能会降低自由开源软件(FOSS)项目的专业和生产力。例如,有毒的代码审查评论可能会导致作者对建议的更改提出反对意见。与他人进行有毒的沟通可能会妨碍未来的交流和合作。研究还表明,有毒性对新人、女性和其他边缘群体的参与者影响更大。因此,有毒性是促进多样性、公平性和包容性的障碍。由于有毒沟通在FOSS社区中并不罕见,并且这样的沟通可能会带来严重后果,我提出的博士论文的主要目标是自动识别和减轻开发者在文本交流中的有毒性。为了实现这个目标,我打算:i)构建一个适用于软件工程(SE)领域的自动有毒性检测器,ii)跨不同人群界定有毒性的概念,以及iii)分析有毒性对开源软件(OSS)项目结果的影响。

论文链接:https://doi.org/10.1145/3551349.3559570

b990f0f4b78738f56ef05aeb1e9b06f9.png

39、Identifying Sexism and Misogyny in Pull Request Comments

软件开发组织在性别上极度偏向男性,缺乏多样性。其他群体的人在交流过程中常常遭遇到性别歧视、厌恶女性和歧视性言论。为了识别这些内容,我旨在为软件开发领域构建一个自动辨别厌恶女性的工具(AMI)。为了实现这个目标,我基于关键词选择并进行手动验证,在Github上挖掘了10,138条拉取请求评论的数据集。通过十折交叉验证,我评估了十种机器学习算法进行自动辨别。表现最好的模型达到了80%的精确度、67.07%的召回率、72.5%的F1得分和95.96%的准确率。

论文链接:https://doi.org/10.1145/3551349.3559515

e32e126160fc7fbccec2533ddf059fb1.png

40、Insight: Exploring Cross-Ecosystem Vulnerability Impacts

所谓的CLV问题是由于对易受攻击的库进行跨语言调用而引起的漏洞。由于Python/Java项目广泛使用C库,这些问题极大地增加了其攻击面。现有的PyPI和Maven生态系统中的Python/Java构建工具未能报告对其他语言(如C)编写的易受攻击的库的依赖关系。开发人员很容易忽视CLV问题。本文首次对PyPI和Maven生态系统中CLV问题的现状进行了实证研究。研究发现,这些生态系统中的82,951个项目直接或间接依赖于从C项目版本编译的库,这些版本在CVE报告中被确定为易受攻击的。我们的研究引起了对流行生态系统中CLV问题的重视,并提出了相关的分析结果。该研究还导致了第一个自动化机制Insight的开发,该机制基于易受攻击的C项目的已发布CVE报告,为PyPI和Maven项目的CLV问题识别提供了一揽子解决方案。Insight会自动判断PyPI或Maven项目是否使用了从易受攻击的C项目版本编译的C库,并通过分析有关PyPI或Maven项目中各种外部函数接口(如CFFI和JNI)的使用情况,推断出涉及的易受攻击的API。Insight在流行的CLV问题基准测试中实现了88.4%的高检测率。作为对开源社区的贡献,我们报告了在处于活跃维护状态的PyPI和Maven项目中检测到的226个CLV问题,这些问题直接依赖于易受攻击的C库版本。我们的报告受到开发人员的好评,他们对Insight的可用性提出了疑问。127个报告的问题(56.2%)很快得到开发者的确认,并且其中74.8%正在受欢迎的项目(如Mongodb \[40\]和Eclipse/Sumo \[19\])中得到修复/正在修复。

论文链接:https://doi.org/10.1145/3551349.3556921

e0ed5789b6aed8968cbce3002384511c.png

41、Is this Change the Answer to that Problem?: Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness

近年来,由于自动程序修复(APR)工具往往生成过拟合的补丁,补丁的正确性成为自动程序修复的焦点。给定一个生成的补丁,验证器(例如测试套件)往往难以确定其正确性。因此,文献提出了各种方法,利用机器学习和工程化以及深度学习特征,或者探索动态执行信息,进一步探索APR生成的补丁的正确性。在这项工作中,我们提出了一个新的视角来解决补丁正确性评估的问题:一个正确的补丁实现了对错误行为所提出的问题的“回答”。具体而言,我们将补丁正确性评估转化为一个问答问题。为了解决这个问题,我们的直觉是自然语言处理可以提供必要的表示和模型,用于评估错误报告(问题)和补丁(答案)之间的语义相关性。具体来说,我们将错误报告和生成的补丁的自然语言描述作为输入。我们的方法名为Quatrain,首先考虑最先进的提交信息生成模型,以生成与每个生成的补丁相关的输入。然后,我们利用神经网络架构来学习错误报告和提交信息之间的语义相关性。在三个缺陷数据集(Defects4j、Bugs.jar和Bears)生成的9,135个补丁的大型数据集上进行的实验表明,Quatrain在预测补丁正确性方面取得了0.886的AUC,同时在过滤掉62%的错误补丁的情况下,能够召回93%的正确补丁。我们的实验结果进一步证明了输入质量对预测性能的影响。我们进一步进行实验以凸显模型确实学习了错误报告和代码更改描述之间的关系。最后,我们与之前的工作进行比较,并讨论我们方法的优点。

论文链接:https://doi.org/10.1145/3551349.3556914

20813ba84a936cb86a3c88ac199990bf.png

42、Keeping Secrets: Multi-objective Genetic Improvement for Detecting and Reducing Information Leakage

软件中的信息泄漏可能无意中泄露私人数据,但很难检测和修复。虽然已经提出了几种检测泄漏的方法,如基于静态验证的方法,但它们需要专业知识且耗时。最近,我们引入了HyperGI,一种基于动态超测试的方法,可以检测并生成潜在的修复超属性违规。特别是,我们着重关注非干扰属性的违规,因为它会导致信息流泄漏。我们实例化的HyperGI能够在三个小程序中检测和减少泄漏。它的适应性函数试图在信息泄漏和程序正确性之间取得平衡,但正如我们指出的,保持程序语义和减少信息泄漏可能需要开发者做出权衡。在这项工作中,我们询问是否可能在更现实的程序中自动检测和修复信息泄漏,而不需要专业知识。我们在一个名为LeakReducer的工具中实例化了HyperGI的多目标版本,该工具明确地编码了程序正确性和信息泄漏之间的权衡。我们将LeakReducer应用于包括著名的Heartbleed漏洞在内的六个有漏洞的程序。与最先进的模糊测试工具相比,LeakReducer能够在所有程序中检测到泄漏,而最先进的模糊测试工具只能在两个程序中检测到泄漏。此外,LeakReducer能够减少所有受测程序中的泄漏,并且与以前的工作相比具有可比的结果,同时适用于更大规模的软件。

论文链接:https://doi.org/10.1145/3551349.3556947

efb5b616e8631844ad7c3beb5f02e41a.png

43、LawBreaker: An Approach for Specifying Traffic Laws and Fuzzing Autonomous Vehicles

自动驾驶系统(ADSs)在部署到自动驾驶汽车之前必须经过全面的测试。高保真度的模拟器可以让ADSs在各种场景下进行测试,包括那些在实际测试场地中难以再现的场景。尽管以前的方法已经显示可以自动生成测试用例,但它们往往侧重于弱预测模型(例如,无碰撞到达目的地),而没有评估行驶过程是否安全,并符合法律要求。在这项工作中,我们提出了一种名为LawBreaker的自动化框架,用于根据真实的交通法规测试ADSs,该框架可与不同的场景描述语言兼容。LawBreaker提供了丰富的面向驾驶员的规范语言来描述交通法规,以及一个模糊引擎,通过最大化规范覆盖范围来搜索违反交通法规的不同方式。为了评估我们的方法,我们将其实现为Apollo+LGSVL,并指定了中国的交通法规。LawBreaker能够发现这些法规的14个违规行为,其中包括导致事故的173个测试用例。

论文链接:https://doi.org/10.1145/3551349.3556897

ba4a8cffd2a8c71681977661ebd63373.png

44、Leveraging Artificial Intelligence on Binary Code Comprehension

理解二进制代码对于逆向工程、恶意软件分析和编译器优化是一项重要而复杂的软件工程任务。与源代码不同,二进制代码的语义信息有限,这对人类理解而言具有挑战性。与此同时,将源代码编译为二进制代码,或在不同的编程语言之间进行转换,可以为二进制代码理解引入外部知识。我们提出开发人工智能(AI)模型来帮助人类理解二进制代码。具体而言,我们建议将来自大型源代码语料库(例如变量名、注释)的领域知识纳入到AI模型中,以构建捕捉二进制代码通用表示的模型。最后,我们将通过使用人类理解研究来调查适用于二进制代码的模型性能评估指标。

论文链接:https://doi.org/10.1145/3551349.3559564

2f47f426a721ed79ca308abe485bc8bf.png

45、MalWhiteout: Reducing Label Errors in Android Malware Detection

近年来,基于机器学习的安卓恶意软件检测引起了大量的研究工作。一个可靠的恶意软件数据集对于评估恶意软件检测方法的有效性至关重要。然而,我们社区中现有的恶意软件数据集主要通过利用现有的反病毒服务(如VirusTotal)进行标注,这种方法容易出现错误标记。这将导致对恶意软件检测技术的准确评估。在大规模数据集上从安卓恶意软件数据集中去除标记噪声是相当具有挑战性的。为了解决这个问题,我们提出了一种有效的方法,称为MalWhiteout,用于减少安卓恶意软件数据集中的标记错误。具体而言,我们创造性地将自信学习(Confident Learning,CL)这种先进的噪声估计方法引入到安卓恶意软件检测领域。为了应对CL引入的误报问题,我们结合集成学习和应用程序间的关系的思想,实现了更强大的噪声检测能力。我们在一个经过精心策划的大规模可靠基准数据集上评估了MalWhiteout。实验结果表明,即使在数据集的高噪声比例(30%)下,MalWhiteout能够以超过94%的准确率检测到标记噪声。在不同的设置下,MalWhiteout在效果(提高了8%到218%)和效率(快了70到249倍)方面优于现有的研究方法。通过减少标记噪声,我们展示了现有恶意软件检测方法的性能可以得到改进。

论文链接:https://doi.org/10.1145/3551349.3560418

8319e52301e6fb567531b23c04303697.png

46、Multi-objective Optimization-based Bug-fixing Template Mining for Automated Program Repair

基于模板的自动程序修复(T-APR)技术依赖于修复模板的质量。为了使这些模板在T-APR技术中具有足够的质量以取得成功,它们必须满足三个标准:适用性、可修复性和效率。现有的模板挖掘方法仅基于第一个标准选择模板,因此在性能上不够优化。本研究提出了一种基于多目标优化的T-APR修复模板挖掘方法,其中我们根据九个代码抽象任务和三个目标函数估计模板的质量。我们的方法确定了最佳的代码抽象策略(即最佳的抽象任务组合),该策略最大化了三个目标函数的值,并通过对应用最佳抽象策略的模板候选进行聚类,生成最终的修复模板集合。我们的初步实验表明,相比现有的挖掘技术,我们的优化策略可以分别提高模板的适用性和效率,分别提高7%和146%。因此,我们得出结论,基于多目标优化的模板挖掘技术能够有效地找到高质量的修复模板。

论文链接:https://doi.org/10.1145/3551349.3559554

ce9f74f0504431006d17f1672f054945.png

47、Not All Dependencies are Equal: An Empirical Study on Production Dependencies in NPM

现代软件系统通常通过利用他人编写的库和软件包来加速开发。尽管使用第三方软件包有许多好处,但软件项目往往依赖大量的软件包。因此,开发人员面临着保持项目依赖的最新和免受安全漏洞影响的困难挑战。然而,在实际生产中,项目依赖项对项目安全构成威胁的频率有多高呢?我们对100个使用Node Package Manager(npm)的JavaScript项目进行了实证研究,以量化项目依赖项在实际生产中的发布频率,并分析它们的特征和对安全性的影响。我们的结果表明,不到1%的安装依赖项被发布到实际生产环境中。我们的分析揭示了一个事实:仅仅功能性并不足以确定一个软件包是否会被发布到实际生产环境中。事实上,59%的运行时依赖项未在实际生产中使用,而28.2%的开发依赖项却被用于实际生产,推翻了关于依赖管理的两个常见假设。研究结果还表明,大多数安全警报针对的是未在实际生产中使用的依赖项,这使它们极不可能对软件安全造成风险。我们的研究揭示了依赖管理的更为复杂的一面:并非所有依赖项都是相等的。在实际生产中使用的依赖项对安全曝光更为敏感,应该优先考虑。然而,目前的工具在识别实际生产依赖项方面缺乏适当的支持。

论文链接:https://doi.org/10.1145/3551349.3556896

24c7fe4358e32edf6a1113e4cd0a6389.png

48、Precise (Un)Affected Version Analysis for Web Vulnerabilities

Web应用程序由于其受欢迎程度和大量漏洞而成为吸引人的攻击目标。为了减轻Web漏洞的威胁,一个重要的信息是它们受影响的版本。然而,构建准确的受影响版本信息并非易事,因为确认一个版本是否受影响需要安全专业知识和巨大的努力,而通常需要检查数百个版本。因此,几乎每个公共漏洞数据库中的这些信息都以低质量的方式维护。因此,拥有一个能够自动且精确地检查大部分(即使不是全部)软件版本是否受影响的工具非常有用。为此,本文提出了一种基于漏洞的方法,用于精确分析Web漏洞的(未)受影响版本。关键思想是从补丁中提取漏洞逻辑,并直接使用漏洞逻辑来检查一个版本是否受影响。与现有方法相比,我们的漏洞中心方法有助于容忍不同软件版本之间的代码变化。我们构建了一个包含34个CVE和299个软件版本的高质量数据集来评估我们的方法。结果显示,我们的方法在识别(未)受影响版本方面实现了98.15%的精确度和85.01%的召回率,并且明显优于现有工具(如V-SZZ、ReDebug、V0Finder)。

论文链接:https://doi.org/10.1145/3551349.3556933

054d65756df0e1d73fe468b9aacaf063.png

49、Privacy Analysis of Period Tracking Mobile Apps in the Post-Roe v. Wade Era

近年来,为了帮助人们管理健康,经期跟踪应用程序变得非常流行。然而,2022年6月24日,美国最高法院推翻了罗伊诉韦德案(Roe v. Wade)。堕胎在越来越多的州被禁止。由于经期跟踪应用程序中存储的健康数据可以用来推断用户是否进行了堕胎或正在考虑堕胎,移动用户担心这些应用程序可能会泄露他们的敏感信息,从而被用来起诉用户。尽管经期跟踪应用程序受到了研究界的关注,但目前尚无现有研究对这些应用程序进行了系统的隐私分析,尤其是在罗伊诉韦德案之后。为了填补这一空白,本文对流行的经期跟踪应用程序进行了全面的隐私分析。我们首先从Google Play收集了35个流行的经期跟踪应用程序。然后,我们使用流量分析和静态分析来分析经期跟踪应用程序收集的敏感用户数据。此外,我们检查了它们的隐私政策,并检查隐私政策与应用程序行为的一致性。另外,我们分析了应用程序的评论,以了解用户对经期跟踪应用程序的关注点。我们的研究揭示了一些经期跟踪应用程序确实收集了敏感信息,并有可能与第三方机构共享数据。这些应用程序迫切需要采取措施保护用户隐私,移动用户应特别注意他们使用的这类应用程序。

论文链接:https://doi.org/10.1145/3551349.3561343

da414803778c2128429857e69e0a66f5.png

50、Property-Based Automated Repair of DeFi Protocols

编程错误会导致对智能合约的安全攻击,而智能合约用于管理大笔财务资产。自动化程序修复(APR)技术旨在通过自动生成给定问题的补丁来减轻开发人员手动修复错误的负担。现有的智能合约APR工具侧重于减轻典型智能合约漏洞而不是违反功能规范的问题。然而,在去中心化金融(DeFi)智能合约中,预期行为与实现之间的不一致导致与底层金融模型的偏离,从而给应用程序及其用户带来货币损失。在这项工作中,我们提出了DeFinery——一种用于自动修复不满足用户定义的正确性属性的智能合约的技术。为了在提供与预期行为相关的正式正确性保证的同时探索更大的多样化补丁集,我们将基于搜索的补丁生成与原始程序的语义分析相结合,以推断其规范。我们在修复9个真实世界和基准智能合约的实验中证明,DeFinery能够高效生成其他现有工具无法找到的高质量补丁。

论文链接:https://doi.org/10.1145/3551349.3559560

807ec3be0153e7761d99043b0cba4ecc.png

51、Reentrancy Vulnerability Detection and Localization: A Deep Learning Based Two-phase Approach

智能合约广泛而迅速地与区块链一起用于自动化金融和业务交易,帮助人们在最小化信任的同时达成协议。随着区块链上部署的智能合约数量不断增加,智能合约中的各种错误和漏洞也应运而生。随着深度学习的快速发展,许多最近的研究使用深度学习进行漏洞检测,以在部署智能合约之前进行安全检查。这些方法在检测智能合约是否存在漏洞方面取得了有效的结果,但对于定位导致检测到的漏洞的可疑语句的结果仍然不尽人意。为了解决这个问题,我们提出了一种基于深度学习的两阶段智能合约调试器,用于检测最严重的漏洞之一——递归漏洞,命名为ReVulDL:递归漏洞检测和定位。ReVulDL将漏洞检测和定位集成到一个统一的调试流程中。对于检测阶段,给定一个智能合约,ReVulDL使用基于图的预训练模型来学习传播链中的复杂关系,以检测智能合约是否包含递归漏洞。对于定位阶段,如果检测到递归漏洞,ReVulDL利用可解释的机器学习来定位智能合约中的可疑语句,以提供对检测到的漏洞的解释。我们对47,398个智能合约进行了大规模的实证研究,结果显示ReVulDL在检测递归漏洞(例如,优于16种最先进的漏洞检测方法)和定位存在漏洞的语句(例如,70.38%的漏洞语句在前10名内)方面取得了有希望的结果。

论文链接:https://doi.org/10.1145/3551349.3560428

0c520712b432d8848d581d2aec1bcacf.png

52、Right to Know, Right to Refuse: Towards UI Perception-Based Automated Fine-Grained Permission Controls for Android Apps

用户有权了解在Android应用程序范围内如何使用权限,并且可以拒绝授予应用程序的权限用于指定用途以外的活动,这可能构成恶意行为。本文提出了一种方法和愿景,从用户的角度自动建模Android应用程序所需的权限,并通过用户启用细粒度的权限控制,从而帮助用户更全面、灵活地做出不同应用功能的权限决策,进而改善应用的安全性和数据隐私,并强制应用减少权限滥用。我们提出的方法主要分为两个阶段。首先,通过程序分析技术寻找用户可感知的权限使用和应用实际使用的权限之间的差异。其次,使用机器学习技术运行预测算法,捕捉权限使用中的差异,从而提醒用户采取行动以防止数据违规。我们对方法的初步实施进行了评估,并取得了有希望的细粒度权限控制准确性。除了用户隐私保护的好处之外,我们预计该方法的更广泛采用还可以促使负责任的机构如应用程序开发者、政府和企业进行更好的隐私意识设计。

论文链接:https://doi.org/10.1145/3551349.3559556

2766d0f50bf77ac31a603bfc0ca6a555.png

53、SML4ADS: An Open DSML for Autonomous Driving Scenario Representation and Generation

自动驾驶系统(ADS)在上市前需要进行广泛的安全评估。然而,由于仅依靠现场测试几乎是不可行的,因为无法覆盖足够的距离以确保充分的安全性,所以重点转向基于场景的测试。挑战在于灵活生成场景。我们提出了一种针对ADS的场景建模语言(SML4ADS),作为一种面向特定领域的建模语言(DSML),用于场景表示和生成。与其他现有工作相比,我们的方法以非编程、用户友好的方式简化了场景描述,允许对车辆的随机行为进行建模,并在CARLA中生成可执行的场景。我们将SML4ADS应用于许多典型场景,初步展示了我们的方法在建模和生成可执行场景方面的有效性和可行性。

论文链接:https://doi.org/10.1145/3551349.3561169

839d53a21039f3ed44b9896c15a96e95.png

54、Scrutinizing Privacy Policy Compliance of Virtual Personal Assistant Apps

在各种虚拟个人助手服务中,如亚马逊Alexa,功能丰富且易于访问的应用程序已经变得非常流行。虚拟个人助手应用程序(简称VPA应用程序)附带有隐私政策文件,向用户说明其数据处理实践。这些文件通常对用户来说过长且复杂,开发者可能故意或无意中未能遵守这些政策。在这项工作中,我们首次对VPA应用程序的隐私政策合规问题进行了系统研究。我们开发了Skipper,针对亚马逊Alexa技能。它通过自然语言处理(NLP)和机器学习技术分析隐私政策文件,自动将技能描述为声明的隐私配置文件,并通过黑盒测试推导出技能的行为隐私配置文件。我们对Alexa商店上列出的所有技能进行了大规模分析,发现有大量技能存在隐私政策违规问题。

论文链接:https://doi.org/10.1145/3551349.3560416

d196426959fe3b515d4a835358b8b4cd.png

55、SelfAPR: Self-supervised Program Repair with Test Execution Diagnostics

最近一系列的论文表明,基于学习的程序修复取得了良好的结果。然而,我们观察到,由于缺乏对正在修复的程序的应用领域和故障类型的了解,相关工作未能修复一些错误。在本文中,我们通过将学习范式从监督训练转变为自监督训练的方法(称为SelfAPR)来解决这两个问题。首先,SelfAPR通过扰动正在修复的程序的先前版本来生成磁盘上的训练样本,强制神经模型捕捉特定项目的知识。这与基于挖掘过去提交的先前工作不同。其次,SelfAPR执行所有训练样本,并提取和编码测试执行诊断信息到输入表示中,引导神经模型修复故障类型。这与现有研究只考虑静态源代码作为输入的方式不同。我们实现了SelfAPR,并以系统性的方式进行评估。我们生成了1,039,873个训练样本,通过扰动17个开源项目获得。我们在来自Defects4J的818个错误上评估了SelfAPR,它正确修复了其中的110个错误,胜过了所有的监督学习修复方法。

论文链接:https://doi.org/10.1145/3551349.3556926

50ccc1b2d5b7a8a2adbf345b34e7b51b.png

56、Shibboleth: Hybrid Patch Correctness Assessment in Automated Program Repair

基于测试生成和验证的自动程序修复(APR)系统会生成许多通过测试套件但未修复错误的补丁。生成的补丁需要由开发人员手动检查,这是一项耗时的任务,从而降低了APR在降低调试成本方面的作用。我们介绍了一个名为Shibboleth的新型工具的设计和实现,用于自动评估基于测试生成和验证的APR系统生成的补丁。Shibboleth利用测试和生产代码的轻量级静态和动态启发式方法来对补丁进行排名和分类。Shibboleth的基本思想是有bug的程序几乎是正确的,bug是小错误,只需进行小的更改即可修复,并且修复不会删除程序实现正确功能的代码。因此,该工具通过衡量补丁对生产代码(通过语法和语义相似性)和测试代码(通过代码覆盖率)的影响,将导致相似程序且不删除所需程序元素的补丁分开。我们在1,871个补丁上评估了Shibboleth,这些补丁是由29个基于Java的APR系统为Defects4J程序生成的。该技术优于最先进的排名和分类技术。具体而言,在我们的排名数据集中,Shibboleth在66%的情况下将正确的补丁排在前1或前2的位置,在我们的分类数据集中,在分类模式下,它分别达到了0.887和0.852的准确率和F1分数。该工具的演示视频可在[https://bit.ly/3NvYJN8上观看 ↗](https://bit.ly/3NvYJN8上观看)。

论文链接:https://doi.org/10.1145/3551349.3559519

26d27f7a51beaa1924769e4f74a7578d.png

57、Simulating cyber security management: A gamified approach to executive decision making

高管经理并非都具备必要的网络安全专业知识,以便能够做出真实反映企业网络安全状况和需求的商业决策。遗憾的是,业务和网络安全领域之间的理解不足导致业务环境中存在结构性的脆弱性,其中要么在考虑业务需求时没有理解对网络安全的影响,要么在考虑网络安全需求时没有充分理解其对业务战略和财务稳定性的影响。为了解决这个困境,提出了一种将网络安全培训以游戏化方式提供给高管的解决方案,旨在不仅最大限度地减少业务环境中的网络漏洞,还改善通过网络安全措施支持的业务成果。我们开发了一个名为Aurelius的严肃游戏软件平台,模拟高管决策者在管理日常网络安全投资决策中的角色,并将其与业务指标相结合,以融合业务和网络安全理解。我们的游戏包括模拟的网络安全攻击,需要高管决策者(玩家)做出适当的应对。我们模拟网络安全游戏的算法基于复杂系统方法,因为这最准确地模拟了高管的体验。在我们的设计中,我们设置了Aurelius来满足网络安全领域先进严肃游戏的九项标准中的八项。

论文链接:https://doi.org/10.1145/3551349.3561148

12a697e13a21ad2ef10d03baeb299581.png

58、So Many Fuzzers, So Little Time✱: Experience from Evaluating Fuzzers on the Contiki-NG Network (Hay)Stack

模糊测试(“fuzzing”)是一种广泛使用且有效的动态技术,用于发现软件中的崩溃和安全漏洞。有许多工具支持模糊测试,并且这些工具在检测能力和执行速度方面不断改进。本文报告了我们在一个非常复杂的代码库Contiki-NG上使用最先进的基于变异和混合的模糊测试工具(AFL、Angora、Honggfuzz、Intriguer、MOpt-AFL、QSym和SymCC)的研究结果。在三年多的时间里,我们揭示并修复了该软件网络堆栈各个层面上的严重漏洞。作为副产品,我们提供了一个基于Git的平台,允许我们创建和应用一个相当具有挑战性的开源漏洞套件,用于评估模糊测试工具在现实世界软件漏洞上的表现。利用这个漏洞套件,我们对这些模糊测试工具的效果进行了公正而全面的评估,并衡量了消毒器对其的影响。最后,我们提供了在未来如何使用和评估模糊测试工具的经验和意见。

论文链接:https://doi.org/10.1145/3551349.3556946

98de84711e1100bb9790ebc17d8b8501.png

59、StandUp4NPR: Standardizing SetUp for Empirically Comparing Neural Program Repair Systems

最近,自动程序修复的新趋势是应用深度神经网络从有错误的代码生成修复后的代码,称为NPR(神经程序修复)。然而,现有的NPR系统在训练和评估过程中采用了非常不同的设置(例如,不同的训练数据、不一致的评估数据、范围广泛的候选数量),这使得在比较它们时很难得出公正的结论。出于这个原因,我们首先构建了一个标准基准数据集和一个广泛的框架工具,以减轻比较中的威胁。该数据集包括一个训练集、一个验证集和一个评估集,分别包含144,641、13,739和13,706对Java的错误修复样本。该工具支持选择特定的训练、验证和评估数据集,并自动进行NPR模型的训练和评估流程,同时通过实现明确定义的接口轻松集成新的NPR模型。然后,基于基准数据集和工具,我们就修复能力、倾向性和泛化能力方面对六个SOTA NPR系统进行了全面的实证比较。实验结果揭示了比较的NPR系统的更深层次特征,并推翻了一些现有的比较结论,进一步验证了在探索NPR系统进展时统一实验设置的必要性。同时,我们揭示了一些NPR系统的共同特点(例如,它们擅长处理代码删除错误)。最后,我们根据研究结果确定了一些有前景的研究方向。

论文链接:https://doi.org/10.1145/3551349.3556943

1eb81497968d61521a88711b74a49693.png

60、SymFusion: Hybrid Instrumentation for Concolic Execution

符号执行的动态变体是一种考虑可扩展性的执行方式。近期的符号执行器在实现可扩展性方面严重依赖程序插装。插装代码可以在编译时添加(例如使用LLVM插件),也可以在执行时借助动态二进制翻译器直接添加。前一种方法可以产生更高效的代码,但需要重新编译。不幸的是,重新编译整个程序代码并不总是可行或实际的(例如存在第三方组件时)。相反,后一种方法不需要重新编译,但会导致显著增加执行时间开销。本文中,我们研究了一种混合插装方法,用于符号执行,称为SymFusion。特别是,这种混合插装方法允许用户重新编译应用程序的核心组件,从而最小化对它们的分析开销,同时仍能够在执行时动态插装其余的应用程序组件。我们的实验评估表明,我们的设计在几个真实应用程序上能够在效率和效果之间取得良好的平衡。

论文链接:https://doi.org/10.1145/3551349.3556928

15cf1880541bcaab5cbfcd049b4ac815.png

61、ThirdEye: Attention Maps for Safe Autonomous Driving Systems

自动化在线识别意外状况是确保自动驾驶车辆在未知和不确定情况下保持安全的必要组成部分。本文提出了一种基于可解释的人工智能技术计算的注意力图的运行时监控技术。我们的方法在一个名为ThirdEye的工具中实现,将注意力图转化为用于区分安全和不安全驾驶行为的置信分数。其基本思想是不常见的注意力图与意外的运行时条件相关联。在我们的实证研究中,我们评估了ThirdEye的不同配置在预测基于模拟的注入故障(包括未知条件如恶劣天气和照明以及通过突变测试创建的不安全/不确定条件)方面的有效性。结果显示,总体而言,ThirdEye可以提前三秒预测出98%的不良行为,优于一种用于自动驾驶车辆的最先进故障预测器。

论文链接:https://doi.org/10.1145/3551349.3556968

8949f1488e6c538d2957cfe61ab4d4f4.png

62、Towards Effective Static Analysis Approaches for Security Vulnerabilities in Smart Contracts

智能合约的普及带来了针对智能合约的安全攻击的增加,这导致了数百万美元的财务损失和信任的丧失。为了帮助开发人员发现智能合约中的漏洞,已经提出了多种静态分析工具。然而,尽管有许多寻找错误的工具,智能合约中的安全漏洞仍然很多,开发人员仍然依赖手动发现漏洞。本文的目标是通过提出有效的静态分析方法扩大安全漏洞检测的范围。我们研究了现有静态分析工具的有效性,并提出了基于分析合约代码对用户输入的依赖来检测安全漏洞的解决方案。我们评估静态分析工具的结果表明,现有的智能合约静态工具存在显著的假阴性和假阳性。此外,结果显示我们的第一种漏洞检测方法在检测漏洞的有效性方面相比之前的工作取得了显著的改进。

论文链接:https://doi.org/10.1145/3551349.3559567

c35569896dd5a3e4a586e99e11751033.png

63、Towards Improving the Adoption and Usage of National Digital Identity Systems

用户对国家数字身份系统(NDID)的感知显著影响其使用和接受程度。以往关于NDID使用的研究对未来研究提供了有限的框架,主要强调政府服务以及如何改进该系统。本研究评估了以人为中心的网络安全因素如何影响用户对NDID的使用和接受程度。例如,澳大利亚的MyHealth记录系统被用户普遍拒绝,原因是担心未经授权使用数字身份信息以及其他隐私问题。我们假设人为中心的网络安全因素影响用户对NDID的使用和接受程度。该研究还具有实际意义,因为它提供了一个确定影响采用和改进NDID使用的人为中心的网络安全因素的框架。

论文链接:https://doi.org/10.1145/3551349.3561144

e9b369148f7b86417ff48ab76586281d.png

64、TransplantFix: Graph Differencing-based Code Transplantation for Automated Program Repair

自动程序修复(APR)有望帮助手动调试活动。经过十多年的发展,已经提出并评估了各种广泛的APR技术,使用了一组真实世界的错误数据集。然而,尽管越来越多的错误已经被正确修复,我们观察到近年来APR技术修复新错误的增长已经达到了瓶颈。在这项工作中,我们探索了通过提出TransplantFix来解决复杂错误的可能性,这是一种基于图差异的移植的新型APR技术。TransplantFix的关键创新点包括三个方面:1)我们提出使用基于图的差异算法从供体方法中提取语义修复操作;2)我们设计了一种继承层次感知的代码搜索方法,以识别具有类似功能的供体方法;3)我们提出了一种命名空间转移方法,以有效地适应供体代码。我们通过进行广泛比较,并在Defects4J v1.2和v2.0上评估TransplantFix来研究其独特贡献。TransplantFix在三个方面呈现出卓越的结果。首先,与过去三年提出的最先进的APR技术相比,它在新修复错误的数量方面取得了最佳性能,改进了60%-300%。此外,不依赖于任何手动制作或从大数据学习的修复操作,它在Defects4J v1.2和v2.0上评估的所有APR技术中具有最佳的泛化能力。此外,它展示了合成由最多八行插入组成的复杂修补程序的潜力。TransplantFix提供了新的见解和一个有前途的研究方向,以解决更复杂的错误。

论文链接:https://doi.org/10.1145/3551349.3556893

8406fd4c196a901143cd111eb5b7e98d.png

65、TreeCen: Building Tree Graph for Scalable Semantic Code Clone Detection

代码克隆检测是软件工程中引起广泛关注的重要研究问题。已经提出了许多用于检测代码克隆的方法,其中基于文本和基于标记的方法可扩展性强,但缺乏对代码语义的考虑,因此无法检测语义代码克隆。基于代码中间表示的方法可以解决语义代码克隆检测的问题。然而,由于代码编译的原因,基于图的方法不可行,现有的基于树的方法受到可扩展代码克隆检测中树规模的限制。在本文中,我们提出了TreeCen,一种可扩展的基于树的代码克隆检测器,既满足可扩展性,又能有效地检测语义克隆。给定一个方法的源代码,我们首先基于静态分析提取其抽象语法树(AST),并根据节点类型将其转化为简单的图表示(即树图),而不采用传统的繁重的树匹配方法。然后,我们将树图视为一个社交网络,并对每个节点进行中心性分析以保持树的细节。通过这样的处理,原始复杂的树可以转化为一个72维向量,同时包含AST的全面结构信息。最后,将这些向量输入到机器学习模型中训练一个检测器,并用它来发现代码克隆。我们对效果和可扩展性进行了比较评估。实验结果表明,TreeCen在BigCloneBench和Google Code Jam数据集上的F1得分分别为0.99和0.95,保持了其他六种最先进方法(即SourcererCC、RtvNN、DeepSim、SCDetector、Deckard和ASTNN)的最佳性能。就可扩展性而言,TreeCen比其他最先进的基于树的语义代码克隆检测器(ASTNN)快约79倍,比最快的基于图的方法(SCDetector)快约13倍,甚至比一次训练的基于标记的检测器(RtvNN)快约22倍。

论文链接:https://doi.org/10.1145/3551349.3556927

c41d090c9d3428041b728967772e31d8.png

66、V-Achilles: An Interactive Visualization of Transitive Security Vulnerabilities

摘要:第三方依赖的一个重要威胁是安全漏洞,这可能导致用户应用程序被非法访问。作为依赖生态系统的一部分,库的用户容易受到其应用程序中采用的直接和传递依赖项的影响。最近的工作涉及支持易受攻击依赖项的工具,但很少显示传递性更新的复杂性。在本文中,我们介绍了我们在npm中支持漏洞更新的解决方案。V-Achilles是一个原型,通过可视化(使用依赖图)展示受漏洞攻击影响的依赖项。除了工具概述,我们还强调了三个使用案例,以展示我们的原型在真实的npm包中的实用性和应用。该原型可在[https://github.com/MUICT-SERU/V-Achilles找到 ↗](https://github.com/MUICT-SERU/V-Achilles找到),并附带有一个视频演示,链接为[https://www.youtube.com/watch?v=tspiZfhMNcs ↗](https://www.youtube.com/watch?v=tspiZfhMNcs)。

论文链接:https://doi.org/10.1145/3551349.3559526

1996b403e9021ec7bc026906fd3b172e.png

67、Xscope: Hunting for Cross-Chain Bridge Attacks

跨链桥已成为支持异构区块链资产互操作性的最流行解决方案。然而,虽然提供了高效灵活的跨链资产转移,但涉及链上智能合约和链下程序的复杂工作流程也引发了新兴的安全问题。在过去的一年中,跨链桥遭受了十多起严重攻击,导致数十亿美元的损失。由于缺乏关于跨链桥安全性的研究,社区仍然缺乏应对这一重大威胁的知识和工具。为了填补这一空白,我们进行了关于跨链桥安全性的首次研究。我们记录了三类新的安全漏洞,并提出了一组用于描述它们的安全属性和模式。基于这些模式,我们设计了Xscope,一种自动工具,用于发现跨链桥中的安全违规行为并检测现实世界中的攻击。我们在四个流行的跨链桥上对Xscope进行了评估。它成功检测到了所有已知的攻击,并找到了以前未报告的可疑攻击。Xscope的视频可在[https://youtu.be/vMRO_qOqtXY上观看 ↗](https://youtu.be/vMRO_qOqtXY上观看)。

论文链接:https://doi.org/10.1145/3551349.3559520

6e195c57c207c311e964f30e065e74bd.png

68、‘Who built this crap?’ Developing a Software Engineering Domain Specific Toxicity Detector

在开源软件(OSS)项目中,开发者之间的毒性互动对开发者之间的关系产生了负面影响,因此需要一种针对软件工程(SE)领域的毒性检测器。然而,之前的研究发现现有的毒性检测工具在SE文本上表现不佳。为了应对这一挑战,我开发了ToxiCR,一种专门针对SE领域的毒性检测器,并对手动标记的19,571条代码审查评论进行了评估。我使用十种监督学习模型、五种文本向量化方法和八种预处理技术(其中两种是SE领域特定的)对ToxiCR进行了评估。在尝试了所有可能的组合后,我发现ToxiCR的准确率达到了95.8%,F1分数为88.9%,明显优于现有的毒性分类器。

论文链接:https://doi.org/10.1145/3551349.3559508

48db14187f9290cdda949d23bdaf9191.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值