前一篇发的其实是ISSTA Companion 短文,之前没注意,下载好多篇看了之后,发现都是短文,质量远不及主会场的论文,今天重新采集主会场 Full Paper 列表发出来。

1、A Large-Scale Empirical Study on Fine-Tuning Large Language Models for Unit Testing

单元测试在软件开发中扮演着关键角色,能有效提升软件质量与可靠性。然而人工生成高效测试用例耗时费力,这推动了单元测试自动化研究的发展。近年来,大语言模型(LLMs)在测试生成、断言生成和测试演进等单元测试任务中展现出潜力,但现有研究范围有限且缺乏对LLMs效能的系统评估。为填补这一空白,我们开展了针对单元测试任务的大规模大语言模型微调实证研究。本研究涵盖三项单元测试任务、五个基准数据集、八项评估指标以及37种不同架构和规模的流行LLMs,累计消耗超过3,000个NVIDIA A100 GPU小时。我们聚焦三个核心研究问题:(1)LLMs相较于现有最优方法的性能表现;(2)不同因素对LLM性能的影响;(3)微调与提示工程的效果对比。研究发现:在所有三项单元测试任务中,LLMs在几乎全部指标上均优于现有最优方法,凸显了微调LLMs在单元测试任务中的潜力。进一步地,大规模仅解码器模型在所有任务中表现最佳,而编码器-解码器模型在相同参数规模下性能更优。此外,通过对比微调与提示工程的性能表现,我们发现提示工程方法在单元测试任务中具有显著潜力。我们继而探讨了测试生成任务中的关键问题,包括数据泄露问题、缺陷检测能力和指标对比。最后,我们进一步为近期基于LLM的单元测试任务实践提出了具体指导准则。总体而言,本研究证明了微调LLMs在单元测试任务中的广阔前景,并有效降低了实际场景中单元测试专家的人工投入成本。

链接:https://doi.org/10.1145/3728951

2、A Low-Cost Feature Interaction Fault Localization Approach for Software Product Lines

在软件产品线(SPL)中,定位缺陷特征交互能帮助开发人员识别测试失败的根源,从而减轻其工作负担。由于潜在交互数量随特征数量呈指数级增长,该任务面临巨大挑战——尤其对于大型SPL而言,搜索空间极为庞大。现有方法通过基于可疑特征选择(例如出现在失败配置但未通过测试的特征)构建和检测潜在特征交互,部分解决了这一问题。然而这些方法往往忽略缺陷特征交互与测试失败之间的因果关系,导致搜索空间过大和故障定位成本高昂。为此,我们提出一种基于反事实推理的低成本故障定位方法(CRFL),通过缩减搜索空间和减少冗余计算来提升定位效率。具体而言,CRFL运用反事实推理推断可疑特征选择,并采用对称不确定性过滤无关特征交互。此外,该方法融合两项发现机制以避免重复生成和检测相同特征交互。我们在八个公开SPL系统上评估本方法性能,并针对BerkeleyDB和TankWar生成多个缺陷变异体以支持大规模真实SPL的对比实验。实验结果表明:对于小型SPL(6-9个特征),本方法将搜索空间缩减51%∼73%;对于大型SPL(13-99个特征),缩减幅度达71%∼88%。本方法平均运行时间比现有最优技术快约15.6倍。当与语句级定位技术结合时,CRFL能高效定位缺陷语句,这证明其可准确识别缺陷特征交互。

链接:https://doi.org/10.1145/3728917

3、ALMOND: Learning an Assembly Language Model for 0-Shot Code Obfuscation Detection

代码混淆是一种通过增加软件理解和逆向工程难度来保护软件的技术。然而,该技术也可能被恶意利用,如实施代码抄袭或开发恶意程序。基于学习的技术在监督学习和标注训练集的帮助下已取得显著成功。但面对现实环境中涉及私有开发且未公开的混淆器时,这些监督学习方法在面对未见未知类别的混淆技术时,其泛化性和鲁棒性常引发担忧。

本文提出ALMOND——一种用于检测二进制可执行文件中代码混淆的新型零样本方法。与先前监督学习方法不同,ALMOND无需标注的混淆样本进行训练,而是利用仅在未混淆汇编代码上预训练的语言模型来识别混淆引入的语言偏差。其核心创新是采用"错误困惑度"作为检测指标,该指标专注于模型未能预测的标记。连续错误困惑度进一步强化此方法,以捕捉混淆序列特有的连续预测错误特征。

实验表明,ALMOND对未见混淆方法的检测准确率达96.3%,优于监督基线方法。在真实恶意软件样本上,其AUC值达到0.869,显著超越监督学习基线。我们的数据集、预训练模型及评估代码将在https://github.com/palmtreemodel/ALMOND 公开。

链接:https://doi.org/10.1145/3728886

4、Adding Spatial Memory Safety to EDK II through Checked C (Experience Paper)

嵌入式软件主要采用C语言编写,由于空间内存问题而易受内存破坏漏洞影响。尽管存在多种内存安全技术,但由于资源限制和缺乏标准化操作系统支持,这些技术通常不适用于嵌入式系统。Checked C作为一种向后兼容的内存安全C方言,通过使用指针注解进行运行时检查,以最小开销提升空间内存安全性,提供了潜在解决方案。本文首次呈现了将典型嵌入式代码库EDK2(开源UEFI实现)移植到Checked C的实践报告,重点阐明移植过程中的挑战,并为在类似嵌入式系统中应用Checked C提供见解。我们还开发了增强型自动注解工具e3c,将转换率提升25%,显著简化了向Checked C的转换过程。

链接:https://doi.org/10.1145/3728929

5、AdverIntent-Agent: Adversarial Reasoning for Repair Based on Inferred Program Intent

自动程序修复(APR)技术已展现出显著成果,尤其是神经网络的应用。当前多数APR工具聚焦于测试套件规定的代码转换,而非对程序意图和高级错误规约的推理。若缺乏对程序意图的准确理解,这些工具易生成过度拟合不完整测试套件的补丁,无法体现开发者真实意图。然而,程序意图推理本身极具挑战性。本研究提出一种基于批判与对抗推理的方法——AdverIntent-Agent。其创新性在于将重心从生成多个APR补丁转向推断多种潜在程序意图。理想情况下,我们致力于推断出具有一定对抗性的多重意图,从而最大化至少一种意图与开发者原始意图高度匹配的概率。AdverIntent-Agent采用多智能体架构,包含推理智能体、测试智能体和修复智能体:推理智能体首先生成对抗性程序意图及对应错误语句;测试智能体随后为每个推断意图生成对抗测试用例,构建使用相同输入但预期输出不同的测试预言;最终修复智能体通过动态精准的LLM提示生成同时满足推断程序意图和生成测试的补丁。我们在Defects4J 2.0和HumanEval-Java基准上评估AdverIntent-Agent,分别成功修复77和105个错误。本研究通过让开发者以自然语言评估程序意图(而非审查代码补丁),显著降低了补丁审核所需的工作量。

链接:https://doi.org/10.1145/3728939

6、An Investigation on Numerical Bugs in GPU Programs Towards Automated Bug Detection

通用图形处理器(GPU)计算已成为主流的并行计算范式,在科学计算和深度学习等多个领域带来显著的性能提升。然而,GPU程序易受数值错误影响,可能导致计算结果错误或系统崩溃。这类错误的检测、调试和修复极具挑战性:它们依赖于特定输入值或类型,缺乏可靠的错误检查机制和验证基准,且GPU独特的编程规范增加了定位根本原因的难度。修复过程还需要掌握GPU计算及数值库的领域知识。因此,深入理解GPU数值错误(GPU-NBs)的特征对开发有效解决方案至关重要。

本文通过分析GitHub中397个真实错误样本,对GPU-NBs展开全面研究。我们归纳了常见根本原因、症状、触发错误的输入模式与测试验证方法,并总结了修复策略。同时,我们开发了初步检测工具GPU-NBDetect,可检测六类不同数值错误。该工具在四个数值库的186个数学函数中共计发现226个错误,其中60个已获开发者确认。本研究为GPU数值错误的检测与预防技术奠定了基础,并为构建高效调试与自动修复工具提供了重要参考。

链接:https://doi.org/10.1145/3728950

7、Are Autonomous Web Agents Good Testers?

尽管自动化测试技术不断进步,但由于测试脚本脆弱性带来的高维护需求——应用程序结构的微小变更就可能导致脚本失效,手动测试仍然占据主导地位。大型语言模型(LLMs)的最新发展为自主网页代理(AWAs)提供了潜在替代方案,这些代理能够自主与应用程序进行交互。此类代理可作为自主测试代理(ATAs),通过使用类似人类测试人员所需的自然语言指令,有望减少对高维护性自动化脚本的依赖。本文研究了将AWAs应用于自然语言测试用例执行的可行性及其评估方法。

我们的贡献包括:(1)构建包含三个离线Web应用程序的基准测试集及113个手动测试用例(含通过/失败案例),用于评估比较ATAs性能;(2)开发SeeAct-ATA和pinATA两个开源ATA实现,能够执行测试步骤、验证断言并给出判定结果;(3)通过基准测试进行对比实验,量化评估ATA的有效性。最后我们还对性能最佳的PinATA进行了定性评估以识别其局限性。

研究结果表明:在执行测试用例时,我们简单的SeeAct-ATA实现相比更先进的PinATA实现性能较差(性能差距达50%)。尽管PinATA能获得约60%的正确判定率和高达94%的特异性指标,但我们发现要开发更具韧性和可靠性的ATAs仍需解决若干局限性,这为构建强健、低维护的测试自动化系统指明了方向。

链接:https://doi.org/10.1145/3728879

8、AudioTest: Prioritizing Audio Test Cases

基于深度神经网络(DNN)的音频分类系统是影响日常生活各类应用(如语音助手)的核心组件。确保此类系统的准确性至关重要,因为分类错误可能导致严重的安全问题与用户信任危机。然而音频分类器的测试面临重大挑战:音频测试样本的人工标注成本极高。测试优先级排序已成为缓解标注成本问题的有效手段,该方法通过优先处理可能被误分类的测试样本,实现关键样本的早期标注,从而提升调试效率。但现有优先级排序方法在音频测试样本上存在局限:1)基于代码覆盖的方法在效果和效率上均逊于基于置信度的方法;2)基于置信度的方法仅依赖预测概率向量,忽略了音频数据的独特性;3)基于变异的方法缺乏针对音频设计的变异操作,难以适用于音频测试样本。为此,我们提出专为音频测试样本设计的新型优先级排序方法AudioTest。其核心思想是:与误分类样本空间距离越近的测试越可能被误分类。基于音频数据的特性,AudioTest生成四类特征:时域特征、频域特征、感知特征和输出特征。该方法将每项测试的四类特征拼接为特征向量,并采用精心设计的特征变换策略,使误分类样本在空间中的分布更紧凑。AudioTest借助训练好的模型,根据变换后的向量预测每项测试的误分类概率,并据此排序。我们在包含纯净与带噪数据集的96个实验对象上评估AudioTest,采用故障检测率(PFD)和平均故障检测百分比(APFD)两项经典指标。结果表明,AudioTest在PFD和APFD上均优于所有对比方法。在纯净数据集上,相比基线方法的平均提升幅度为12.63%至54.58%;在带噪数据集上,提升幅度为12.71%至40.48%。

链接:https://doi.org/10.1145/3728907

9、Automated Attack Synthesis for Constant Product Market Makers

去中心化金融(DeFi)实现了传统金融中许多前所未有的新型应用,但同时也引入了新型安全漏洞。此类漏洞的一个典型代表是代币合约与遵循恒定乘积做市商(CPMM)模型的去中心化交易所(DEX)之间的可组合性缺陷。我们将这类缺陷称为CPMM可组合性漏洞,其根源在于代币合约的设计问题导致其与CPMM模型不兼容,进而危及CPMM生态系统中的其他代币。自2022年以来,此类漏洞已引发23次攻击事件,累计造成220万美元损失。智能合约审计公司BlockSec报告显示,仅2023年2月就发生了138次此类攻击。

本文提出CPMMX工具,能够自动检测整个区块链上的CPMM可组合性漏洞。为实现这种可扩展性,我们首先形式化定义了CPMM可组合性漏洞,发现破坏两个安全不变量即可诱发此类漏洞。基于该发现,我们设计了采用"先浅层后深度"双步检测机制的CPMMX工具:首先通过浅层搜索识别破坏不变量的交易,继而通过深度搜索精炼这些交易以验证攻击者可获利性。我们在两个公共数据集和一个合成数据集上使用五种基线方法进行评估。实验表明,CPMMX的漏洞检测数量是基线方法的1.5至2.5倍,分析速度显著提升且F1分数更高。此外,我们将CPMMX应用于以太坊和币安网络最新区块的所有合约,新发现26个可获利漏洞,潜在攻击总收益达1.57万美元。

链接:https://doi.org/10.1145/3728872

10、Automated Test Transfer across Android Apps using Large Language Models

移动应用在日常生活中的普及要求采用强大的测试策略来确保质量和效率,特别是通过基于使用的端到端移动应用用户界面(UI)测试。然而,手动创建和维护此类测试对开发者而言成本高昂。由于许多应用在多样化UI下具有相似功能,先前研究已证明在同领域不同应用间迁移UI测试的可能性,从而避免了手动编写测试的需求。但这些方法难以适应现实场景中的变化,当源应用和目标应用相似度不高或未能准确迁移测试预言时往往存在局限。本文提出创新技术LLMigrate,利用大语言模型(LLM)高效实现跨移动应用的基于使用的UI测试迁移。实验评估表明,LLMigrate在自动化测试迁移中可实现97.5%的成功率,将手动编写测试的工作量减少91.1%。相较于现有最佳技术,该方案在成功率上提升9.1%,在工作量减少上提高38.2%,为自动化测试迁移设立了新基准。

链接:https://doi.org/10.1145/3728975

11、Beyond Static Pattern Matching? Rethinking Automatic Cryptographic API Misuse Detection in the Era of LLMs

尽管加密API误用的自动化检测已取得显著进展,但由于依赖手动定义模式,其在复杂目标上的精确度仍然有限。大语言模型(LLM)凭借其上下文感知能力为弥补这一缺陷提供了新途径,但其随机性及幻觉问题对精准安全分析应用构成挑战。本文首次系统研究LLM在加密API误用检测中的应用,并获得重要发现:直接应用LLM的不稳定性导致初始报告中超过半数误报。然而,通过将检测范围与现实场景对齐并采用创新的代码与分析验证技术,可显著提升基于LLM检测的可靠性,实现近90%的检测召回率,这一提升远超传统方法,并成功在成熟基准测试中发现未知漏洞。研究同时揭示了当前LLM存在的共性失效模式,包括密码学知识缺失和代码语义误判等盲点。基于这些发现,我们部署了LLM检测系统,在开源Java和Python代码库(含Apache等知名项目)中新发现63个漏洞(47个已确认,7个已完成修复)。

链接:https://doi.org/10.1145/3728875

12、BinDSA: Efficient, Precise Binary-Level Pointer Analysis with Context-Sensitive Heap Reconstruction

指针分析是二进制代码逆向工程领域的基础组件。它可用于重建二进制程序的调用图,并能进一步应用于各种安全分析。然而,二进制代码中符号和类型信息的缺失给有效的指针分析带来了巨大挑战。现有研究在对二进制代码进行指针分析时通常采用近似方法,但这些方法往往效率低下且会产生大量误报目标。本文提出了一种专为二进制指针分析定制的新模型BinDSA,该模型将精确性和效率置于完备性之上。它具备字段敏感性和上下文敏感性,采用基于统一化的技术并重建上下文敏感的堆结构。通过联合恢复数据结构和指向关系,进一步提升了分析精度。评估结果表明,BinDSA的效率比当前最先进技术提升5倍,且在未显著牺牲完备性的情况下显著提高了精确度。我们还将BinDSA应用于CVE可达性分析和漏洞检测,证明了其在安全任务中的有效应用。

链接:https://doi.org/10.1145/3728928

13、BinQuery: A Novel Framework for Natural Language-Based Binary Code Retrieval

二进制函数检索(BFR)在逆向工程中至关重要,用于识别二进制代码中的特定功能,尤其是与恶意行为或漏洞相关的功能。传统的BFR方法依赖启发式规则,往往缺乏处理大规模或多样化二进制分析任务所需的效率和适应性。为应对这些挑战,我们提出了BinQuery——一个基于自然语言的BFR(NL-based BFR)框架,通过自然语言查询以更高的灵活性和精确度检索相关二进制函数。BinQuery引入了创新技术来弥合二进制代码与自然语言之间的信息鸿沟,实现细粒度对齐以提升检索准确度,并利用大语言模型(LLM)优化查询和生成多样化描述。大量实验表明,BinQuery显著超越当前最先进方法,在可比基准测试中召回率@1提升42.55%,性能提高4倍。

链接:https://doi.org/10.1145/3728927

14、Bridge the Islands: Pointer Analysis for Microservice Systems

微服务架构通过将应用程序分解为松散耦合的服务,为企业级软件带来了可扩展性与灵活性的革命。然而这种范式转变为指针分析——一种对支持各类客户端分析至关重要的基础静态分析技术——带来了独特挑战。现有基础分析方法主要针对单体式企业应用设计,难以处理复杂的服务间通信(如远程过程调用和基于消息的通信)以及依赖注入和Web端点配置等核心编程范式。本文提出Micans,这是首个专门针对微服务系统这些挑战设计的指针分析方案,能够构建跨服务的完整值流。我们在多个领域的真实基准测试上对Micans进行了全面评估,重点关注其在解析服务通信、构建调用图等关键程序信息以及支持污点分析等客户端分析方面的有效性。Micans持续显著优于现有最先进方法,证明了其处理复杂跨服务通信和多样化编程范式的能力。这些结果凸显了Micans作为强大基础分析方案的潜力,推动了静态分析能力以适应现代微服务复杂性的发展。

链接:https://doi.org/10.1145/3728896

15、Bridging the Gaps between Graph Neural Networks and Data-Flow Analysis: The Closer, the Better

近年来,深度神经网络在编程任务中的应用取得了显著实践成果,这促使研究者开始探索这些模型执行传统程序分析技术的能力。数据流分析(DFA)作为经典且成熟的分析方法,为评估神经网络在此领域的能力提供了契机。基于DFA与图神经网络(GNN)的结构相似性,我们深入探究GNN在多大程度上能有效建模DFA算法。依托神经算法推理(NAR)中的算法对齐概念,我们识别出两大关键挑战:DFA中位向量的非干扰特性,以及算法不同阶段外部信息的复杂处理机制。针对这些不足,我们提出三种逐步与DFA算法对齐的GNN架构——DFA-GNN−、DFA-GNN和DFA-GNN+。实验评估重点关注模型的泛化能力,特别是在小规模样本训练、大规模输入测试场景下的表现。结果表明,具有更高算法对齐度的GNN(如DFA-GNN+)展现出卓越的泛化能力和样本效率,仅需极少训练数据即可精准处理10倍规模的输入。值得注意的是,仅通过输入-输出对训练的GNN模型,其性能可与采用完整执行轨迹监督(当前NAR研究常用方法)的模型相媲美。这一发现凸显了当GNN与目标算法实现算法对齐时,在推理任务中表现出的高效性与鲁棒性。

链接:https://doi.org/10.1145/3728906

16、Can LLMs Replace Human Evaluators? An Empirical Study of LLM-as-a-Judge in Software Engineering

近年来,大型语言模型(LLM)已被应用于代码生成等多种软件工程(SE)任务,显著推进了软件工程任务的自动化进程。然而,评估这些由LLM生成的代码与文本质量仍具挑战性。当前广泛使用的Pass@k指标不仅需要大量单元测试和配置环境,导致人力成本高昂,且不适用于LLM生成文本的评估。而BLEU等传统指标仅衡量词汇而非语义相似性,也已受到质疑。为此,学界新兴趋势是采用LLM进行自动化评估,即"LLM即评判员"方法。这类方法被认为能比传统指标更好地模拟人类评估,且无需依赖高质量参考答案。但它们在软件工程任务中与人类评估的真实契合度尚未得到验证。

本文通过实证研究探讨了用于评估软件工程任务的LLM即评判员方法,重点关注其与人类判断的一致性。我们选取了七种基于通用LLM的评判方法,以及两种专为评估任务微调的LLM。通过在代码翻译、代码生成和代码摘要这三个最新软件工程数据集上生成LLM响应并进行人工评分后,我们引导这些方法对每个响应进行评估。最终将自动评分结果与人工评估进行对比。研究表明:在代码翻译和代码生成任务中,基于输出的评判方法与人类评分的皮尔逊相关系数分别达到81.32和68.51,接近人类评估水平,显著优于传统最佳指标ChrF++的34.23和64.92。此类方法直接引导LLM输出判断结果,且呈现出更接近人类评分模式的平衡分布特征。最后我们提出洞见与启示,指出当前最先进的LLM即评判员方法在某些软件工程任务中具有替代人类评估的潜力。

链接:https://doi.org/10.1145/3728963

17、Causality-Aided Evaluation and Explanation of Large Language Model-Based Code Generation

尽管代码生成已广泛应用于各种软件开发场景,但生成代码的质量仍无法得到保证。这在基于大语言模型(LLM)的代码生成时代尤为令人担忧——LLMs被视为复杂而强大的黑盒模型,通过高级自然语言规范(即提示词)来生成代码。然而,鉴于LLMs的复杂性和缺乏透明性,有效评估和解释其代码生成能力存在固有挑战。

受因果分析及其软件工程应用领域最新进展的启发,本文提出一种因果驱动的方法来系统分析提示词与代码间的因果关系。该研究面临三个关键技术挑战:(1) 以规范形式表示文本提示词和代码;(2) 建立高层概念与代码特征间的因果关系;(3) 系统分析多样化的提示词变体。针对这些挑战,我们首先提出基于因果图的新型表示方法,对输入提示词中细粒度、人类可理解的概念进行建模。随后利用构建的因果图识别提示词与衍生代码间的因果关系。

我们通过对四个主流LLMs模型应用12种以上提示词调整策略进行研究,展示了该框架的洞察能力。研究结果表明:我们的技术具有揭示LLM有效性机理、帮助终端用户理解预测结果的潜力。此外,实验证明该方法可通过合理校准提示词,为提升LLM生成代码质量提供可操作的改进建议。

链接:https://doi.org/10.1145/3728938

18、ClassEval-T: Evaluating Large Language Models in Class-Level Code Translation

摘要近年来,大型语言模型(LLM)显著提升了自动化代码翻译的性能,在多项传统基准测试中其计算准确率可达80%以上。然而,这些基准中的代码样本多为简短、独立、语句/方法级别且算法导向的类型,与实际编程任务存在偏差。因此,LLM在处理日常开发中所编写代码的实际翻译能力仍不明确。

为此,我们构建了类级别代码翻译基准ClassEval-T,首次系统评估了当前主流LLM在类级别代码翻译任务上的表现。该基准扩展自知名类级别Python代码生成基准ClassEval,涵盖数据库操作、游戏设计等实际编程主题,并包含字段、方法、库依赖等多样化上下文关联。我们耗费360人时完成了向Java和C++的手动迁移,提供完整代码样本及对应测试套件。随后,我们设计了整体翻译、最小依赖翻译和独立翻译三种类级别代码翻译策略,在ClassEval-T上评估了涵盖商业型、通用型和代码专用型的八个最新LLM(不同系列与参数量)。实验结果表明:与最广泛研究方法级别代码翻译的基准相比,LLM性能出现显著下降;不同模型间表现差异明显,证实ClassEval-T能有效衡量当前LLM能力。我们进一步探讨了不同翻译策略的适用场景,以及LLM在处理类样本时对依赖关系的感知能力。最后,本文对最佳性能LLM产生的1,243个失败案例进行了全面归因分析,为实践指导和未来研究提供启示。

链接:https://doi.org/10.1145/3728940

19、Clause2Inv: A Generate-Combine-Check Framework for Loop Invariant Inference

循环不变式推断是程序验证中一个基础且具有挑战性的问题。近期研究采用"生成-验证"框架,通过迭代方式在生成步骤产生候选循环不变式,并在验证步骤进行确认。该框架的主要挑战在于每次迭代中产生高质量的候选不变式,以加速推断过程的收敛。我们通过实证发现:由于逻辑连接词的复杂性,现有方法可能难以直接生成完整不变式,但正确循环不变式的所有子句通常已出现在历史生成结果中。这一发现促使我们改进现有框架,提出了"生成-组合-验证"新框架,将循环不变式推断任务分解为子句生成和子句组合两个阶段。具体而言,我们基于新框架提出了一种新型循环不变式推断方法:采用基于大语言模型的子句生成器与反例驱动的子句组合器。子句生成器利用大语言模型生成大量子句;子句组合器则基于历史反例将生成子句组合成不变式。实验表明,该方法显著优于现有循环不变式推断方案:在线性不变式推断任务中解决316题中的312题,在非线性任务中解决50题中的44题,分别比现有基线方法多解决至少93题和16题。该框架具有良好扩展性,可通过将候选不变式拆分为子句的方式,灵活适配当前基于"生成-验证"框架的各类现有方法。评估显示经轻微适配后,我们的方法能同时提升现有方案的效果与效率:例如Code2Inv原本解决210个线性问题(平均耗时137.6秒),改进后可解决252个问题(平均耗时降至17.8秒)。

链接:https://doi.org/10.1145/3728920

20、ConTested: Consistency-Aided Tested Code Generation with LLM

近年来,大语言模型(LLM)在代码生成领域取得显著进展,能够根据自然语言需求自动生成代码片段。尽管已达到最先进水平,但LLM生成的代码往往存在准确性与可靠性问题,开发者需耗费大量精力进行调试和评估。现有研究提出利用一致性原则:通过选择能通过更多测试(内部一致性)且在多轮生成中表现稳定(外部一致性)的代码。但由于测试用例同样由LLM生成,依赖错误测试的多数投票会导致不可靠结果。为此,我们提出一种轻量级交互框架,通过融入用户反馈有效引导一致性优化。实验表明,该方法仅需极少人工介入即可显著提升性能。我们在每轮迭代中引入代码与测试的"排序-修正-修复"协同进化机制,通过双向迭代提升二者质量,使代码与测试间的一致性投票更可靠。经大量实验验证,ConTested框架在GPT-3.5和GPT-4o等多个LLM上均表现优异:相对GPT-3.5提升32.9%,相对GPT-4o提升16.97%,较当前最先进的后处理技术MPSC提升11.1%。该改进仅需4轮用户交互,人力成本极低。用户研究进一步证实了ConTested的可行性与成本效益,表明其能在不过度增加负担的前提下有效提升代码生成质量。

链接:https://doi.org/10.1145/3728902

21、Copy-and-Paste? Identifying EVM-Inequivalent Code Smells in Multi-chain Reuse Contracts

随着以太坊上Solidity合约的发展,越来越多的开发者开始在其他兼容区块链上复用这些合约。然而,开发者可能忽视区块链系统设计之间的差异(如Gas机制和共识协议),导致相同合约在不同区块链上无法实现与以太坊一致的执行效果。这种不一致性揭示了复用合约中的设计缺陷,暴露出阻碍代码可复用性的代码坏味,我们将这种不一致性定义为EVM不等价代码坏味。

本文首次通过实证研究揭示EVM不等价代码坏味的成因与特征。为确保所识别的坏味真实反映开发者关切,我们收集并分析了1,379份安全审计报告和326篇Stack Overflow帖子,这些资料涉及币安智能链(BSC)和Polygon等EVM兼容区块链上的复用合约。采用开放式卡片分类法,我们定义了六类EVM不等价代码坏味。针对自动化检测需求,我们开发了名为EquivGuard的工具。该工具采用静态污点分析识别关键路径,并通过符号执行验证路径可达性。通过对六大区块链上905,948份合约的分析,我们发现EVM不等价代码坏味普遍存在,平均出现率达17.70%。虽然存在代码坏味的合约未必直接导致财务损失或攻击,但其高出现率及涉及的巨额资产管理规模,凸显了复用这些存在坏味的以太坊合约的潜在威胁。因此,建议开发者摒弃复制-粘贴的编程实践,并在复用以太坊合约前检测EVM不等价代码坏味。

链接:https://doi.org/10.1145/3728921

22、CrossProbe: LLM-Empowered Cross-Project Bug Detection for Deep Learning Frameworks

深度学习(DL)模型可能给底层DL框架带来可靠性挑战。这些框架易存在缺陷,可能导致崩溃或错误结果,尤其在涉及复杂模型架构和高计算需求时。此类框架缺陷会破坏DL应用,影响用户体验并可能造成经济损失。传统测试DL框架的方法难以适应模型结构的庞大搜索空间、多样化的API以及混合编程与硬件环境的复杂性。尽管近期基于大语言模型(LLM)的技术改进了DL框架模糊测试,但其效果高度依赖于输入提示的质量与多样性,而现有提示通常基于单一框架数据构建。  

本文提出一种创新方法,通过利用“镜像问题”(即不同框架中因共通功能存在的类似缺陷)来增强DL框架的测试生成。我们的方法基于以下发现:如PyTorch和TensorFlow等DL框架常因依赖项、开发者错误或边缘情况输入而存在共性缺陷。我们开发了CrossProbe工具,利用LLM从某一框架的现有问题中有效学习,并将获得的知识迁移至另一框架的测试用例生成中,从而发现镜像问题,实现跨框架缺陷检测。为克服框架间功能不兼容与实现差异导致的测试用例生成挑战,我们引入了三个处理流程:对齐、筛选和区分。这些流程通过建立API对数据库、过滤不适用案例及强化跨框架差异,降低迁移错误。实验表明,CrossProbe节省了36.3%的生成迭代次数,且相比现有最先进的基于LLM的测试技术,问题迁移成功率提升25.0%。通过迁移知识,CrossProbe检测到24个独特缺陷,其中19个为先前未知且均需依赖深度学习跨框架知识才能识别。

链接:https://doi.org/10.1145/3728984

23、DataHook: An Efficient and Lightweight System Call Hooking Technique without Instruction Modification

系统调用是用户空间程序与操作系统内核交互的主要接口。通过挂钩系统调用,可以分析和修改用户空间程序的行为。本文提出DataHook,一种针对32位程序的高效轻量级系统调用挂钩技术。与现有系统调用挂钩技术相比,DataHook通过仅修改少量数据元素而不改变任何程序指令,以极低的挂钩开销实现挂钩。这一独特特性不仅避免了二进制重写带来的多线程冲突,还能支持程序应用更高效的用户空间操作系统子系统。然而现有系统调用挂钩技术难以同时满足这些目标:虽然系统调用用户分发(SUD)和ptrace等技术无需重写进程指令,但会引入显著挂钩开销;而低开销技术通常涉及多字节或多指令的二进制重写,这会带来新的问题。DataHook通过利用32位程序在执行系统调用时的特定行为,巧妙解决了这些问题。简言之,与64位程序不同,32位程序在进行系统调用时使用间接调用指令跳转至执行syscall/sysenter的函数。本文通过操纵间接调用过程中涉及的数据依赖关系来实现系统调用挂钩。这一特性普遍存在于基于glibc的Linux系统上的32位程序中(无论运行于x86或x86-64架构),因此DataHook可部署于这些系统。实验结果表明,DataHook将挂钩开销降至现有技术的1/5.4至1/1429.0。当将DataHook应用于服务器程序使其使用用户空间网络协议栈时,服务器性能提升约4.3倍。在Redis中的应用显示,DataHook仅导致4.0%的性能损失,而其他技术会造成8.0%至94.7%的性能损失。

链接:https://doi.org/10.1145/3728874

24、DeCoMa: Detecting and Purifying Code Dataset Watermarks through Dual Channel Code Abstraction

水印技术是一种用于识别数据来源的方法,可帮助防止受保护数据集的滥用。现有代码水印方法借鉴后门研究思想,通过嵌入隐蔽触发器作为水印。尽管这些方法对稀释攻击和后门检测具有高度抵抗力,但其鲁棒性尚未得到充分评估。为填补这一空白,我们提出DeCoMa——一种检测与净化代码数据集水印的双通道方法。针对代码水印隐蔽性带来的高壁垒,DeCoMa利用代码的双通道约束将样本泛化并映射至标准化模板,继而通过识别标准化模板内配对元素的异常关联来提取隐藏水印。最后,DeCoMa通过移除所有含检测水印的样本实现数据净化,从而实现受保护代码的静默占用。我们开展大量实验评估DeCoMa的有效性与效率,涵盖14种代码水印类型和3类代表性智能代码任务(共14种场景)。实验结果表明,DeCoMa在14种水印检测场景中均实现100%的稳定召回率,显著优于基线方法。此外,DeCoMa能有效攻击嵌入率低至0.1%的代码水印,且在净化数据集上训练后仍保持可比模型性能。由于无需模型训练即可完成检测,DeCoMa的效率远超所有基线方法,加速比达31.5至130.9倍。该结果呼吁开发更先进的代码模型水印技术,而DeCoMa可为未来评估提供基线标准。

链接:https://doi.org/10.1145/3728952

25、DecLLM: LLM-Augmented Recompilable Decompilation for Enabling Programmatic Use of Decompiled Code

反编译器在逆向工程(RE)中被广泛用于将已编译的可执行文件转换为人类可读的伪代码,并支持各种安全分析任务。现有的反编译器(如IDA Pro和Ghidra)侧重于提升反编译代码的可读性而非可重编译性,这限制了进一步的程序化应用——例如基于CodeQL的漏洞分析需要可编译的反编译代码版本。近期基于大语言模型(LLM)的改进方法虽然对人类逆向分析师有帮助,但遗憾的是仍遵循相同路径。

本文首次探索如何利用现成的大语言模型实现可重编译的反编译——自动将反编译器输出修正为可编译版本。我们首先通过试点研究表明:现有基于规则和基于LLM的方法均难以实现此目标。基于这些发现,我们设计了DecLLM:一种基于迭代LLM修复的循环框架,利用静态重编译和动态运行时反馈作为验证机制,逐步修复反编译器输出。我们在主流C基准测试和真实二进制文件上使用GPT-3.5和GPT-4测试DecLLM,结果表明现成LLM可实现约70%的重编译成功率上限(即100个原本不可重编译的反编译输出中70个变为可重编译)。我们还通过基于CodeQL的漏洞分析验证了可重编译代码的实际应用价值,这种分析无法直接在二进制文件上执行。针对剩余30%的困难案例,我们深入分析其错误类型,为未来面向反编译的LLM设计改进提供见解。

链接:https://doi.org/10.1145/3728958

26、DepState: Detecting Synchronization Failure Bugs in Distributed Database Management Systems

分布式数据库管理系统(DDBMS)对管理大规模分布式数据至关重要。与单节点数据库不同,DDBMS部署于集群环境,将数据分布至多个节点。其同步过程通过应对数据和集群更新来维持数据一致性。由于同步机制复杂度高,同步缺陷不可避免,可能导致数据不一致、事务错误或集群崩溃,严重损害DDBMS的可用性与可靠性。然而目前针对DDBMS同步过程的测试研究相对匮乏。本文提出DepState框架用于检测同步故障缺陷。该框架通过模拟数据分片和动态集群状态的复杂性,建立跨节点表间依赖关系,并系统性地引入受控的集群状态变化。我们在四大DDBMS系统(MySQL NDB Cluster、MySQL InnoDB Cluster、MariaDB Galera Cluster和TiDB Cluster)上应用DepState,发现25个新缺陷(其中13个已确认)。与最先进工具对比表明:DepState在24小时内多发现14个同步故障缺陷,且在同步相关函数的代码行覆盖率上分别比Jepsen、Mallory、SQLsmith、SQLancer和Mozi高出6.13%-66.51%、5.82%-57.28%、14.12%-83.30%、36.81%-83.88%和43.24%-54.28%。

链接:https://doi.org/10.1145/3728965

27、Detecting Isolation Anomalies in Relational DBMSs

关系数据库管理系统(DBMS)通过事务确保数据一致性与完整性,并提供多种隔离级别以平衡一致性与性能。然而,关系型DBMS中的隔离异常可能破坏其宣称的隔离级别,导致严重后果(例如错误的查询结果和数据库状态)。现有隔离检查器仅能处理简单的键值式数据模型及相关的read(key)/write(key,value)操作,无法直接支持关系数据模型和复杂SQL操作。

本文提出新型黑盒式关系型DBMS隔离检查器IsoRel,可支持关系数据模型与复杂SQL操作。为推断关系型DBMS中事务间的依赖关系,我们首先设计了一种与隔离机制无关的SQL语句插桩方案:通过在每张数据库表中使用两个辅助列,记录每条SQL语句访问的数据行。随后利用SQL语句的记录数据构建关系型事务的依赖图,并根据异常模式识别隔离异常。

我们在五种广泛使用的关系型DBMS(MySQL、PostgreSQL、MariaDB、CockroachDB和TiDB)及其所有支持的隔离级别上评估IsoRel,共发现48种违反Adya所定义隔离级别的独特隔离异常。

链接:https://doi.org/10.1145/3728953

28、Doctor: Optimizing Container Rebuild Efficiency by Instruction Re-orchestration

容器化技术彻底改变了软件部署方式,其中Docker凭借其易用性和一致的运行时环境成为行业引领者。随着Docker使用量的增长,优化Dockerfile性能(特别是减少重建时间)已成为维持高效CI/CD流水线的关键。然而,现有优化方法主要针对单次构建,未考虑修改和迭代过程中产生的重复重建成本,限制了长期效率收益。为弥补这一缺陷,我们提出Doctor方法——通过指令重排序提升Dockerfile构建效率,该方法攻克了四大核心挑战:识别指令依赖关系、预测未来修改、确保行为等效性以及管理优化计算复杂度。我们基于Dockerfile语法建立了完整的依赖关系分类体系,并通过历史修改分析优先处理频繁修改的指令。Doctor采用加权拓扑排序算法优化指令顺序,在保持功能性的同时最小化未来重建时间。对2,000个GitHub代码库的实验表明,Doctor成功优化了92.75%的Dockerfile,平均降低26.5%的重建时间,其中12.82%的文件实现超50%的降幅。值得注意的是,86.2%的案例保持了功能相似性。这些发现为Dockerfile管理提供了最佳实践,使开发者能通过科学的优化策略提升Docker效率。

链接:https://dl.acm.org/doi/10.1145/3728870

29、Dynamically Fusing Python HPC Kernels

近年来,高性能计算领域呈现出两大趋势:一是越来越多地采用Kokkos等性能可移植框架,二是Python等解释型语言的普及。PyKokkos顺应这些趋势,允许开发者使用Python编写性能可移植的内核,显著提升了开发效率。然而,开发者仍面临并行代码组织的问题——将代码拆分为独立内核虽能简化测试与调试,但可能导致性能下降。为让开发者自由组织内核的同时确保性能,我们提出PyFuser:一个用于自动融合性能可移植PyKokkos内核的程序分析框架。该框架动态追踪内核调用,并在应用程序请求计算结果时延迟融合内核。通过提升数据复用率、改进编译器优化效果并减少内核启动开销,PyFuser生成的融合内核可实现加速,且无需修改现有PyKokkos代码。我们还引入了自动化代码转换技术,进一步优化PyFuser生成的融合内核。实验表明,在NVIDIA/AMD GPU及Intel/AMD CPU平台上,PyFuser相比未融合内核平均可实现3.8倍的加速比。

链接:https://doi.org/10.1145/3728959

30、Effective REST APIs Testing with Error Message Analysis

REST API在现代企业系统构建中至关重要,但对其进行有效测试仍存在挑战,尤其是从规范中推断约束条件存在困难。现有测试方法通常依赖HTTP状态码的反馈来指导输入生成,但忽略了伴随错误消息中的宝贵信息,导致探索API输入空间的效果受限。本文提出EmRest——一种利用错误消息分析来增强REST API有效及异常测试输入生成的黑盒测试方法。针对被测操作,EmRest首先识别其每个输入参数所有可能的值分配策略,随后基于这些策略反复应用组合测试来采样测试输入,并通过统计分析收到的错误消息(400系列状态码)来推断并排除无效的值分配策略组合(即输入空间的约束)。此外,EmRest通过变异最终确定的有效值分配策略来生成异常测试输入,并对收到的错误消息(500系列状态码)进行分类以识别易出故障的操作,为其分配更多测试资源。在16个真实REST API上的实验结果表明,EmRest在50%的API中实现了比现有最优方法更高的操作覆盖率,并检测到226个其他方法未发现的独特错误。

链接:https://doi.org/10.1145/3728964

31、Enhanced Prompting Framework for Code Summarization with Large Language Models

代码摘要技术对于提升软件开发效率至关重要,它能帮助开发者快速理解并维护软件项目。近期研究利用大型语言模型生成精准代码摘要已展现出优异性能,这主要得益于其强大的生成能力。采用连续提示技术的语言模型能够探索更广阔的问题空间,从而释放更大潜力。然而此类方法也面临特定挑战,尤其是在适配任务特定场景方面——而这正是离散提示的优势所在。此外,编程语言与自然语言之间的本质差异会增加语言模型的理解难度,影响复杂编程场景下摘要的准确性与相关性。这些问题可能导致输出结果与实际需求不匹配,凸显出需要进一步研究以增强语言模型在代码摘要中的有效性。  

为突破这些局限,我们融合上述两种方法的优势,提出EP4CS框架——一种面向大语言模型代码摘要的增强型提示学习框架。首先设计Mapper模块,通过预训练<代码,知识>对促进提示向量根据语言模型输出进行优化更新;同时开发结构分析智能体(Struct-Agent),使语言模型能深入解析编程语言的语法结构以更精准理解复杂代码。实验结果表明:在相同参数规模下,本框架相较现有基线方法显著提升性能。基于StarCoderBase1B的Java测试中,EP4CS在BLEU、METEOR和ROUGE-L指标分别提升6.59%、7.06%与4.43%,同时展现出强劲的鲁棒性。在SentenceBERT语义评估维度更接近真实场景需求。人工评估与案例研究证实,EP4CS生成的摘要质量更高、相关性更强,全面优于基线方法。

链接:https://doi.org/10.1145/3728949

32、Enhancing Smart Contract Security Analysis with Execution Property Graphs

智能合约漏洞已导致重大经济损失,随着其复杂性的日益增加,彻底防范黑客攻击变得愈发困难。这一趋势凸显了对高级取证分析和实时入侵检测的迫切需求,其中动态分析在剖析智能合约执行过程中发挥着关键作用。因此,亟需一种统一且通用的智能合约执行表示方法,并辅以高效的技术手段,以实现对各类新兴攻击的建模与识别。

我们提出Clue——一个专为以太坊虚拟机设计的动态分析框架。其核心能力在于捕获合约执行过程中的关键运行时信息,并采用创新的基于图的表示方法:执行属性图。Clue的关键特性是其创新的图遍历技术,该技术擅长检测复杂攻击,包括(只读型)重入攻击和价格操纵攻击。评估结果表明,Clue以高真阳性率和低假阳性率展现出卓越性能,优于现有最先进工具。此外,Clue的高效性使其成为取证分析和实时入侵检测的双重利器。

链接:https://doi.org/10.1145/3728924

33、Enhancing Vulnerability Detection via Inter-procedural Semantic Completion

受深度学习进展的启发,众多基于学习的漏洞检测方法应运而生,这些方法主要基于函数级操作以实现可扩展性。然而这种设计存在一个关键局限:许多漏洞跨越多个函数,导致函数级方法丢失被调用函数的语义信息,无法捕捉真实的漏洞模式。为解决这一问题,我们提出VulnSC框架,该创新框架通过补充过程间语义来增强基于学习的检测方法。VulnSC为数据集检索被调用函数的源代码,并利用大语言模型(LLMs)配合精心设计的提示词生成函数摘要。经过摘要增强的数据集被输入神经网络,以实现更精准的漏洞检测。VulnSC是首个将过程间语义整合到现有基于学习的漏洞检测方法中,同时保持可扩展性的通用框架。我们在两个广泛使用的数据集上对四种最先进的基于学习方法进行评估,实验结果表明VulnSC以极小的额外计算开销显著提升了检测性能。

链接:https://doi.org/10.1145/3728912

34、Extended Reality Cybersickness Assessment via User Review Analysis

摘要近年来,扩展现实(XR)软件生态系统已成为下一代普适计算平台,其通过沉浸式交互体验为用户提供服务。然而XR生态系统存在晕眩症问题,会严重影响用户舒适度与安全,引发头痛、定向障碍等症状,这使得有效评估晕眩症成为亟待解决的重要课题。当前评估XR软件晕眩症的先进方法通常需在用户使用XR时监测其生理指标,这种方法严重依赖人工游戏测试,存在可扩展性受限的问题。XR应用商店中的用户评论能为开发者提供应用晕眩症评级及其成因的重要信息,但海量用户评论难以通过人工方式分析,且现有自动评论分析方法大多仅能提供粗粒度结果(如提取评论讨论的若干高层主题组)。大语言模型(LLM)的最新进展可能带来新机遇,但直接利用LLM评估XR晕眩症存在挑战:LLM对大量短文本处理效果不佳,且上下文窗口有限。为此,我们提出XRCare框架——通过细粒度用户评论分析实现XR应用晕眩症自动评估与根源推理的综合解决方案。该框架包含三阶段:(1)洞察池构建:汇集领域专家提供的晕眩症分析链及对应分析结果;(2)推理图谱构建:通过自演进层级图动态提取、分类和维护用户评论中引发晕眩症的成因;(3)多智能体演绎推理:利用多智能体系统模拟多样化用户群体,分析晕眩症强度等级并追溯成因。这种结构化方法使XRCare能系统化识别、分类和处理晕眩症实例。实验方面,我们构建了包含来自9,667款XR应用的685,111条用户评论的大规模数据集。评估表明,XRCare在最佳基线基础上将F1分数提升20.63%,平均超越所有基线32.27%,同时提供更精确细致的可解释性洞察。

链接:https://doi.org/10.1145/3728933

35、FANDANGO: Evolving Language-Based Testing

基于语言的模糊测试器利用形式化输入规范(语言)为被测程序生成任意规模且多样化的有效输入集。现代基于语言的测试生成器结合语法与约束条件,以满足句法和语义层面的输入约束。该领域的领先输入生成工具ISLA采用符号约束求解技术处理输入约束。虽然使用求解器使ISLA成为精度最高的模糊测试器之一,但也导致其运行速度缓慢。

本文探索以基于搜索的测试作为符号约束求解的替代方案。我们采用遗传算法,通过输入规范迭代生成候选输入,依据既定约束评估这些输入,通过句法有效的变异演化输入种群,保留适应度更优的个体直至满足语义输入约束。这种类似于自然遗传进化的演化过程,逐步产生能同时覆盖语义和句法的改进输入。此项改进显著提升了基于语言的测试效率:实验表明,相较于ISLA,我们基于搜索的FANDANGO原型在保持同等精度的前提下,速度提升一至三个数量级。

基于搜索的方法不再将约束限制于约束求解器的(微型)语言范畴。FANDANGO允许约束条件使用完整的Python语言及其库。这种表达自由度为测试人员提供了前所未有的测试输入塑造灵活性,使其能够设定任意测试生成目标:"请生成1000个有效测试输入,其中电压字段遵循高斯分布且始终不超过20毫伏"。

链接:https://dl.acm.org/doi/10.1145/3728915

36、Fairness Mediator: Neutralize Stereotype Associations to Mitigate Bias in Large Language Models

大型语言模型(LLM)虽在众多应用中展现出卓越性能,却会无意间吸收训练数据中的伪相关性,导致偏见概念与特定社会群体之间形成刻板印象关联。这些关联延续甚至放大了有害的社会偏见,引发了对公平性的重大关切——这正是软件工程领域的核心议题。为缓解此类偏见,现有研究尝试在推理过程中将模型嵌入投影至无偏见空间,但由于其与下游社会偏见的对齐程度较弱,这些方法效果有限。受到LLM中概念认知主要通过线性关联记忆机制(即MLP层中键值映射)实现的启发,我们提出偏见概念与社会群体同样以实体(键)和信息(值)对的形式编码,可通过操作这种编码机制促进更公平的关联。为此,我们提出公平中介器(FairMed)——一个高效且有效的偏见缓解框架,通过中和刻板印象关联来实现去偏。该框架包含两个核心组件:刻板关联探测器和对抗去偏中和器。探测器通过使用以偏见概念(键)为核心的提示词,捕获MLP层激活中编码的刻板关联,并检测社会群体(值)的发射概率;随后,对抗去偏中和器在推理过程中干预MLP激活,使不同社会群体间的关联概率趋于均衡。在九类受保护属性上的大规模实验表明,FairMed在效果上显著优于现有最优方法,平均偏见削减率最高达84.42%。

链接:https://doi.org/10.1145/3728881

37、Finding 709 Defects in 258 Projects: An Experience Report on Applying CodeQL to Open-Source Embedded Software (Experience Paper)

嵌入式软件部署于全球数十亿设备中,包括医疗设备和自动驾驶汽车等安全关键系统。其缺陷可能造成严重后果。由于多数嵌入式软件产品整合了开源嵌入式软件(EMBOSS),采用适当机制规避缺陷对EMBOSS工程师至关重要。静态应用安全测试(SAST)工具作为常见安全实践手段,可帮助识别高频漏洞。现有SAST研究主要针对常规(非嵌入式)软件,缺乏对嵌入式软件领域的应用认知。嵌入式软件在语义结构、代码实践和构建配置方面与常规软件存在显著差异,这些因素都会影响SAST工具的实际效能。

本文通过大规模实证研究,分析了258个主流EMBOSS项目的SAST应用现状。结合程序分析和开发者调研(N=25)发现:仅3%的项目采用超越基础编译器分析的高级SAST工具。开发者认为工具有效性不足和误报率高是主要制约因素。为此,我们应用最先进的CodeQL SAST工具进行实测,评估其易用性与实效性。在258个项目中,CodeQL检出709个真实缺陷(误报率34%),其中535个(75%)为潜在安全漏洞(涉及微软、亚马逊和阿帕奇基金会维护的重点项目)。EMBOSS工程师已确认376个缺陷(53%),主要通过合并我们提交的拉取请求;另促成2个CVE漏洞编号的分配。基于此,我们提议将检测流程集成至EMOSS持续集成(CI)管道,已有37个活跃仓库(占比71%)采纳该方案。研究表明:当代SAST工具具备低误报率与高缺陷检出效能,我们强烈建议EMBOSS工程师予以采用。

链接:https://doi.org/10.1145/3728923

38、Fixing Outside the Box: Uncovering Tactics for Open-Source Security Issue Management

在快速演变的软件开发领域中,开源软件(OSS)安全漏洞的修复已变得至关重要。然而,学术界和工业界现有研究与工具主要依赖有限解决方案(如脆弱版本调整和采用补丁)来处理已识别的漏洞。而开源社区实际采用了更为灵活多样的应对策略,亟需通过整体性实证研究来探索这些多样化策略的普及程度、分布特征、偏好选择及实施效果。为此,本文对开源项目中的漏洞修复策略(RT)进行了系统分类研究,并评估了各类策略的优劣。本研究通过对GitHub上21,187个问题进行实证分析,揭示了开源社区修复策略的覆盖范围及有效性。我们构建了包含44种具体修复策略的层次化分类体系,并评估了其修复效果和实施成本。研究发现:社区高度依赖替代依赖库、漏洞规避等社区驱动策略(其中44%尚未被前沿工具支持),通过分析修复方案的采纳情况和拒绝原因,揭示了社区对特定修复方法的偏好。研究同时指出现代漏洞数据库存在严重缺陷——54%的CVE条目缺乏修复建议,而GitHub议题中93%的可操作解决方案可有效弥补这一缺口。

链接:https://doi.org/10.1145/3728977

39、FreeWavm: Enhanced WebAssembly Runtime Fuzzing Guided by Parse Tree Mutation and Snapshot

WebAssembly作为一种低级、可移植的语言,已被广泛应用于浏览器和区块链等多个领域,成为推动互联网发展的革命性力量。然而,WebAssembly运行时中的缺陷和漏洞会在运行WebAssembly应用程序时导致意外结果。目前已有多种方案被提出用于检测WebAssembly运行时的漏洞,其中模糊测试因其显著效果成为最具前景和说服力的方法。尽管潜力巨大,但由于WebAssembly运行时语法复杂性——现有方法缺乏对独特模块化代码结构的深入理解,导致生成的测试输入难以触及运行时深层逻辑,限制了其揭示漏洞的有效性。

为弥补这一不足,我们提出FreeWavm——通过激进突变WebAssembly代码结构来模糊测试运行时的新型框架。技术层面,我们将WebAssembly字节码转换为能捕捉代码结构复杂特征的解析树格式。为生成具有意义的测试输入,设计了结构感知突变模块:采用定制化节点优先级策略筛选解析树中的关键节点,并施加特定结构突变。为确保突变后测试输入的有效性,FreeWavm配备自动修复机制来修补突变后的解析树。此外,我们利用解析树快照促进输入进化与整体模糊测试流程。通过在多类WebAssembly运行时上进行广泛实验,实证结果表明FreeWavm能有效触发运行时中结构特异性崩溃,性能优于同类方案。该框架已发现69个未知漏洞,其中24个目前已获得CVE编号。

链接:https://doi.org/10.1145/3728877

40、Freesia: Verifying Correctness of TEE Communication with Concurrent Separation Logic

可信执行环境(TEE)作为现代处理器中的安全扩展,为敏感代码和数据提供了安全的运行时环境。尽管TEE旨在保护应用程序及其私有数据,但其庞大的代码库常存在可能危及数据安全的漏洞。虽然已有形式化验证工作针对TEE标准及实现的功能与安全性展开,但对并发场景下TEE正确性的验证仍不充分。本文提出一种名为Freesia的增强方案,通过形式化验证的并发分离逻辑确保TEE的并发安全性。基于对GlobalPlatform TEE标准的深入分析,Freesia解决了TEE通信接口中的数据竞争问题,并确保客户端与TEE间共享内存的一致性保护。我们在开源TEE平台OP-TEE中实现了Freesia原型,并利用Iris并发分离逻辑框架对其并发正确性进行建模与验证。通过实际案例研究和性能评估,进一步证明了Freesia的有效性与高效性。

链接:https://doi.org/10.1145/3728967

41、GUIPilot: A Consistency-Based Mobile GUI Testing Approach for Detecting Application-Specific Bugs

图形用户界面(GUI)测试对于确保移动应用可靠性至关重要。现有最先进的GUI测试方法虽能成功探索更多应用场景并发现应用崩溃等通用缺陷,但工业级GUI测试还需检测特定于应用的缺陷,例如屏幕布局、控件位置或GUI转场效果与设计稿之间的偏差。这些由应用设计师创建的设计稿明确了预期屏幕、控件及其对应行为。验证GUI设计与实现的一致性虽耗时费力,却在工业GUI测试中具有重要作用。  

本研究提出一种检测移动应用设计与实现间不一致性的方法。移动设计通常包含两类设计稿:(1) 预期屏幕外观(如控件布局、颜色和形状);(2) 预期屏幕行为(如带有文本描述的控件如何触发屏幕跳转)。给定设计稿及其对应应用实现,本方法可同时检测屏幕级和流程级不一致性。在屏幕检测方面,通过将屏幕抽象为控件容器(每个控件以位置、宽高和类型表示),定义控件偏序关系及替换、插入、删除操作的代价,将屏幕匹配问题转化为可优化的控件对齐问题。在流程检测方面,将指定GUI转场转化为屏幕操作序列(如点击、长按、文本输入),并提出视觉提示机制使视觉语言模型推断屏幕控件的具体操作,从而验证预期转场是否被正确实现。  

在80个移动应用和160个设计稿上的实验表明:(1) 屏幕不一致性检测精度达99.8%,召回率达98.6%,分别较GVT等现有最优方法提升66.2%和56.6%;(2) 流程不一致性检测误差为零。此外,在交易类移动应用上的工业案例研究中,本方法成功检测出9个应用缺陷且均获原应用专家确认。代码已开源:https://github.com/code-philia/GUIPilot。

链接:https://doi.org/10.1145/3728909

42、Gamifying Testing in IntelliJ: A Replicability Study

游戏化是一种新兴技术,旨在提升传统枯燥任务(如软件测试)中的参与度和绩效。已有研究表明,通过提供成就和反馈机制,游戏化系统具有改善软件测试流程的潜力。然而,仍需在不同环境、编程语言和参与者群体中进一步验证这些益处。本文旨在复现并验证IntelliGame(一款IntelliJ IDEA游戏化插件)的效果,该插件旨在激励开发者编写和执行测试。研究目标是将早期研究中观察到的效益推广至新语境(即TypeScript编程语言和更大规模的参与者群体)。本次复现研究包含一项受控实验,招募174名参与者并分为两组:一组使用IntelliGame插件,另一组不使用任何游戏化插件。研究采用双组实验设计,比较两组在测试行为、覆盖率、变异分数及参与者反馈方面的差异。通过测试指标和参与者问卷收集数据,并进行统计分析以确定统计显著性。使用IntelliGame的参与者在测试实践中表现出比对照组更高的参与度和生产力,具体体现在创建更多测试用例、提高测试执行频率以及增强测试工具使用率。这些改进最终催生了更优质的代码实现,凸显了游戏化在提升功能成果和激励用户参与测试方面的有效性。本复现研究证实,通过IntelliGame实现的游戏化能对软件测试行为和开发者参与编码任务产生积极影响。这些发现表明,将游戏元素集成到测试环境中可成为改进软件测试实践的有效策略。

链接:https://doi.org/10.1145/3728983

43、GoPV: Detecting Blocking Concurrency Bugs Related to Shared-Memory Synchronization in Go

Go是一种流行的并发编程语言,它采用消息传递和共享内存同步原语来实现不同线程(即goroutine)间的交互。然而,同步原语的误用极易导致阻塞型并发缺陷,包括死锁和goroutine泄漏。尽管与消息传递相关的阻塞型并发缺陷日益受到关注,但针对共享内存同步原语误用引发的阻塞型并发缺陷的研究却十分有限。本文提出GoPV——一个基于静态分析的并发缺陷检测工具,通过执行并发分析和(后)支配者分析来判定同步原语是否被误用,从而识别阻塞型并发缺陷。我们在8个基准测试程序和21个大型真实Go项目上对GoPV进行评估。实验结果表明,GoPV不仅成功检测出8个基准测试程序中所有与共享内存同步相关的阻塞型并发缺陷,还在2.78小时内从21个大型Go应用中发现了17个此类缺陷。

链接:https://doi.org/10.1145/3728979

44、Hulk: Exploring Data-Sensitive Performance Anomalies in DBMSs via Data-Driven Analysis

性能对数据库管理系统(DBMS)至关重要,这类系统始终被设计用于高效处理不断变化的工作负载。然而,基于成本的优化器(CBO)及其交互机制的复杂性可能引发实现错误,导致数据敏感的性能异常。这些异常在某些数据集下可能导致与预期设计相比显著的性能下降。为诊断性能问题,DBMS开发者通常依赖直觉或与基线DBMS的执行时间进行对比,但这些方法忽略了数据集对性能的影响,导致仅能识别和解决部分性能问题。  

本文提出Hulk系统,通过数据驱动分析自动探索这类数据敏感的性能异常。其核心思想是在数据集演化过程中识别性能异常:首先通过估算不同数据量下的合理响应时间范围来定位性能陡降点,随后通过寻找符合性能预期的合理执行计划来检测这些陡降点是否偏离预期性能。我们在六种广泛使用的DBMS(MySQL、MariaDB、Percona、TiDB、PostgreSQL和AntDB)上评估Hulk,共报告135个异常,其中129个被确认为新缺陷(含14个CVE漏洞),且94个属于数据敏感的性能异常。

链接:https://doi.org/10.1145/3728973

45、ICEPRE: ICS Protocol Reverse Engineering via Data-Driven Concolic Execution

随着数字化转型的推进,工业控制系统(ICS)正变得日益开放和智能化。然而,ICS协议固有的脆弱性对设备和系统构成重大安全威胁。ICS协议的专有特性使得其安全分析和防护机制部署变得复杂。协议逆向工程旨在缺乏官方规范的情况下推断协议的语法、语义及状态机。传统协议逆向工程工具因缺乏可执行环境、推断策略不完善及网络流量质量低下而面临显著局限。本文提出ICEPRE——一种基于混合执行的新型数据驱动协议逆向工程方法,其独特地将网络轨迹与静态分析相结合。与传统依赖可执行环境的方法不同,ICEPRE通过静态追踪程序对特定输入消息的解析过程,采用创新的字段边界推断策略,通过分析协议解析器处理不同字段的方式推断协议语法。评估表明,ICEPRE在字段边界推断上显著优于现有工具:其F1分数达0.76、完美度分数0.67,而DynPRE、BinaryInferno、Nemeys和Netzob分别仅为(0.65, 0.35)、(0.42, 0.14)、(0.39, 0.09)和(0.27, 0.10)。这些结果印证了本方法卓越的整体性能。此外,ICEPRE在真实场景的专有协议测试中展现出优异表现,凸显了其在下游应用中的实用价值。

链接:https://doi.org/10.1145/3728982

46、Identifying Multi-parameter Constraint Errors in Python Data Science Library API Documentation

现代人工智能与数据密集型软件系统高度依赖于数据科学和机器学习库,这些库提供核心算法实现和计算框架。这些库通过复杂API对外提供服务,其正确使用需遵循多个相互依赖参数间的约束条件。开发者通常需通过文档学习这些约束,任何偏差都可能导致意外行为。然而在API文档中保持多参数约束的正确性与一致性,仍是影响API兼容性和可靠性的重大挑战。为解决该问题,我们提出MPChecker工具,专门用于检测代码与文档间在多参数约束上的不一致性。该工具通过符号执行探索代码执行路径以识别代码级约束,并利用大语言模型(LLM)从文档中提取对应约束。我们提出定制化的模糊约束逻辑,以调和LLM输出的不确定性,并检测代码约束与文档约束间的逻辑不一致性。基于四个主流数据科学库构建的双数据集测试表明,MPChecker在126个不一致约束中成功识别117个,召回率达92.8%,有效验证了其检测能力。我们向库开发者提交了14个检测到的不一致问题,截至撰稿时已有11个获得确认。

链接:https://doi.org/10.1145/3728945

47、Improving Deep Learning Framework Testing with Model-Level Metamorphic Testing

深度学习(DL)框架是DL软件系统的核心组件,其缺陷可能引发严重事故,因此需要有效的测试方法。现有研究通常采用DL模型或单一接口作为测试输入,通过分析执行结果来检测缺陷。然而浮点误差、固有随机性及测试输入的复杂性,使得执行结果分析面临巨大挑战,导致现有方法缺乏合适的测试预言。部分研究者采用蜕变测试应对该挑战,基于单一框架接口的输入数据和参数设置设计蜕变关系(MR),通过生成输出一致的等价测试输入来验证结果。这类方法虽具成效,仍存在三大局限:(1)现有MR忽视结构复杂性,限制测试输入多样性;(2)仅关注有限接口,制约泛化能力且需额外适配;(3)所检测缺陷多涉及单一接口结果一致性,难以发现多接口组合与运行时指标(如资源使用)相关的缺陷。为此,我们提出ModelMeta——一种面向DL框架的模型级蜕变测试方法,基于DL模型结构特性设计四种MR。该方法通过QR-DQN策略引导,利用多样化接口组合增强种子模型,生成输出一致的测试输入,并通过对训练损失/梯度、内存/GPU使用率及执行时间的细粒度分析来检测缺陷。我们在三大主流DL框架(MindSpore、PyTorch和ONNX)上使用涵盖图像分类至目标检测等十类实际任务的17个DL模型进行评估。结果表明:ModelMeta在测试覆盖率和生成测试输入多样性方面优于现有基线方法;共检测到31个新缺陷(其中27个获官方确认,11个已修复),包括7个现有方法无法检测的缺陷(5个资源使用错误和2个低效缺陷),证明了该方法的实用性。

链接:https://doi.org/10.1145/3728972

48、Incremental Verification of Concurrent Programs through Refinement Constraint Adaptation

程序在其整个生命周期中持续演化。对每个版本从头开始进行验证通常不切实际,尤其是对于并发程序而言。设计高效的并发程序增量验证技术具有迫切需求。我们专注于面向并发程序验证的抽象精化技术。当程序被修改时,先前版本验证过程中生成的精化约束会被适配到新程序,以避免冗余分析。针对基于调度约束的抽象精化方法(当前最高效的并发程序验证精化方法之一),我们提出了基于内核源码的精化约束适配方案。本方法支持所有类型的程序修改,并能根据变更生成适配后的精化约束。在SV-COMP 2024基准测试集和Nidhugg基准测试上的评估表明,我们的方法取得了显著成效:实验中大多数先前版本验证生成的精化约束可成功适配至修改后的程序。与从头验证修改后程序相比,我们的增量验证方法对复杂程序可实现两个数量级的加速比。

链接:https://doi.org/10.1145/3728976

49、Intention-Based GUI Test Migration for Mobile Apps using Large Language Models

图形用户界面(GUI)测试是移动应用质量保障的主要方法之一。人工构建高质量的GUI测试用例成本高昂且劳动密集,这推动了多种自动化方法的发展,这些方法旨在将测试用例从源应用迁移至目标应用。现有方法主要将该测试迁移任务视为控件匹配问题,在应用间交互逻辑保持一致时表现良好。但当不同应用对特定功能存在交互逻辑差异时(这是跨应用的常见场景),现有方法则面临挑战。为解决这一局限,本文提出了一种名为ITeM的新型测试迁移方法。与将问题建模为控件匹配任务的现有工作不同,ITeM通过采用具备大语言模型理解与推理能力的双阶段框架开辟了新路径:首先通过过渡感知机制生成测试意图,其次通过基于动态推理的机制实现这些意图。该方法能有效应对源应用与目标应用间交互逻辑的差异。在35个真实安卓应用上开展的280项测试迁移任务实验表明,ITeM相比最先进方法具有显著优越的有效性和效率。

链接:https://doi.org/10.1145/3728978

50、KEENHash: Hashing Programs into Function-Aware Embeddings for Large-Scale Binary Code Similarity Analysis

二进制代码相似性分析(BCSA)是网络安全等众多领域的关键研究方向。其中,函数级差异比对工具在BCSA中应用最为广泛:它们通过逐函数匹配来评估二进制程序间的相似性。然而此类方法具有较高的时间复杂度,难以适应大规模场景(如1对n或n对n搜索)。为实现高效且精准的程序级BCSA,我们提出KEENHash——一种通过大语言模型(LLM)生成函数嵌入的新型哈希方法,将二进制代码转换为程序级表征。该方法结合K-Means聚类和特征哈希技术,将二进制程序压缩为紧凑的定长程序嵌入,从而实现了高效的大规模程序级BCSA,其性能超越现有最优方法。实验结果表明:在保持精度的前提下,KEENHash比最先进的函数匹配工具快至少215倍。在53亿次相似性比对的大规模场景中,KEENHash仅需395.83秒,而传统工具至少需要56天。我们在包含202,305个二进制程序的大规模数据集上进行程序克隆搜索测试,与4种前沿方法相比,KEENHash以至少23.16%的优势全面胜出,并在恶意软件检测的大规模BCSA安全场景中展现出显著优越性。

链接:https://doi.org/10.1145/3728911

51、KRAKEN: Program-Adaptive Parallel Fuzzing

并行模糊测试通过利用多核计算机加速测试过程,已在工业级软件缺陷检测领域获得广泛应用。然而由于静态推断模糊测试运行时存在困难,针对不同特性的程序制定高效并行策略仍具挑战性。现有方案仍采用预定义策略应对不同程序,导致性能未达最优。

本文提出KraKen——一种新型程序自适应并行模糊测试器,通过动态策略优化提升测试效率。其核心在于:通过代码覆盖率变化等运行时反馈可观测并行模糊测试的低效现象,从而调整策略以避免低效路径搜索,逐步逼近最优方案。基于此,我们将寻找最优策略的任务构建为优化问题,通过动态最大化特定目标函数,逐步适配出针对具体程序的最佳策略。

我们在C/C++中实现了KraKen,并在19个真实世界程序上与6种最先进并行模糊测试器进行对比评估。实验结果表明,KraKen在给定时间内可实现54.7%的代码覆盖率提升,并多发现70.2%的程序错误。此外,KraKen已在37个热门开源项目中发现192个错误,其中119个被分配了CVE编号。

链接:https://doi.org/10.1145/3728882

52、LLM Hallucinations in Practical Code Generation: Phenomena, Mechanism, and Mitigation

代码生成旨在根据输入需求自动生成代码,显著提升开发效率。基于大型语言模型(LLM)的最新方法已展现出突破性成果,彻底改变了代码生成任务。尽管性能前景可观,LLM生成的代码常存在幻觉现象,尤其在需要处理实际开发过程中复杂上下文依赖的代码生成场景中。虽然已有研究分析了LLM代码生成中的幻觉问题,但其研究范围局限于独立函数生成。本文通过实证研究,在更贴近实际且复杂度更高的仓库级代码生成场景中,系统探究LLM幻觉的现象、机理与缓解策略。首先,我们人工检测了六种主流LLM的代码生成结果,建立了LLM生成代码的幻觉分类体系;继而详细阐述了幻觉现象特征,并分析了不同模型间的幻觉分布规律;随后深入剖析幻觉成因,识别出四大潜在致幻因素;最后提出基于检索增强生成(RAG)的缓解方法,该方法在所有研究的LLM中均展现出持续有效的改善效果。

链接:https://doi.org/10.1145/3728894

53、LLM4SZZ: Enhancing SZZ Algorithm with Context-Enhanced Assessment on Large Language Models

SZZ算法是识别缺陷引入提交(bug-inducing commits)的核心技术,为许多软件工程研究(如缺陷预测和静态代码分析)提供基础,从而提升软件质量并优化维护实践。自该算法提出以来,研究者已开发多种改进版本以增强其性能。大多数改进依赖静态技术或启发式假设,虽易于实现,但性能提升有限。近期出现了一种基于深度学习的SZZ算法,但其需复杂预处理且仅支持单一编程语言;虽提高了精确率,却降低了召回率。此外,现有改进大多忽略关键信息(如提交消息和补丁上下文),且仅适用于涉及代码删除行的缺陷修复提交。  

大语言模型(LLMs)的出现为解决这些问题提供了新机遇。本研究系统分析了LLMs的优势与局限,提出LLM4SZZ框架,采用两种方法(基于排序的识别和上下文增强识别)处理不同类型的缺陷修复提交。我们根据LLM对缺陷的理解能力及其判断提交是否包含缺陷的能力来选择方法:上下文增强识别为LLM提供更丰富的上下文,要求其从候选提交中定位缺陷引入提交;基于排序的识别则让LLM从缺陷修复提交中筛选缺陷代码语句,并按其与根本原因的相关性排序。实验结果表明,LLM4SZZ在三个数据集上均优于所有基线模型,F1分数提升6.9%至16.0%,且未显著牺牲召回率。此外,LLM4SZZ能识别基线模型未能检测的缺陷引入提交,占比分别达三个数据集提交总量的7.8%、7.4%和2.5%。

链接:https://doi.org/10.1145/3728885

54、LogBase: A Large-Scale Benchmark for Semantic Log Parsing

大规模软件系统生成的日志包含大量有用信息。作为自动化日志分析的第一步,日志解析技术已被广泛研究。通用日志解析方法主要关注从原始日志中识别静态模板,但忽略了动态日志参数中隐含的更重要的语义信息。随着智能运维(AIOps)的普及,传统日志解析方法已无法满足各类下游任务的需求。研究者开始探索新一代日志解析技术——语义日志解析,旨在同时识别日志模板和参数语义。然而,现有数据集中语义标注的缺失阻碍了语义日志解析器的训练与评估,制约了该领域的发展。  

为填补这一空白并推动语义日志解析研究,我们构建了首个语义日志解析基准数据集LogBase。该数据集涵盖130个热门开源项目的日志,包含85,300条带语义标注的日志模板,在日志源多样性和模板丰富性上均超越现有数据集。为实现LogBase的构建,我们开发了语义日志解析数据集构建框架GenLog。该框架从GitHub热门开源仓库中挖掘日志模板-参数-上下文三元组,并采用思维链(CoT)技术驱动大语言模型(LLMs)生成高质量日志。同时,GenLog通过人工反馈优化生成数据质量并确保其可靠性。该框架具备高度自动化与成本效益,可助力研究者高效构建语义日志解析数据集。此外,我们还为LogBase设计了一套综合评估指标,涵盖通用日志解析器指标、语义日志解析器专项指标及基于LLM的解析器指标。  

基于LogBase,我们对15种现有日志解析器进行了全面评估,揭示了它们在复杂场景下的真实性能。我们相信,这项工作将为研究者提供宝贵数据、可靠工具和深入见解,以支持并引导语义日志解析的未来研究。

链接:https://doi.org/10.1145/3728969

55、MLLM-Based UI2Code Automation Guided by UI Layout Information

将用户界面转换为代码(UI2Code)是网站开发中的关键环节,该过程耗时且费力。实现UI2Code的自动化对提升开发效率至关重要。现有基于深度学习的方法严重依赖大量标注训练数据,且难以泛化到真实世界中未见过的网页设计。多模态大语言模型(MLLMs)的出现为解决该问题提供了可能,但其难以理解UI中的复杂布局并生成保留布局的精确代码。为此,我们提出LayoutCoder——一种基于MLLM的创新框架,可从真实网页图像生成UI代码,包含三个核心模块:(1)元素关系构建:通过识别和分组具有相似结构的组件来捕捉UI布局;(2)UI布局解析:生成UI布局树以指导后续代码生成;(3)布局引导的代码融合:生成保留布局的精确代码。为进行评估,我们构建了包含350个真实网站的新基准数据集Snap2Code(分为可见与不可见部分以缓解数据泄露问题),并采用流行数据集Design2Code。大量实验表明,LayoutCoder在所有数据集上平均BLEU分数提升10.14%,CLIP分数提升3.95%,显著优于现有最优方法。

链接:https://doi.org/10.1145/3728925

56、MoDitector: Module-Directed Testing for Autonomous Driving Systems

测试自动驾驶系统(ADS)对于确保其安全性、可靠性和性能至关重要。尽管现有多种测试方法能够生成多样化的高难度场景以发现潜在漏洞,但这些方法通常将ADS视为黑盒,主要关注识别系统级故障(如碰撞或险兆事故),而无法定位导致故障的具体模块。这种对故障根本原因的认知缺失阻碍了有效的调试与后续系统修复。此外,现有方法在生成能够从系统层面充分测试ADS各独立模块(如感知、预测、规划与控制)的违规场景方面存在不足。为弥补这一缺陷,我们提出MoDitector——一种具备根本原因识别能力的ADS测试方法,该方法可生成专门针对目标ADS模块弱点设计的安全关键场景。与现有方法不同,MoDitector不仅能产生导致违规的场景,还能精确定位引发每个故障的具体责任模块。具体而言,我们通过引入模块专用预言机(Module-Specific Oracles)自动检测模块级错误,并识别导致系统级违规的根本原因模块。为有效生成模块专属故障,我们提出一种模块导向测试策略,该策略融合模块专用反馈与自适应场景生成技术来指导测试过程。我们在四个关键ADS模块和四个代表性测试场景中评估MoDitector。实验结果表明,MoDitector能高效生成可归因于特定目标模块的故障场景,总计生成216.7个预期场景,显著优于最佳基线方法(仅生成79.0个场景)。本研究通过聚焦系统内模块专属错误的识别与修正,突破了传统黑盒故障检测的局限,代表了ADS测试领域的重大创新。

链接:https://doi.org/10.1145/3728876

57、Model Checking Guided Incremental Testing for Distributed Systems

近年来,模型检测引导测试(MCGT)方法被提出用于系统化测试分布式系统。该方法通过遍历从分布式系统形式化规范导出的完整已验证抽象状态空间来自动生成测试用例,并检查目标系统在测试过程中是否表现正确。尽管MCGT具有有效性,但使用该技术测试分布式系统通常成本高昂且可能耗时数周。当分布式系统发生演进(如引入新功能或修复缺陷)时,这种低效问题会进一步加剧。我们必须为演进后的系统重新运行完整测试流程以验证其正确性,这使得MCGT不仅资源密集且效率低下。

为降低分布式系统演进过程中模型检测引导测试的开销,我们提出iMocket——一种新型的模型检测引导增量式测试方法。我们首先从形式化规范和系统实现中提取变更内容,随后识别抽象状态空间中受影响的状态,并专门针对这些状态生成增量测试用例,从而避免对未受影响状态的冗余测试。基于三个主流分布式系统的12个真实变更场景进行评估实验,结果表明:iMocket平均可减少74.83%的测试用例数量,并将测试时间降低22.54%至99.99%,显著证明了其在降低分布式系统测试成本方面的有效性。

链接:https://doi.org/10.1145/3728883

58、More Effective JavaScript Breaking Change Detection via Dynamic Object Relation Graph

JavaScript库以其广泛使用、频繁的代码变更及对向后不兼容变更的高容忍度而著称。意识到这类破坏性变更可帮助开发者适应版本更新并规避负面影响。JavaScript社区已有多种专门或可用于检测破坏性变更的工具,但这些工具采用不同检测方式,且目前缺乏对这些方法的系统性综述。通过对流行JavaScript库的初步研究,我们发现现有方法(包括简单回归测试、基于模型的测试和类型差异分析)不仅会遗漏大量破坏性变更,还会产生大量误报。本文讨论了漏检与误报的产生原因。

基于研究发现的启示,我们提出名为Diagnose的新方法:该方法通过API探索和基于强制执行的类型分析迭代构建对象关系图,随后对图谱进行精细化处理并在库的新版本中重构图谱以检测破坏性变更。通过在实证研究相同库集上的评估,Diagnose能检测出更多破坏性变更(60.2%)且误报更少,因此具备实际应用价值。

链接:https://doi.org/10.1145/3728980

59、NADA: Neural Acceptance-Driven Approximate Specification Mining

仅从期望的软件行为(即正例)中挖掘高质量的有限状态自动机(FSA)十分困难,这源于搜索空间爆炸以及缺乏非期望软件行为(即反例)导致的过度泛化问题。为解决过度泛化问题,我们建议将该问题建模为从含噪声的正例与反例中搜索近似FSA,其中噪声源自用于拒绝过度泛化结果的合成反例。为在爆炸性搜索空间中获取有效的搜索偏置,我们将FSA接受度与神经网络推理相融合。核心贡献在于设计了一种神经网络,其参数分配对应于FSA,且其名为"神经接受"的推理过程能够模拟FSA接受行为。神经接受机制提供了一种高效量化FSA与噪声数据拟合程度的方法。我们提出NADA——一种神经接受驱动的搜索方法,通过接受正例与拒绝合成反例来指导近似FSA的搜索。NADA基于FSA离散搜索空间的连续松弛化改造及高效的梯度下降搜索算法实现。实验结果表明:相较于最先进方法,NADA显著提升了挖掘FSA的质量(平均提升41.63%的F1分数),且其搜索速度比挖掘次高质量FSA的方法快19.8倍。

链接:https://doi.org/10.1145/3728956

60、No Bias Left Behind: Fairness Testing for Deep Recommender Systems Targeting General Disadvantaged Groups

推荐系统在现代社会中扮演着日益重要的角色,它们驱动着数字平台对新闻、音乐、职位列表等多种内容进行个性化推荐,深刻影响着日常生活的诸多方面。为提升个性化效果,这些系统常使用人口统计信息。然而,确保跨人口群体推荐质量的公平性仍具挑战性,尤其因为推荐系统易受用户反馈循环中"富者愈富"的马太效应影响。随着深度学习算法的普及,公平性问题的识别变得愈发复杂。研究者已开始探索利用优化算法识别最弱势用户群体的方法。尽管如此,次优弱势群体的研究仍显不足,这导致马太效应引发的偏见放大风险未被有效解决。本文主张同时识别最弱势与次优弱势群体的必要性,并提出基于自适应采样的FairAS方法实现该目标。通过对四个深度推荐系统和六个数据集的评估,FairAS在最弱势群体识别上相比当前最优公平性测试方法(FairRec)平均提升19.2%,同时将测试时间降低43.07%。此外,FairAS发现的额外次优弱势群体有助于提升系统公平性,在所有实验对象上相比FairRec平均实现70.27%的改进。

链接:https://doi.org/10.1145/3728948

61、OmniGIRL: A Multilingual and Multimodal Benchmark for GitHub Issue Resolution

GitHub问题解决任务旨在自动处理代码仓库中报告的问题。随着大语言模型(LLM)的发展,该任务日益受到关注,多个基准测试被提出以评估LLM的问题解决能力。然而,现有基准存在三个主要局限:首先,当前基准仅关注单一编程语言,限制了跨语言仓库问题的评估;其次,它们通常覆盖领域范围狭窄,难以体现现实问题的多样性;第三,现有基准仅依赖问题描述中的文本信息,忽略了图像等多模态信息。本文提出OmniGIRL——一个多语言、多模态、多领域的GitHub问题解决基准,包含从四种编程语言(Python、JavaScript、TypeScript和Java)和八个不同领域的仓库中收集的959个任务实例。评估表明,当前LLM在OmniGIRL上表现有限,性能最佳的GPT-4o仅解决8.6%的问题。此外,我们发现现有LLM难以处理需要理解图像的问题,Claude-3.5-Sonnet在含图像信息的问题上仅解决10.5%。最后,我们分析了LLM在OmniGIRL上失败的原因,为未来改进提供见解。

链接:https://doi.org/10.1145/3728871

62、OpDiffer: LLM-Assisted Opcode-Level Differential Testing of Ethereum Virtual Machine

随着以太坊的持续繁荣,以太坊虚拟机(EVM)已成为支撑数百万活跃智能合约的基石。直观而言,EVM中的安全问题可能导致智能合约间的行为不一致,甚至造成整个区块链网络的拒绝服务。然而据我们所知,目前仅有有限的研究聚焦于EVM安全性,且存在两大局限:1)测试输入多样性不足且缺乏无效语义;2)无法自动识别漏洞并定位根本原因。为弥补这一空白,我们提出OpDiffer——一种基于差分测试的EVM检测框架,通过结合大语言模型(LLM)与静态分析方法解决上述问题。我们开展了最大规模的评估实验,覆盖九种EVM实现,发现26个此前未知的漏洞(其中22个获开发者确认,3个获得CNVD编号)。相比最先进的基线方法,OpDiffer最高可分别提升71.06%、148.40%和655.56%的代码覆盖率。通过对实际部署的以太坊合约分析,我们预估7.21%的合约在特定环境配置下可能触发已发现的EVM漏洞,这将对以太坊生态系统产生严重的负面影响。

链接:https://doi.org/10.1145/3728946

63、PatchScope: LLM-Enhanced Fine-Grained Stable Patch Classification for Linux Kernel

稳定的补丁分类在Linux内核漏洞管理中起着至关重要的作用,对长期支持(LTS)版本的稳定性和安全性具有重大意义。尽管现有工具能有效辅助判断补丁是否应合并至稳定版本,但无法确定哪些稳定补丁应被合并到哪些LTS版本中。该过程仍需发行版社区维护者根据各自版本需求进行人工筛选。  

为解决这一问题,我们提出PatchScope,其旨在预测补丁的具体合并状态。PatchScope包含两个组件:补丁分析与补丁分类。补丁分析利用大语言模型(LLMs),通过提交信息与代码变更生成详细的补丁描述,从而深化模型对补丁的语义理解;补丁分类采用预训练语言模型提取补丁的语义特征,并利用两阶段分类器预测补丁的合并状态。通过动态加权损失函数优化模型,以处理数据不平衡问题并提升整体性能。  

鉴于当前主要维护Linux内核5.10与6.6版本,我们基于这两个版本进行了对比实验。实验结果表明,PatchScope能有效预测补丁的合并状态。

链接:https://doi.org/10.1145/3728944

64、Pepper: Preference-Aware Active Trapping for Ransomware

勒索软件通过加密受感染系统中的文件并索要高额解密赎金,对企业与个人构成严重威胁。然而现有方法未能捕捉不同勒索软件家族的加密偏好,缺乏高效系统的主动防御方案。本文提出Pepper——一种基于偏好感知的主动式勒索软件诱捕方法,涵盖诱饵文件生成、部署与监控环节。通过对大量勒索软件家族的分析,我们识别出两种普遍存在的加密偏好:文件类型偏好与加密路径偏好。在勒索软件偏好的路径中部署符合其加密偏好的诱饵文件,能够为高效早期诱捕提供可能。Pepper融合基于图神经网络的推荐模型与专家知识,揭示不同勒索软件家族的文件与路径加密偏好,指导诱饵文件的生成与部署。此外,系统设计诱饵文件监控模块持续追踪文件变化并及时响应异常。大规模实验表明,Pepper实现98.68%的勒索软件检测率,平均仅损失2.27个文件,且在检测未知勒索软件变种时表现出强鲁棒性,同时不会干扰正常用户操作。

链接:https://doi.org/10.1145/3728932

65、Porting Software Libraries to OpenHarmony: Transitioning from TypeScript or JavaScript to ArkTS

OpenHarmony正崛起为移动应用领域的重要力量,有望与行业巨头比肩。其主力开发语言ArkTS基于TypeScript(TS)和JavaScript(JS)进行强化,通过严格类型系统提升性能。生态建设需要开发者将主流TS/JS库移植至OpenHarmony,官方虽提供详细移植指南,但要求开发者深度掌握ArkTS语法规范、遵循移植规则并实施人工代码改造,因此自动化移植工具对提升效率和完善软件生态至关重要。  

作为新兴编程语言,ArkTS目前缺乏支持自动化库移植的分析工具。而大语言模型(LLMs)的兴起为自动化移植任务提供了新机遇。基于LLM实现TS/JS库到OpenHarmony的自动化移植面临两大挑战:(1)LLMs对ArkTS代码接触有限,难以掌握其与JS/TS的语法差异及多样化适配场景;(2)项目级代码适配需修正大量语法不匹配问题,不同不匹配项与互依代码间的交互作用更增加了LLM的处理复杂度。  

为此,我们提出项目级自动代码适配方案ArkAdapter:针对挑战一,通过构建包含多场景专家经验的真实代码适配案例库,建立ArkTS语法理解知识库,借助小样本学习增强LLMs的适配能力;针对挑战二,基于依赖结构和语法不匹配代码粒度制定适配优先级策略,避免不同语法不匹配项及其关联代码的相互干扰。实验表明ArkAdapter在JS/TS库到ArkTS的移植中达到86.84%的高准确率。

链接:https://doi.org/10.1145/3728941

66、Preventing Disruption of System Backup against Ransomware Attacks

摘要近年来,勒索软件对软件生态系统的威胁迅速增长。尽管已有深入研究,但新型勒索软件变种不断涌现,旨在规避现有基于加密的检测机制。本文提出Remembrall——通过监控并防止系统备份中断来防御勒索软件的新方案。该工具聚焦Windows系统卷影副本(VSC)的删除操作,捕获相关恶意事件并实时识别所有勒索软件痕迹。为确保全面防护,我们系统性地分类研究了应用层、操作系统层和硬件层中所有可能用于删除VSC的攻击行为。基于此分析,Remembrall通过检索系统事件信息实现精准识别,确保零漏报率。通过对最新勒索软件样本的评估,Remembrall在60个勒索软件家族检测中的F1分数比现有顶级反勒索软件工具提高4.31%-87.55%,并在实验中成功检测出8个零日勒索软件样本。

链接:https://doi.org/10.1145/3728880

67、Productively Deploying Emerging Models on Emerging Platforms: A Top-Down Approach for Testing and Debugging

尽管现有的机器学习(ML)框架主要针对成熟平台(如在服务器级GPU上运行CUDA),但越来越多的需求希望在各种新兴场景中实现人工智能应用,例如在浏览器和移动端运行大语言模型(LLM)。然而,由于模型快速迭代以及新平台(如Metal和WebGPU)缺乏成熟的工具链和实践经验,在这些平台上部署新兴模型面临显著的软件工程挑战。传统的ML模型部署通常采用自下而上的方式:工程师先实现单个必需算子,再进行组合集成。但这种开发模式难以满足新兴ML应用的部署效率要求,其中测试与调试环节成为瓶颈。为此,我们提出TapML——一种自上而下的方法,旨在简化跨平台模型部署流程。传统自下而上方法需手动编写测试用例,而TapML通过算子级测试切分自动生成高质量的真实测试数据;此外,采用基于迁移的策略逐步将模型实现从成熟源平台转移至目标平台,最大限度缩小复合错误的调试范围。TapML已作为MLC-LLM项目的默认开发方法用于部署新兴ML模型。两年内,依托该方法成功在5个新兴平台上部署了涵盖27种模型架构的105个新兴模型。实践表明TapML在保证部署质量的同时显著提升了开发效率,并基于实际开发经验总结了全面案例研究,为新兴ML系统开发提供了最佳实践指南。

链接:https://doi.org/10.1145/3728957

68、Program Analysis Combining Generalized Bit-Level and Word-Level Abstractions

抽象解释被广泛用于确定程序的数值属性。然而,当前抽象域主要关注数学语义,未能完全捕捉依赖机器整数语义且涉及大量位向量操作的实际程序的复杂性。本文提出了一种结合位级抽象和字级抽象的解决方案来捕捉机器整数语义。首先,我们通过补充所有必需操作作为标准抽象域,推广了Linux eBPF验证器中用于确定实际程序已知位与未知位的位级抽象。基于此抽象,我们设计了一个具备符号感知能力、同时保留上述位级和字级边界信息的抽象域。这两个层级的信息通过标准缩减积操作进行协作,以提高分析精度。我们在Crab分析器和内核外eBPF验证器PREVAL中实现了所提出的抽象域。实验证明其在分析SV-COMP基准程序、辅助硬件设计以及eBPF验证方面的有效性。

链接:https://doi.org/10.1145/3728905

69、Program Feature-Based Benchmarking for Fuzz Testing

模糊测试是一种强大的软件测试技术,以其在识别软件漏洞方面的有效性而闻名。传统的模糊测试评估通常关注模糊测试工具在一组目标程序上的整体性能,但很少有基准测试考虑细粒度程序特征如何影响模糊测试效果。为弥补这一空白,我们提出了FeatureBench——一种新颖的基准测试框架,能通过可配置的细粒度程序特征生成测试程序,以增强模糊测试评估效果。通过系统回顾25项近期灰盒模糊测试研究,我们提取出7个可能影响测试性能的控制流与数据流相关程序特征。基于这些特征,我们生成了包含153个程序的基准测试集,并通过10个细粒度可配置参数进行控制。使用该基准测试集对11种模糊测试工具进行评估(每种工具均代表特定改进方向或是广泛使用的基准方案),结果表明:测试工具性能会随程序特征及其强度呈现显著差异,这凸显了将程序特性纳入模糊测试评估体系的重要性。

链接:https://doi.org/10.1145/3728899

70、QTRAN: Extending Metamorphic-Oracle Based Logical Bug Detection Techniques for Multiple-DBMS Dialect Support

蜕变测试是一种广泛用于检测数据库管理系统(DBMS)中逻辑缺陷的方法,本文称为MOLT(基于蜕变关系的逻辑缺陷检测技术)。该技术通过构建SQL语句对(包括原始查询和变异查询),并评估执行结果是否符合预定义的蜕变关系来识别逻辑缺陷。然而,现有的MOLT严重依赖特定DBMS的语法生成有效SQL语句对,导致难以适配具有不同语法结构的各类DBMS。因此,当前仅支持少数主流DBMS(如PostgreSQL、MySQL和MariaDB),扩展至其他系统需大量人工投入。鉴于许多DBMS仍缺乏充分测试,亟需一种能够轻松扩展MOLT至异构DBMS的方法。  

本文提出QTRAN——一种基于大语言模型(LLM)的新方法,可自动将现有MOLT扩展至多种DBMS。核心思路是利用LLM将现有MOLT中的SQL语句对翻译为目标DBMS的语法以进行蜕变测试。针对LLM对方言差异和蜕变机制理解有限的挑战,我们提出包含转换阶段和变异阶段的两阶段方法。QTRAN借鉴开发者创建MOLT的过程:通过理解目标DBMS语法生成原始查询,并利用定制化变异器执行突变。转换阶段通过识别潜在方言并利用SQL文档信息增强查询检索,使LLM能精准跨DBMS翻译原始查询;变异阶段则收集现有MOLT的SQL语句对微调预训练模型,专门适配变异任务,再使用定制化LLM对翻译后的原始查询进行变异,保留蜕变测试所需的定义关系。  

我们将该方法实现为工具,并应用于扩展四种前沿MOLT至八种DBMS:MySQL、MariaDB、TiDB、PostgreSQL、SQLite、MonetDB、DuckDB和ClickHouse。评估结果表明,QTRAN转换的SQL语句对超过99%满足测试所需的蜕变关系,且在这些DBMS中检测到24个逻辑缺陷,其中16个被确认为独特的新缺陷。我们相信QTRAN的通用性将显著提升DBMS的可靠性。

链接:https://doi.org/10.1145/3728908

71、Quantum Concolic Testing

本文首次提出了一个专为量子程序设计的混成测试框架。该框架针对量化量子态的量子控制语句提出了量子约束生成方法,并为量子变量提供了符号化方法。基于此框架,我们为量子程序的每条具体执行路径生成路径约束。这些约束条件指导新路径的探索,通过量子约束求解器确定结果以生成新颖的输入样本,从而提升分支覆盖率。本框架已在Python中实现并与Qiskit集成进行实践评估。实验结果表明,我们的混成测试框架不仅能提高分支覆盖率,还能生成高质量量子输入样本并检测程序缺陷,证明了其在量子编程和错误检测方面的有效性与高效性。在分支覆盖率方面,本框架对5量子位以下的量子程序实现了超过74.27%的覆盖效果。

链接:https://doi.org/10.1145/3728926

72、REACCEPT: Automated Co-evolution of Production and Test Code Based on Dynamic Validation and Large Language Models

生产代码与测试代码的同步(称为PT协同演化)对软件质量至关重要。鉴于其涉及大量手动工作,研究人员尝试使用预定义启发式规则和机器学习模型实现PT协同演化的自动化。然而现有解决方案仍不完善:大多数方法仅能检测并标记过时测试用例,仍需开发者手动更新;同时现有方案准确率较低,尤其在真实软件项目中表现不佳。本文提出ReAccept——一种融合大型语言模型(LLM)、检索增强生成(RAG)和动态验证的新方法,以高精度实现全自动PT协同演化。ReAccept采用经验引导方法生成提示模板,用于识别和更新过程;在更新测试用例后,通过语法检查、语义验证和测试覆盖评估进行动态验证;若验证失败,则利用错误消息迭代优化补丁。为评估ReAccept的有效性,我们在包含537个Java项目的数据集上开展广泛实验,并与多种先进方法对比。结果表明,ReAccept在正确识别的过时测试代码上达到60.16%的更新准确率,较最优技术CEPROT提升90%。这些发现证明ReAccept能有效维护测试代码、提升软件质量并显著降低维护成本。

链接:https://doi.org/10.1145/3728930

73、Recurring Vulnerability Detection: How Far Are We?

随着开源软件的快速发展,代码复用已成为加速开发进程的普遍实践。然而这也导致原始漏洞被继承,在复用项目中重现形成复现漏洞(RVs)。传统通用漏洞检测方法受限于可扩展性与适应性,基于学习的方法则常因训练数据集有限而对未见漏洞效果不佳。尽管已有特定复现漏洞检测(RVD)方法被提出,但其针对不同RV特征的有效性尚不明确。本文通过新构建的包含4,569个RVs的大规模数据集(较先前数据集扩展953%)开展实证研究,系统分析RV特征,评估最先进RVD方法的有效性,探究误报/漏报的根本原因并得出关键洞见。基于这些发现,我们设计出新型RVD工具AntMan:通过识别修改函数的显性与隐式调用关系,在函数内实施过程间污点分析和过程内依赖切片以生成综合签名,最终采用柔性匹配检测RVs。评估结果表明该方法具有卓越的有效性、通用性和实用价值。AntMan已检测到4,593个RVs(其中307个获开发者确认),在15个项目中识别出73个新的0-day漏洞,并获得5个CVE标识符。

链接:https://doi.org/10.1145/3728901

74、Reinforcement Learning-Based Fuzz Testing for the Gazebo Robotic Simulator

作为机器人技术领域应用最广泛的模拟器,Gazebo在开发和测试机器人系统方面发挥着关键作用。鉴于其对机器人操作安全性和可靠性的重大影响,早期缺陷检测至关重要。然而,由于严格的输入结构和庞大的状态空间带来的挑战,直接对Gazebo应用现有模糊测试方法效果有限。本文提出GzFuzz——首个专为Gazebo设计的模糊测试框架。该框架通过语法感知的可行命令生成机制处理严格输入要求,并采用基于强化学习的命令生成器选择机制高效探索状态空间。通过将两种机制整合在统一框架下,GzFuzz能有效检测Gazebo中的缺陷。大量实验表明,GzFuzz在12小时内平均检测到9.6个独特缺陷,其代码覆盖率较现有模糊测试工具AFL++和Fuzzotron实现显著提升,增幅约达239%-363%。在不到六个月的时间内,GzFuzz共发现Gazebo中25个独特崩溃案例,其中24个已获修复或确认。我们的研究成果凸显了直接对Gazebo进行模糊测试的重要性,为此提出了一种新颖高效的方法论,为增强更广泛模拟器的测试能力提供了重要启示。

链接:https://doi.org/10.1145/3728942

75、Rethinking Performance Analysis for Configurable Software Systems: A Case Study from a Fitness Landscape Perspective

现代软件系统通常具有高度可配置性,以满足不同利益相关者的多样化需求。理解配置项与期望性能属性之间的映射关系,对于提升底层系统的可控性和调优能力具有基础性作用,但由于其黑盒特性,这一直是知识体系中的盲区。尽管已有研究对这些系统进行性能分析,但它们将配置项作为孤立数据点进行分析,未能考虑其固有的空间关联性。这导致无法探查配置空间的许多重要特征,如局部最优区域。本研究提出一种创新视角——将配置空间建模为结构化的"地形景观"。为验证这一理念,我们采用GraphFLA这一基于图数据挖掘的适应度景观分析开源框架,通过对3个真实系统32个运行工作负载中8600万条基准配置进行分析,得出6项主要发现。这些发现共同构建了景观地形的整体图谱,对配置调优和性能建模均具有重要启示意义。

链接:https://doi.org/10.1145/3728954

76、Robust Vulnerability Detection across Compilations: LLVM-IR vs. Assembly with Transformer Model

检测二进制文件中的漏洞是网络安全领域的一项挑战性任务,尤其在源代码不可用且编译过程及其参数未知的情况下更为困难。现有的基于深度学习的检测方法通常依赖于已知二进制文件的特定编译设置,这可能限制其在其他类型二进制文件上的性能表现。本研究对汇编表示与LLVM-IR进行了全面比较,以确定在编译参数未知时哪种表示更具鲁棒性和适用性。表示方式的选择显著影响检测准确性。本文的另一贡献是采用基于Transformer的模型CodeBERT作为分类工具,用于在编译过程未知的场景下检测漏洞。该研究将Transformer模型应用于LLVM-IR领域中的多类漏洞检测任务,重点关注二进制衍生表示。虽然近期研究已探索了Transformer在源代码和原始二进制指令流漏洞分析中的应用,但作为LLVM-IR层级分类器的系统性评估仍较为有限。先前研究通常依赖基于RNN的方法(此类方法被视为该任务的当前最优方案),但这些模型难以有效捕获长距离依赖关系。为解决这一局限性,我们将基于Transformer的分类方法扩展至二进制文件生成的LLVM-IR,并在此场景下提供全面评估。实验结果凸显了该方法在强化多样化二进制配置系统安全方面的潜力。

链接:https://doi.org/10.1145/3728903

77、RouthSearch: Inferring PID Parameter Specification for Flight Control Program by Coordinate Search

飞行控制程序被广泛应用于无人机(UAV)中,用于动态管理和维持无人机的飞行行为。这些飞行控制程序包含一个PID控制模块,该模块接收三个用户可配置的PID参数:比例(P)、积分(I)和微分(D)。用户还可在飞行过程中调整这些PID参数以适应不同飞行任务的需求。然而,飞行控制程序对用户提供的PID参数缺乏充分的安全检查,导致无人机存在严重漏洞——输入验证缺陷。当用户错误配置PID参数时,会导致无人机进入危险状态,例如偏离预期路径、失控甚至坠毁。

现有研究通常采用模糊测试等随机测试方法从用户输入中识别无效PID参数。但这些方法在三维PID参数搜索空间中效果有限,且每次无人机测试的动态执行成本极高,进一步影响了随机测试的性能。

本研究通过将劳斯-赫尔维茨稳定性判据与坐标搜索相结合,提出名为RouthSearch的方法来解决PID参数错误配置问题。RouthSearch并非以临时方式识别错误配置的PID参数,而是基于原理确定三维PID参数的有效范围。我们首先利用劳斯-赫尔维茨判据识别理论上的PID参数边界,随后通过高效坐标搜索对边界进行精细化处理。RouthSearch确定的三维PID参数有效范围可在飞行过程中过滤用户的错误配置参数,并进一步帮助发现主流飞行控制程序中的逻辑缺陷。

我们在PX4和ArduPilot两款主流飞行控制程序的八种飞行模式下对RouthSearch进行评估。结果显示:与真实值相比,RouthSearch确定三维PID参数有效范围的准确率达到92.0%。在错误配置参数总数方面,RouthSearch在48小时内发现3,853组PID错误配置,而当前最先进的PGFuzz仅发现449组,性能提升达8.58倍。此外,本方法还帮助检测出ArduPilot和PX4中的三个缺陷。

链接:https://doi.org/10.1145/3728904

78、S-Eval: Towards Automated and Comprehensive Safety Evaluation for Large Language Models

生成式大语言模型(LLM)以其变革性和涌现能力彻底改变了自然语言处理领域。然而,最新研究表明,LLM可能生成违反社会规范的有害内容,这引发了关于部署此类先进模型的安全性与伦理影响的重大关切。因此,在部署前对LLM进行严格全面的安全评估既至关重要又势在必行。尽管存在这一需求,但由于LLM生成空间的广泛性,目前仍缺乏统一规范的风险分类体系来系统反映LLM内容安全性,以及高效探索潜在风险的自动化安全评估技术。

为弥补这一显著空白,我们提出S-Eval——一个基于LLM的新型自动化安全评估框架,其配备新定义的全面风险分类体系。S-Eval包含两个核心组件:专家测试LLM Mt和新型安全评判LLM Mc。专家测试LLM Mt负责根据提出的风险管理体系(包含8个风险维度和102项细分风险)自动生成测试用例;安全评判LLM Mc则可提供可量化的可解释安全评估,以增强对LLM风险的认知。与现有工作相比,S-Eval具有三大显著优势:(i)高效性——通过Mt构建包含102类风险共22万个测试用例的多维度开放式基准,并借助Mc对21个具有影响力的LLM进行安全评估,全过程无需人工干预;(ii)有效性——大量验证表明S-Eval能实现更全面的评估和更好的风险感知,Mc不仅能精准量化LLM风险,还提供超越LLaMA-Guard-2等可比模型的可解释深度安全洞察;(iii)适应性——基于LLM的架构使S-Eval可灵活配置,适应LLM快速演进伴随的新安全威胁、测试生成方法和安全评判方法。我们进一步探究超参数和语言环境对模型安全的影响,为未来研究指明方向。目前S-Eval已在工业合作伙伴中部署,为服务数百万用户的多类LLM提供自动化安全评估,实证了其在真实场景中的有效性。

链接:https://doi.org/10.1145/3728971

79、STRUT: Structured Seed Case Guided Unit Test Generation for C Programs using LLMs

单元测试在缺陷检测与保障软件正确性方面发挥着关键作用,其能帮助开发者在早期发现错误,从而减少软件缺陷。近年来,大型语言模型(LLMs)在自动化单元测试生成领域展现出巨大潜力,但应用LLMs生成单元测试仍面临诸多挑战:1)LLMs生成的测试用例执行通过率较低;2)测试用例覆盖度不足,难以检测代码中的潜在风险;3)现有研究方法主要集中于Java和Python等语言,而对现实世界中至关重要的C语言研究却十分匮乏。为应对这些挑战,我们提出了一种新颖的单元测试生成方法STRUT。该方法以结构化测试用例作为复杂编程语言与LLMs之间的桥梁,通过引导LLMs生成结构化测试用例而非直接生成测试代码,有效缓解了LLMs在生成具有复杂特性编程语言代码时的局限性。具体而言,STRUT首先分析目标方法的上下文并构建结构化种子测试用例,随后引导LLMs生成一组结构化测试用例,最终采用基于规则的方法将结构化测试用例转换为可执行测试代码。通过全面评估,STRUT实现了96.01%的执行通过率、77.67%的代码行覆盖率和63.60%的分支覆盖率,其性能显著优于基于LLMs的基线方法和符号执行工具SunwiseAUnit。这些结果表明STRUT通过融合LLMs优势并克服其固有局限性,具备生成高质量单元测试用例的卓越能力。

链接:https://doi.org/10.1145/3728970

80、SWE-GPT: A Process-Centric Language Model for Automated Software Improvement

大型语言模型(LLM)在代码生成方面展现出卓越性能,显著提升了开发者的编码效率。基于LLM的智能体技术最新进展,推动了端到端自动化软件工程(ASE)的重大突破,特别是在软件维护(如修复缺陷)和演进(如添加新功能)领域。尽管取得这些令人鼓舞的进展,当前研究仍面临两大挑战:其一,最先进性能主要依赖GPT-4等闭源模型,极大限制了技术可及性及在多样化软件工程任务中的定制潜力,同时处理敏感代码库时也引发数据隐私担忧;其二,现有模型主要基于静态代码数据训练,缺乏对软件开发中动态交互、迭代问题解决过程及演进特性的深度理解,导致其在处理复杂项目结构和生成上下文相关解决方案时存在局限,影响实际应用效果。

针对这些挑战,本研究从软件工程视角出发,认识到真实世界的软件维护与演进过程不仅包含静态代码数据,还涉及开发者的思维过程、外部工具使用以及不同职能人员间的交互。我们的目标是开发专为软件改进优化的开源大语言模型,在实现与闭源模型相当性能的同时,提供更强的可访问性和定制潜力。为此,我们推出Lingma SWE-GPT系列模型(包括70亿参数的Lingma SWE-GPT 7B和720亿参数的Lingma SWE-GPT 72B)。通过学习和模拟真实代码提交活动,该系列系统性地融入了软件开发过程中的动态交互与迭代问题解决机制(如仓库理解、故障定位和补丁生成),从而实现对软件改进过程的更全面认知。

基于OpenAI最新提出的SWE-bench-Verified基准测试(包含500个真实GitHub问题),实验结果表明:Lingma SWE-GPT 72B成功解决30.20%的GitHub问题,在自动问题解决方面实现显著提升(较Llama 3.1 405B相对提升22.76%),接近闭源模型性能(GPT-4o解决率为31.80%);值得注意的是,Lingma SWE-GPT 7B解决率达18.20%,超越Llama 3.1 70B的17.20%,彰显了较小模型在ASE任务中的应用潜力。

链接:https://doi.org/10.1145/3728981

81、Safe4U: Identifying Unsound Safe Encapsulations of Unsafe Calls in Rust using LLMs

Rust是一种新兴的编程语言,通过严格的编译时检查确保安全性。标记为unsafe的函数表明其具有额外的安全要求(例如已初始化、非空等),社区中称之为契约。这些unsafe函数只能在显式的unsafe代码块中被调用,且契约必须由调用方保证。为了重用并减少unsafe代码,社区实践中推荐采用对unsafe调用的安全封装(EUC)。但若任何契约未得到保证,EUC就会出现缺陷(unsound),可能导致安全Rust中的未定义行为,从而破坏Rust的安全承诺。由于代码与自然语言跨语言理解的局限性,传统技术难以有效识别缺陷EUC。大型语言模型(LLM)虽展现出强大能力,但因契约复杂性及领域知识缺乏,其表现仍不尽如人意。为此,我们提出新型框架Safe4U,融合LLM、静态分析工具与领域知识来识别缺陷EUC。Safe4U首先利用静态分析工具获取相关上下文,随后将原始契约描述分解为多个细粒度分类契约,最终引入领域知识并调用LLM的推理能力验证每个细粒度契约。评估结果表明,Safe4U实现了整体性能提升,且细粒度结果对定位具体缺陷源具有建设性。在真实场景中,Safe4U从CVE报告的11个缺陷EUC中成功识别出9个,并在下载量最高的crates中检测到22个新的缺陷EUC,其中16个已获确认。

链接:https://doi.org/10.1145/3728890

82、Smart-LLaMA-DPO: Reinforced Large Language Model for Explainable Smart Contract Vulnerability Detection

智能合约漏洞检测是快速发展的区块链领域中的关键挑战。现有漏洞检测方法面临两个主要问题:(1) 现有数据集缺乏全面性和足够质量,漏洞类型覆盖范围有限,且对偏好学习的高质量与低质量解释区分不足;(2) 大语言模型(LLM)往往难以准确解释智能合约安全中的特定概念。通过实证分析,我们发现即使经过持续预训练和监督微调,LLM在精确理解智能合约状态变更执行顺序方面仍存在局限,这可能导致在做出正确检测决策的同时产生错误的漏洞解释。这些局限导致检测性能不佳,进而引发潜在的严重财务损失。  

为解决这些挑战,我们提出基于LLaMA-3.1-8B的先进检测方法Smart-LLaMA-DPO。首先,我们构建了涵盖四种漏洞类型及机器不可审计漏洞的综合数据集,包含用于监督微调(SFT)的标签、详细解释和精确漏洞位置,以及用于直接偏好优化(DPO)的配对高质量与低质量输出。其次,我们使用大规模智能合约代码进行持续预训练,以增强LLM对智能合约特定安全实践的理解。进一步,我们利用综合数据集实施监督微调。最后,我们应用DPO技术,通过人类反馈提升生成解释的质量。Smart-LLaMA-DPO采用特殊设计的损失函数,促使LLM增加偏好输出的概率同时降低非偏好输出的概率,从而提升其生成高质量解释的能力。  

我们在四大漏洞类型(重入、时间戳依赖、整数溢出/下溢和delegatecall)及机器不可审计漏洞上评估Smart-LLaMA-DPO。我们的方法显著优于现有最优基线,F1分数平均提升10.43%,准确率平均提高7.87%。此外,LLM评估与人工评估均证明Smart-LLaMA-DPO生成的解释在正确性、全面性和清晰度方面具有卓越质量。

链接:https://doi.org/10.1145/3728878

83、SoK: A Taxonomic Analysis of DeFi Rug Pulls: Types, Dataset, and Tool Assessment

拉地毯骗局是去中心化金融(DeFi)领域的关键威胁,造成重大财务损失并侵蚀生态系统信任。尽管研究取得进展,但零散的分类法、有限的数据集和不充分的工具评估仍阻碍着有效检测。通过对学术和行业资源的系统分析,我们建立了包含35种独特拉地毯类型的综合分类法,其中包括9种先前未记录的变体。分析揭示了显著的检测缺口:现有数据集仅覆盖20%的已知类型,这促使我们创建包含2,391个实例的增强数据集,将覆盖率提升至82.9%。对13种检测工具的评估显示其能力存在显著差异(25.7%至62.9%),其中9种类型完全无法检测。最关键的是,面对复杂攻击时工具性能显著下降:单向量攻击的检测率从55.6%骤降至复合场景下的31.3%。这些发现为开发更强大的去中心化系统智能合约漏洞安全测试方法提供了重要见解。

链接:https://doi.org/10.1145/3728900

84、Static Program Reduction via Type-Directed Slicing

传统的程序切片工具能够针对目标变量构建一个计算相同结果的精简程序变体,即程序切片保留了原始程序的运行时语义。本文提出类型导向切片方法,该方法构建一个更小的程序,确保类型检查器在仅考虑目标程序位置时对切片程序产生相同的结果——即类型导向切片器从特定类型检查器的视角出发,保留了目标程序在编译时的语义。  

类型导向切片是类型检查器设计者和维护者的有效调试辅助工具。当类型检查器在大型代码库上产生意外结果(如崩溃、误报警告、遗漏警告等)时,用户通常会在未提供测试用例的情况下向类型检查器维护者报告错误。当前最先进的程序缩减方案是动态方法:需要反复运行类型检查器以验证最小化结果。而类型导向切片器通过利用类型检查器类型规则固有的模块化特性,无需重新运行类型检查器即可静态解决该问题。我们针对Java开发的类型导向切片原型工具完全自动化,可处理不完整程序,且运行高效。该工具能为三个广泛使用的类型检查器(Java编译器自身、NullAway和Checker Framework)的28个历史缺陷中的25个(89%)生成保留类型检查器异常行为的小型测试用例;在这25个案例中,即使缺少目标程序的类路径,它仍能保持类型检查器的行为特征。此外,在免费层级的CI运行器上,该工具对每个基准测试(代码规模高达数百万行)的处理时间均在一分钟内完成。

链接:https://doi.org/10.1145/3728968

85、Structure-Aware, Diagnosis-Guided ECU Firmware Fuzzing

电子控制单元(ECU)在现代车辆中扮演着关键角色,其功能范围涵盖基础控制功能至安全关键功能。模糊测试已成为确保ECU固件功能安全与车辆安全性的有效手段。然而现有模糊测试方法主要关注通过外部总线(如CAN)来自其他ECU的输入,却忽视了通过板载总线(如SPI)从内部外设接收的输入。由于输入空间探索受限,这些方法无法全面覆盖ECU固件的模糊测试。此外,现有方法通常缺乏对ECU固件内部状态的可见性,仅依赖有限反馈(如消息超时或硬件指示灯),制约了测试有效性。

针对这些局限性,我们提出结构感知、诊断引导的EcuFuzz框架,以实现全面有效的ECU固件模糊测试。具体而言,EcuFuzz同步处理外部总线(CAN)与板载总线(SPI),利用CAN和SPI的协议结构有效变异CAN消息与SPI序列,并采用基于双核微控制器的外设模拟器处理实时SPI通信。此外,EcuFuzz创新性地引入车辆诊断协议作为反馈机制,通过采集ECU内部状态(包括错误相关变量、故障码及异常上下文)来指导测试进程。在对三家主流一级供应商的十款ECU兼容性评估中,本框架成功适配九款设备;对三款代表性ECU的有效性评估表明,该方法检测出九个未知安全关键故障,相关供应商已发布技术补丁。

链接:https://doi.org/10.1145/3728914

86、Testing the Fault-Tolerance of Multi-sensor Fusion Perception in Autonomous Driving Systems

生产级自动驾驶系统(如谷歌Waymo与百度Apollo)通常依赖多传感器融合策略实现环境感知。该策略通过结合摄像头与激光雷达的各自优势提升感知鲁棒性,直接影响自动驾驶车辆的安全关键驾驶决策。然而在实际自动驾驶场景中,摄像头与激光雷达均易受各类故障影响,显著改变自动驾驶系统的决策与后续行为。开发阶段需全面测试多传感器融合的鲁棒性。现有测试方法仅关注系统未能识别的极端案例,尚未深入研究传感器故障如何影响自动驾驶系统的整体行为。为此,我们提出FADE——首个全面评估基于多传感器融合感知的自动驾驶系统容错能力的测试方法。我们系统化构建自动驾驶车辆摄像头与激光雷达的故障模型,并将这些故障注入基于多传感器融合的自动驾驶系统,以测试其在多种场景下的行为。为高效探索传感器故障模型的参数空间,我们设计了一种反馈引导的差分模糊测试器,用于揭示注入故障引发的自动驾驶系统安全违规。我们在代表性工业级自动驾驶系统百度Apollo上评估FADE,实验结果证明了该方法的实用价值并揭示重要发现。我们进一步使用百度Apollo 6.0 EDU自动驾驶车辆进行实体实验,在真实场景中验证了这些发现。

链接:https://doi.org/10.1145/3728910

87、The First Prompt Counts the Most! An Evaluation of Large Language Models on Iterative Example-Based Code Generation

大型语言模型(LLM)在代码生成方面的能力已得到广泛研究,尤其是在根据自然语言描述实现目标功能方面。作为自然语言的替代方案,输入输出(I/O)示例提供了一种可访问、明确且灵活的功能描述方式。然而,其固有的多样性、不透明性和不完整性为理解和实现目标需求带来了更大挑战。因此,基于I/O示例生成代码(即基于示例的代码生成)提供了新视角,使我们能够额外评估LLM从有限信息推断目标功能以及处理新型需求的能力。但关于LLM在基于示例代码生成中的相关研究仍处于探索阶段。为填补这一空白,本文首次对基于示例的代码生成开展综合性研究。针对I/O示例不完整性导致的错误问题,我们采用迭代评估框架,并将基于示例的代码生成目标形式化为两个连续子目标:生成符合给定示例的代码,以及通过(迭代)给定示例成功实现目标功能的代码。我们使用包含172个多样化目标功能(源自HumanEval和CodeHunt)的新基准测试评估了六个前沿LLM。结果表明:当使用迭代I/O示例而非自然语言描述需求时,LLM的得分下降超过60%,说明基于示例的代码生成对当前LLM仍具挑战性。值得注意的是,绝大多数(甚至超过95%)成功实现的功能均在首轮迭代中完成,表明LLM难以有效利用迭代补充的需求。此外,我们发现将I/O示例与即使不精确且碎片化的自然语言描述结合可显著提升LLM性能,且初始I/O示例的选择也会影响得分,这为提示优化提供了可能。这些发现凸显了交互过程中早期提示的重要性,并为增强基于LLM的代码生成提供了关键见解与启示。

链接:https://doi.org/10.1145/3728947

88、The Incredible Shrinking Context... in a Decompiler Near You

二进制代码反编译在以太坊虚拟机(EVM)智能合约领域已成为一项至关重要的应用。出于多种逆向工程或工具开发目的,几乎每年都会出现新的主流反编译器并广受欢迎。从技术角度看,该问题具有根本性挑战:其核心是从高度优化的延续传递风格(CPS)表示中恢复高级控制流。在架构层面,反编译器可通过静态分析或符号执行技术构建。  

我们提出Shrnkr——一种基于静态分析的反编译器,继承了最先进的Elipmoc反编译器的优势。Shrnkr在所有关键维度上均实现了显著改进:可扩展性、完整性和精确度。其核心技术采用了一种新型静态分析上下文变体:收缩上下文敏感性。该技术通过深度裁剪静态分析上下文,主动"遗忘"控制流历史,从而为更精确的推理创造空间。  

我们将Shrnkr与基于静态分析和符号执行的最先进反编译器进行对比。在标准基准测试集中,Shrnkr可扩展至99.5%以上的合约(Elipmoc约为95%),代码覆盖率(即触及并成功反编译的代码)较Heimdall-rs提升67%,关键不精确度指标较Elipmoc降低超65%。

链接:https://doi.org/10.1145/3728935

89、Top Score on the Wrong Exam: On Benchmarking in Machine Learning for Vulnerability Detection

根据我们对漏洞检测机器学习(ML4VD)的调研,过去五年中发表的论文十有八九将ML4VD定义为函数级二元分类问题:给定一个函数,判断其是否包含安全漏洞?基于安全研究者的经验,在判定某函数是否导致程序存在攻击漏洞时,我们往往需要先理解该函数的调用上下文。本文通过分析主流ML4VD数据集中的漏洞函数与非漏洞函数,探究在缺乏上下文的情况下做出准确判断的实际可行性。若某函数因实际安全漏洞的修复而被修改,且被确认为导致程序漏洞的根源,则判定为漏洞函数;反之则为非漏洞函数。研究发现,几乎所有案例均表明脱离上下文无法做出准确判断:漏洞函数往往仅因存在诱发漏洞的调用上下文而具有危险性,而非漏洞函数在特定上下文中也可能转化为漏洞函数。  

但为何现有ML4VD技术能在样本明显信息不足的情况下获得高评分?伪相关性现象:研究发现即使仅依据词频统计也能获得高评分,这表明当前数据集存在被利用以获取高评分而非真正检测安全漏洞的缺陷。本文结论指出,主流ML4VD问题定义存在根本性缺陷,并质疑该领域大量研究的内部有效性。建设性地,我们呼吁建立更有效的基准评估方法以衡量ML4VD的真实能力,提出替代性问题定义框架,并探讨其对机器学习与程序分析研究评估体系的更广泛启示。

链接:https://doi.org/10.1145/3728887

90、Tracezip: Efficient Distributed Tracing via Trace Compression

分布式追踪是云服务系统监控与测试的基础构建模块。为降低计算与存储开销,当前普遍采用采样方式减少追踪数据采集。然而现有工作面临追踪完整性与系统开销之间的权衡:基于头部采样的方法在请求进入系统时 indiscriminately 选择追踪对象,可能遗漏关键事件;基于尾部采样的方法先全量采集请求,再选择性保留边缘案例追踪,但会带来追踪数据收集与录入的开销。本文另辟蹊径,提出Tracezip通过追踪压缩提升分布式追踪效率。核心洞见在于:追踪数据间存在显著冗余,导致相同数据在服务与后端之间重复传输。我们设计了一种名为跨度检索树(SRT)的新型数据结构,可在服务端持续封装此类冗余,将追踪跨度转换为轻量形式。在后端,通过检索先前跨度已传输的公共数据即可无缝重构完整追踪链。Tracezip包含一系列优化SRT结构的策略,以及通过差分更新机制高效同步服务与后端间SRT的方法。基于微服务基准测试、主流云服务系统和真实生产追踪数据的评估表明,Tracezip能以可忽略的开销显著提升追踪收集性能。我们已在OpenTelemetry Collector中实现Tracezip,使其与现有追踪API保持兼容。

链接:https://doi.org/10.1145/3728888

91、Tratto: A Neuro-Symbolic Approach to Deriving Axiomatic Test Oracles

本文提出Tratto——一种神经符号方法,能够从源代码和文档中生成可作为公理化预言(布尔表达式)的断言。Tratto的符号模块利用编程语言的语法、被测单元及其上下文(所属类与可用API)来约束可成功生成有效预言词符的搜索空间。其神经模块采用经微调的Transformer模型,既决策是否输出预言,又从符号模块返回的词符集合中选择下一个词符来逐步构建预言。实验表明,Tratto以73%准确率、72%精确率和61% F1分数显著优于现有公理化预言生成方法,大幅超越本研究中最优符号方法与神经方法的最佳结果(分别为61%、62%和37%)。Tratto生成的公理化预言数量是当前符号方法的三倍,而生成的误报数量比采用少样本学习和思维链提示的GPT-4减少十倍。

链接:https://doi.org/10.1145/3728960

92、Type-Alias Analysis: Enabling LLVM IR with Accurate Types

LLVM中间表示(IR)作为LLVM编译器基础设施的核心,提供了强大的类型系统和静态单赋值(SSA)形式,非常适合程序分析。但其单类型设计为每个IR变量严格指定单一类型,即使该变量可能合法对应多种类型。近期不透明指针的引入加剧了这一局限:IR中所有指针均以通用指针类型(ptr)统一表示,抹除了具体指针目标类型信息,导致许多基于类型的分析失效。

为突破单类型设计的限制,我们提出类型别名分析——一种多类型设计方案,通过维护IR变量的类型别名集并在IR指令间推断类型。我们开发了原型工具TypeCopilot,专门针对C程序生成的启用不透明指针的LLVM IR恢复具体指针目标类型。TypeCopilot实现了98.57%的准确率和94.98%的覆盖率,使现有分析工具在采用不透明指针后仍能保持有效性。为促进进一步研究和安全应用,我们已开源TypeCopilot,为社区在现代LLVM IR上开展精确的类型感知安全分析提供实践基础。

链接:https://doi.org/10.1145/3728974

93、Uncovering API-Scope Misalignment in the App-in-App Ecosystem

摘要“应用内应用”(app-in-app)模式是移动系统的新兴趋势,超级应用(简称superApps,如微信、百度、抖音)通过提供特权API,允许外部供应商在其平台上开发小程序(简称miniApps)。为便于管理,超级应用设计了特定的权限配置(称为scope)来授予API对特定功能和资源的访问权限。在API实现过程中严格遵守这些权限范围对维护安全至关重要,否则超级应用的权限管理可能被绕过——我们将这种漏洞称为API-权限范围失配。本研究首次对应用内应用生态中的API-权限范围失配问题进行系统性分析,揭示了根本原因和安全风险。更重要的是,我们开发了名为ScopeChecker的自动化工具,用于检测超级应用和小程序中的API-权限范围失配问题。该工具通过将Android权限机制集成到超级应用功能中,提取标准API-权限范围映射关系,并基于LLM的代码生成技术创建可执行的API代码片段作为测试用例。执行结果反映了API与权限范围的实际映射关系,通过与标准映射比对即可识别失配现象。随后,ScopeChecker通过将失配API与定制化的目标小程序方法导向抽象语法树(MAST)进行匹配,验证小程序中的失配情况。经人工确认,ScopeChecker在头部超级应用中检出38个存在权限失配的API,其性能优于当前最先进的小程序测试方法。值得注意的是,我们获得了超级应用开发商及CNVD的11次正面回应,其中9个漏洞获得确认并获奖励:包括1个高风险、7个中风险和1个低风险漏洞。为评估普遍性,ScopeChecker检测了42,000余个小程序,发现51%存在API-权限范围失配问题,平均每个小程序存在1.4个失配API。最后,我们通过分析真实攻击案例,阐述了由API-权限范围失配引发的四类安全威胁。

链接:https://doi.org/10.1145/3728962

94、Understanding Model Weaknesses: A Path to Strengthening DNN-Based Android Malware Detection

Android恶意软件检测仍是网络安全研究中的关键挑战。近年来研究利用人工智能技术(特别是深度神经网络DNN)训练检测模型,但常用训练数据集中恶意软件家族间的显著不平衡往往会影响其有效性。这种不平衡导致模型在主流类别上过拟合,而在低代表性类别上表现不佳,增加了对罕见恶意软件家族的预测不确定性。为改善许多DNN模型的次优性能,我们提出MalTutor新型框架,通过优化训练流程增强模型鲁棒性。我们的核心洞见在于将不确定性从"负担"转化为"资产",并将其策略性融入DNN训练方法。具体而言,我们首先评估DNN模型在不同训练周期中的预测不确定性,以此指导样本分类。结合课程学习策略,我们从低不确定性的易学习样本开始训练,逐步加入高不确定性的难学习样本。实验结果表明,MalTutor显著提升了在不平衡数据集上训练的模型性能:准确率提高31.0%,F1分数提升138.8%,特别是在检测各类恶意应用时的平均准确率提升133.9%。我们的发现为利用不确定性增强面向预测的软件工程任务中DNN模型鲁棒性提供了重要见解。

链接:https://doi.org/10.1145/3728884

95、Understanding Practitioners’ Expectations on Clear Code Review Comments

代码审查评论(CRC)在现代代码审查过程中至关重要。它为审查者提供了识别潜在缺陷、提供建设性反馈及改进建议的机会。清晰简洁的代码审查评论能促进开发者之间的沟通,并对正确理解已发现问题和建议解决方案具有关键作用。尽管CRC清晰度的重要性已被广泛认可,但目前仍缺乏关于良好清晰度构成要素及评估标准的指导原则。本文通过综合研究来理解和评估CRC的清晰度:首先基于文献综述和实践者调研,推导出与CRC清晰度相关的一组属性——RIE属性(即相关性、信息量和表达质量)及其对应评估标准;随后对九种编程语言开源项目中的CRC清晰度进行实证分析,发现其中较大比例(28.8%)的评论至少存在某一属性上的清晰度缺陷;最后,我们通过提出ClearCRC框架探索自动评估CRC清晰度的可行性。实验结果表明,基于预训练语言模型的ClearCRC能有效评估CRC清晰度,其平衡准确率最高达73.04%,F-1分数最高达94.61%。

链接:https://doi.org/10.1145/3728931

96、Unlocking Low Frequency Syscalls in Kernel Fuzzing with Dependency-Based RAG

大多数覆盖引导的内核模糊测试工具通过系统调用序列合成来测试操作系统内核。然而,在模糊测试过程中仍存在极少或未被覆盖的系统调用(称为低频系统调用,LFS),这意味着相关代码分支未被探索。这是由于LFS的复杂依赖性和突变不确定性,使得模糊测试工具难以生成相应的系统调用序列。由于许多内核模糊测试工具能够基于选择表机制从当前语料库中动态学习系统调用依赖关系,提供全面且高质量的种子有助于覆盖LFS。但构建此类种子严重依赖专家经验来解决系统调用依赖关系。  

本文提出SyzGPT,首个通过大语言模型(LLM)自动为LFS生成有效种子的内核模糊测试框架。我们采用基于依赖关系的检索增强生成(DRAG)方法释放LLM的潜力,并设计了一系列步骤提升生成种子的有效性。首先,SyzGPT通过LLM从现有文档中自动提取系统调用依赖关系;其次,基于依赖关系从模糊测试语料库中检索程序,为LLM构建自适应上下文;最后,通过反馈周期性生成并修复种子以丰富LFS的模糊测试语料库。我们提出了一套针对内核领域种子生成的新评估指标。实验表明,SyzGPT能生成有效率达87.84%的种子,并可扩展到离线和微调LLM。与七种最先进的内核模糊测试工具相比,SyzGPT平均将代码覆盖率提升17.73%,LFS覆盖率提升58.00%,漏洞检测能力提高323.22%。此外,SyzGPT独立发现了26个未知内核漏洞(其中10个与LFS相关),11个已获确认。

链接:https://doi.org/10.1145/3728913

97、Validating Network Protocol Parsers with Traceable RFC Document Interpretation

验证网络协议实现的正确性极具挑战性,主要存在预测基准缺失(oracle)和可追溯性两大难题。前者决定了何时应将协议实现判定为存在缺陷——尤其当错误未引发任何可观测症状时;后者则帮助开发者理解实现如何违反协议规范,从而促进错误修复。与现有研究很少同时考虑这两个问题不同,本文基于大语言模型(LLM)的最新进展,同时解决这两个问题并提供有效方案。我们的核心发现是:网络协议通常随结构化规范文档(即RFC文档)发布,这些文档可通过LLM系统性地转换为形式化的协议消息规范。此类规范虽可能因LLM幻觉存在误差,但可作为准预测基准来验证协议解析器,而验证结果又会逐步优化该基准。由于基准源自规范文档,我们在协议实现中发现的任何错误均可追溯至文档,从而解决可追溯性问题。我们使用九种网络协议及其C、Python和Go语言实现进行了广泛评估。结果表明:本方法优于现有最优技术,共检测出69个错误(其中36个已确认)。本项目还展示了基于自然语言规范实现全自动化软件验证的潜力——该过程因需理解规范文档并推导测试输入的预期输出,历来被认为主要依赖人工完成。

链接:https://doi.org/10.1145/3728955

98、VerLog: Enhancing Release Note Generation for Android Apps using Large Language Models

发布说明是向用户和开发者传达软件更新细节的重要文档,但其生成过程仍耗时且易出错。本文提出VerLog,一种利用大语言模型(LLM)增强软件发布说明生成的新技术。VerLog通过自适应提示的少样本上下文学习,激发LLM的图推理能力,使其能准确解读并记录代码变更的语义信息。此外,VerLog融合了多粒度信息(包括细粒度代码修改和高层非代码工件)以指导生成过程,确保发布说明具备全面性、准确性和可读性。我们将VerLog应用于248个独特Android应用的42个版本,并进行了广泛评估。结果表明,无论是在高质量参考发布说明的受控实验中,还是野外评估中,VerLog在生成发布说明的完整性、准确性、可读性及整体质量上均显著优于现有基线方法(精确率、召回率和F1值最高提升18%–21%)。

链接:https://doi.org/10.1145/3728961

99、Walls Have Ears: Demystifying Notification Listener Usage in Android Apps

Android系统中的通知监听服务(NLS)允许第三方应用监控和处理设备通知,虽能实现强大功能,但也带来安全与隐私风险。尽管访问NLS需特殊权限,其仍被恶意行为者反复利用。然而,目前缺乏对NLS使用模式及其安全影响的系统性研究。本文提出NLRadar——一种结合静态分析与大语言模型(LLM)的混合方法,用于检测Android应用中的NLS使用情况。我们将NLRadar应用于大规模应用(含恶意软件与常规应用),以揭示NLS使用模式并挖掘滥用行为。分析表明NLS存在严重滥用现象,包括应用不安全存储社交媒体消息、利用NLS进行破坏性竞争或窃取短信凭证,以及通过NLS传播推广信息甚至恶意链接等。研究还发现应用更新中存在未公开的NLS使用变更,且隐私政策披露不充分。这些发现表明,亟需加强对NLS使用的严格审查,并提升开发者对负责任NLS实践的认知。

链接:https://doi.org/10.1145/3728898

100、Wemby’s Web: Hunting for Memory Corruption in WebAssembly

WebAssembly通过原生代码实现了Web应用中性能关键模块的高速执行。然而最新研究表明,WebAssembly模块中的内存破坏错误可能被用于攻击Web应用。本文首次对WebAssembly内存破坏问题展开系统性分析,揭示了一种新型威胁模型的普遍存在:攻击者可通过内存破坏实现受害者浏览器端的代码注入。通过对37,797个域名的大规模分析,我们发现有29,411个(77.81%)域名完全信任来自潜在攻击者控制源的数据。攻击者可利用内存错误操纵WebAssembly内存——这些被隐式信任的数据常被传入敏感函数(如eval)或通过innerHTML直接插入DOM。因此,攻击者可滥用这种信任实现JavaScript代码执行,即跨站脚本攻击(XSS)。

针对该问题,我们提出首个整体分析WebAssembly网站的有效方案Wemby。通过模糊测试技术,Wemby能有效检测Web应用中远程暴露的内存破坏错误。我们实现了无需源码的WebAssembly插桩方案,提供细粒度的内存破坏检测能力。在实际应用中,Wemby成功发现了多个内存破坏漏洞(包括Zoom平台漏洞)。性能评估表明:Wemby相比现有WebAssembly模糊测试工具有显著提升,平均速度提高232倍,代码覆盖率增加46%。

链接:https://doi.org/10.1145/3728937

101、What Happened in This Pipeline? Diffing Build Logs with CiDiff

持续集成(CI)被开发者广泛用于确保软件项目的质量与可靠性。然而,诊断CI回归是一个繁琐的过程,需要人工分析冗长的构建日志。本文探索了文本差异分析如何辅助CI回归调试。由于现成的差异比对算法效果欠佳,我们提出了一种专为构建日志设计的差异化算法CiDiff。我们在包含17,906个CI回归案例的新数据集上,通过准确率研究、量化分析和用户调研,将CiDiff与多种基线方法进行对比。结果表明:在中等规模案例中,我们的算法可将需要检查的代码行数减少约60%,与当前主流的LCS差异算法相比具有合理开销。最终,在70%的回归案例中大多数参与者倾向于选择我们的算法,而LCS差异算法仅获得5%的偏好选择。

链接:https://doi.org/10.1145/3728966

102、Why Does My Transaction Fail? A First Look at Failed Transactions on the Solana Blockchain

Solana是一个新兴的区块链平台,以其高吞吐量和低交易成本著称,已成为去中心化金融(DeFi)、非同质化代币(NFT)及其他Web 3.0应用的首选基础设施。在Solana生态中,交易发起者通过提交多样化指令与各类智能合约交互,其中包括采用自动化做市商(AMM)机制的去中心化交易所(DEX),使用户无需中介即可直接在链上交易加密货币。尽管Solana具备高吞吐量和低成本优势,这些特性却使其面临机器人滥发交易以牟利的问题,导致交易失败和网络拥堵现象频发。  

现有研究主要集中于Solana区块链的性能评估(特别是可扩展性与交易吞吐量)以及智能合约安全性改进,而对失败交易的特征及影响尚缺乏深入探索。为此,我们基于涵盖7200万个区块中超过15亿笔失败交易的精选数据集,对Solana失败交易展开大规模实证研究。具体而言,我们首先从交易发起者、触发失败的程序和时间模式三个维度刻画失败交易特征,并将其与成功交易的区块位置和交易成本进行对比;随后根据错误日志中的报错信息对失败交易分类,并探究特定程序与交易发起者如何关联这些错误。  

我们发现:Solana交易失败率呈现日周期性波动,且与失败交易量呈强正相关,其中机器人交易失败率高达58.43%;失败交易错误日志中存在十类典型错误,因"价格/利润未满足"和"无效状态"导致的失败占比达67.18%;AMM在失败交易中主要遭遇"无效状态"错误,而DEX聚合器更易受"价格/利润未满足"错误影响;交易发起者中,机器人因高频交易和复杂合约交互面临更广泛的错误类型,普通用户则错误类型较为有限。基于研究结果,我们提出降低Solana交易失败率的实践建议,并展望未来研究方向。

链接:https://doi.org/10.1145/3728943

103、WildSync: Automated Fuzzing Harness Synthesis via Wild API Usage Recovery

模糊测试是高效测试软件的最实用技术之一。当对软件库API进行模糊测试时,高质量的测试套件至关重要,它能使模糊器以精确的调用序列和函数参数执行API。尽管开发人员通常依赖人工编写测试套件,但自动化生成方法正受到日益广泛的关注。现有研究因依赖基于编译器的分析或运行时执行轨迹(需要人工设置配置),在可扩展性和有效性方面存在局限。我们对多个活跃测试库的研究表明,大量被开源项目实际使用的导出API函数尚未被现有测试套件或单元测试覆盖。这些API函数缺乏测试会增加漏洞未被发现的风险,进而可能引发安全问题。为改善现有模糊测试方法的覆盖不足问题,我们提出一种创新方法:通过从真实应用场景中提取未测试函数的使用模式,基于轻量级抽象语法树分析技术从外部源代码中提取API使用规范,并将这些使用模式集成到现有测试套件中以构建覆盖未测试函数的新套件。我们实现了名为WildSync的原型系统,能够为OSS-Fuzz上的C/C++库自动生成测试套件。实验表明,WildSync成功为OSS-Fuzz中24个活跃测试库及3个可后续集成的主流库生成469个新测试套件,覆盖函数数量增加超过1.3千个,代码行数增加超过1.6万行,同时发现了7个此前未检测到的漏洞。

链接:https://doi.org/10.1145/3728918

104、You Name It, I Run It: An LLM Agent to Execute Tests of Arbitrary Projects

执行项目测试套件的能力在许多场景中至关重要,例如评估代码质量与覆盖率、验证开发者或自动化工具提交的代码变更、确保与依赖项的兼容性等。尽管其重要性显著,但在实践中执行项目测试套件常面临挑战,因为不同项目采用不同的编程语言、软件生态、构建系统、测试框架及其他工具。这些挑战使得创建一种适用于不同项目的可靠通用测试执行方法变得困难。本文提出ExecutionAgent,这是一种自动化技术,能够通过源代码为任意项目构建测试脚本并运行其测试用例。受人类开发者处理该任务方式的启发,我们的方法基于大型语言模型(LLM)构建自主代理,可自动执行命令并与主机系统交互。该代理通过元提示(meta-prompting)技术获取与目标项目相关的最新技术指南,并基于前序步骤的反馈迭代优化其执行流程。我们在评估中将ExecutionAgent应用于50个开源项目,这些项目涵盖14种编程语言及多种构建与测试工具。该方法成功执行了33/50项目的测试套件,且与基准测试套件执行结果的偏差仅为7.5%。相比现有最佳技术,该成果将成功率提升了6.6倍。该方法成本可控,单项目平均执行时间为74分钟,LLM调用成本仅为0.16美元。我们期望ExecutionAgent能成为开发者、自动化编程工具及研究人员的实用工具,助力跨多样项目的测试执行需求。

链接:https://doi.org/10.1145/3728922

105、ZTaint-Havoc: From Havoc Mode to Zero-Execution Fuzzing-Driven Taint Inference

模糊测试是一种流行的软件漏洞发现技术,其核心问题在于识别能影响程序行为的关键字节。污点分析能以白盒方式追踪关键字节的数据流,但常存在稳定性问题且无法在大型现实程序中运行。模糊驱动污点推断(FTI)是一种简单的黑盒技术,通过监控程序执行实例的动态行为,以黑盒方式推断关键字节。然而该方法需要额外O(N)次程序执行,导致较大运行时开销。  

我们观察到模糊测试中广泛使用的突变方案——havoc模式,可转化为零额外执行开销的轻量级FTI。本研究首先提出havoc模式的计算模型,形式化描述其突变过程。基于该模型,我们证明havoc模式能在生成和执行新测试用例的同时启动FTI,进而提出无需额外程序执行的ZTaint-Havoc新型FTI方案。ZTaint-Havoc在UniBench和FuzzBench上的插装开销仅分别为3.84%和12.58%。最后我们提出基于ZTaint-Havoc识别关键字节的高效突变算法。  

通过综合评估havoc模式的计算模型,我们验证了将其转化为零额外执行开销的高效FTI的可行性。基于AFL++的havoc模式实现原型ZTaint-Havoc,并在FuzzBench和UniBench数据集上进行评估。大量实验结果表明:在24小时测试中,ZTaint-Havoc相较原生AFL++在FuzzBench和UniBench上的边覆盖率最高提升33.71%和51.12%,平均提升分别为2.97%和6.12%。

链接:https://doi.org/10.1145/3728916

106、xFUZZ: A Flexible Framework for Fine-Grained, Runtime-Adaptive Fuzzing Strategy Composition

模糊测试是检测软件漏洞最高效的技术之一。现有方法在不同目标间存在性能不一致问题,且依赖于僵化的粗粒度模糊测试策略组合,限制了在运行时自适应融合不同模糊测试策略优势的灵活性。为解决这些挑战,我们提出了一个支持细粒度运行时自适应策略组合的灵活可扩展模糊测试框架。该框架将主流输入调度与变异调度策略集成为可独立切换的细粒度插件,使用户能在整个测试过程中自适应替换任意插件。此外,我们提出基于滑动窗口汤普森采样的自适应算法,在测试过程中动态选择最优的模糊测试策略组合。实验结果表明:该框架在独特漏洞发现数量上较最先进模糊测试工具提升10.07%,代码覆盖率提高4.94%。值得注意的是,其在测试套件37个漏洞中率先检测出21个,证明了其在多样化目标上的有效性。

链接:https://doi.org/10.1145/3728873

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐