2026, 37(7):2691-2693. DOI: 10.13328/j.cnki.jos.007591 CSTR: 32375.14.jos.007591
摘要:
2026, 37(7):2694-2718. DOI: 10.13328/j.cnki.jos.007590 CSTR: 32375.14.jos.007590
摘要:Java编程语言自诞生以来, 就始终处于不断发展和演变的过程中. 随着新语言特性及编程范式的不断涌现, Java的表达能力和执行效率在不断提升, 推动了整个软件生态的进步. 为了确保Java生态的安全性和稳定性, 研究人员设计了多种针对Java编译器及虚拟机的测试程序生成方法, 以检测潜在的缺陷. 然而, 现有工作主要针对成熟的语法设计测试程序生成方法或变异策略, 难以对语言新特性进行有效的测试. 为此, 提出一种基于大语言模型的Java新特性测试程序生成方法LumiX. 首先, LumiX利用大模型对使用自然语言描述的新语言特性进行总结, 概括得到新特性的使用描述; 随后, LumiX以历史揭错测试程序作为种子程序, 利用程序分析工具提取种子程序中可复用的程序元素, 结合新特性的使用描述, 利用大模型生成针对新特性的代码片段. 新生成的代码片段将被插入至种子程序中, 生成能够覆盖新特性的测试程序. 最后, LumiX设计了双层的差分测试方法, 分别利用不同的Java编译器(javac和ECJ)及Java虚拟机(HotSpot和OpenJ9)对新生成的测试程序进行编译和执行, 通过对比不同编译器和虚拟机的执行结果来检测潜在的缺陷. 实验结果表明, LumiX能够有效生成覆盖Java语言新特性的测试程序, 并提升现有工具对Java语言新特性的测试能力. 同时, 将LumiX应用于最新发布的Java编译器以及虚拟机的测试中, 累计发现16个未知缺陷, 其中12个已被开发人员确认或修复.
2026, 37(7):2719-2741. DOI: 10.13328/j.cnki.jos.007584 CSTR: 32375.14.jos.007584
摘要:软件包库的安全性是软件供应链分析的重要一环, 但是现有研究和工具往往缺乏对软件包库中外部语言调用的有效分析. PyPI是Python语言的官方软件包库, 其中存储海量不同应用领域的Python软件包. 这些软件包除了包含Python语言编写的程序外, 还常包含通过Python的外部接口Python/C API调用的C/C++外部语言程序. 分析Python软件包库中外部语言调用的安全性对于保障软件供应链的安全可靠具有重要意义. 通过分析互操作官方文档以及互操作程序分析的相关方法和工具, 构建Python-C/C++互操作程序的漏洞基准套件, 其中包括9小类行为共计15种漏洞模式的基准测试程序, 覆盖内存、类型、异常、并发和数值这5大类语言特性以及安装量最大的16个包含C/C++外部调用的Python软件包中的互操作程序漏洞. 通过在漏洞基准套件上评估已有的先进Python-C/C++互操作漏洞检查工具, 对比分析现有研究和工具的可靠性、完备性和可扩展性, 分析总结Python-C/C++互操作安全分析的现状和不足. 通过分析超过700个漏洞警告, 确认在6个PyPI库中新发现3种共计21个实际漏洞.
2026, 37(7):2742-2765. DOI: 10.13328/j.cnki.jos.007586 CSTR: 32375.14.jos.007586
摘要:Discord作为一种新兴的在线交流平台, 近年来在开源软件开发过程中被广泛采用. 现有研究针对Discord平台提出特定方法与技术, 以协助软件实践者在该平台高效检索信息、识别对话历史中的重复问题, 并构建消息数据集以挖掘有价值的信息. 然而, 针对开源软件实践者在Discord平台上的沟通行为, 尚缺乏系统性、全面性的实证研究. 深入理解此类沟通行为, 对于提升开源社区协作效率及开源软件开发过程中的问题解决具有重要意义. 围绕Discord平台上开源软件实践者的沟通开展大规模实证研究, 构建两个数据集: 数据集I来源于7个开源软件社区, 共包含616 443条消息; 数据集II基于数据集I, 经人工筛选验证, 包含17 289条高质量消息. 基于上述数据集, 从消息层面与对话层面两个维度, 系统地刻画了开源软件实践者的沟通特征, 包括参与度、互动模式及讨论主题, 并进一步分析其对对话响应时间与问题解决状态的影响. 最后, 结合研究发现, 总结了对在线交流平台设计的启示, 提出对开源社区管理的建议, 并指出未来可深入探索的研究方向.
2026, 37(7):2766-2807. DOI: 10.13328/j.cnki.jos.007589 CSTR: 32375.14.jos.007589
摘要:开源软件深度嵌入企业的产品研发与交付流程, 缩短了研发周期、降低了研发成本并增强了系统兼容性; 与此同时, 针对开源软件供应链的攻击事件也呈现上升态势, 已成为软件行业最重大的安全威胁之一. 从产业研发视角分析研发效率与软件安全的内生矛盾, 发现产业组织以流程合规作为效率约束下, 被动应对开源软件供应链安全威胁的隐性共识. 结合实际案例论证了基于流程合规的安全体系无法应对开源软件供应链攻击; 基于产业视角提出了开源软件供应链攻击分类演化框架, 将开源软件供应链攻击分为3个阶段: 开源共建威胁产生、闭源研发威胁演化、成品使用攻击发作, 对不同阶段的攻击模式、技术手段等进行总结; 从面向开源生态的协同治理、面向产业研发的持续合规与攻击面收敛、面向成品使用的自适应防护这3个方面, 提出开源软件供应链的安全再平衡体系.
2026, 37(7):2808-2830. DOI: 10.13328/j.cnki.jos.007587 CSTR: 32375.14.jos.007587
摘要:第三方库 (third-party library, TPL)在软件开发中得到了广泛应用, 但也带来了安全漏洞和许可证冲突等风险. 为应对这些挑战, 软件成分分析 (software composition analysis, SCA)技术应运而生, 旨在通过识别和分析软件中使用的开源组件及其依赖关系, 帮助开发者检测安全漏洞、过时补丁和许可证合规性问题, 确保软件供应链的安全. 然而, 现有SCA工具在C/C++领域存在3大局限: 缺乏全面的TPL特征库、难以识别库粒度复用、对TPL依赖关系的分析能力不足. 针对上述问题, 提出C/C++源代码软件成分分析技术——CAnalyzer, 用于软件库粒度的复用检测场景. CAnalyzer通过整合15个平台的数据, 构建了一个包含33100个TPL和30047290个函数的特征库, 并通过特征库预处理与多重阈值匹配策略, 显著提升了TPL检测的准确性. 此外, CAnalyzer通过解析源码中的依赖指令, 实现了TPL间依赖关系的自动化构建. 实验结果表明, CAnalyzer在TPL检测中的精确率为90.63%, 召回率为86.57%, 在两项指标上均优于现有方法CENTRIS、TPLite和OSSFP. 在TPL依赖关系检测中, CAnalyzer的召回率和精确率分别为94.79%和98.99%. 目前, CAnalyzer已被OpenHarmony社区采纳, 在689个代码仓库中识别出166项外部组件, 体现了其在开源社区管理中的应用价值.
2026, 37(7):2831-2848. DOI: 10.13328/j.cnki.jos.007585 CSTR: 32375.14.jos.007585
摘要:日志数据记录了系统的运行状态、用户行为及错误信息. 基于日志的异常检测可快速识别潜在的安全风险或性能瓶颈, 提升运维效率, 助力故障诊断. 然而, 现有的日志异常检测方法仍面临诸多挑战, 如无法有效适应系统升级引起的日志模式变化, 缺乏高效反馈机制导致难以持续保持检测性能等. 为此, 提出一种日志异常检测框架PCLog, 采用强化学习方法中的近端策略优化(proximal policy optimization, PPO)算法进行模型训练. 该方案将检测模型视为智能体, 日志对应的语义向量视为状态, 事件视为动作, 通过最大化正常序列的累计奖励来学习系统的正常行为模式从而实现异常检测. 此外, 当检测性能下降时, PCLog可通过收集错误预测的样本作为专家示范数据, 并结合模仿学习中的行为克隆方法, 最大化专家数据的对数似然, 从而使模型更有效地逼近专家行为, 实现模型的自适应修正, 有效减少误报率, 提升系统长期运行的可靠性. 在HDFS、BGL与OpenStack这3大公开日志数据集上的实验结果表明, PCLog相较于现有方法表现更优, 具备较强的动态日志模式适应能力.
2026, 37(7):2849-2870. DOI: 10.13328/j.cnki.jos.007583 CSTR: 32375.14.jos.007583
摘要:软件缺陷定位任务以程序表层的执行错误为入口, 通过分析程序运行过程中异常的内部状态, 定位到底层代码级的缺陷根因. 目前主流的基于频谱和基于突变的缺陷定位以及当前最先进的SmartFL技术分别采用覆盖信息、突变信息和以程序语义为代表的信息作为观测程序内部状态的窗口, 所用信息过于宽泛、针对性不足, 且3类 (项)技术分别受限于语句风险值捆绑、突变成本过高、信息规模庞大等瓶颈. 为此, 近期一项基于异常触发信息的缺陷定位技术EXPECT提出通过程序自带的异常处理语句 (Try-catch块)对程序错误的执行状态进行监控, 以更低的成本实现了超越上述主流技术的缺陷定位效果, 该方法的运行前提是错误程序中必须含有足量的异常处理语句. 然而, 在真实的开源环境中, 许多软件程序并没有设置良好的异常处理机制, 导致其代码仅包含十分稀疏甚至不包含异常处理语句, 这直接影响EXPECT技术赖以运行的基础. 为此, 提出基于异常检查点植入的软件缺陷定位方法INSPECT (inserted checkpoint-based fault localization). 通过为错误程序自动植入临时的异常处理语句作为对运行时内部状态的检查点、设计更加先进的程序语句风险值计算方法, 将EXPECT方法的适用范围拓展到不包含异常处理语句的更普遍程序, 有效地将异常触发信息这一缺陷定位高效源数据的应用场景进行拓展, 实现了泛化性的提升. 实验结果表明, INSPECT实现了比现有最先进技术更好的缺陷定位效果: 在最好、平均、最差EXAM指标上的提升幅度分别为95.25%、55.92%和16.65% (模拟缺陷), 以及93.39%、57.54%和13.92% (真实缺陷); 在MRR指标上的提升为311.47% (模拟缺陷)和283.31% (真实缺陷).
2026, 37(7):2871-2885. DOI: 10.13328/j.cnki.jos.007588 CSTR: 32375.14.jos.007588
摘要:随着大语言模型(large language model, LLM)在代码生成领域的快速发展, 其生成的代码在智能化基础软件供应链中的应用日益广泛. 基础软件供应链中集成了大量基于LLM生成代码开发的第三方模块与组件. 然而, 由于LLM主要基于开源代码进行训练, 训练代码中的缺陷与安全漏洞可能会导致生成代码存在潜在错误与供应链安全问题. 为此, 学术界有针对性地提出了EvalPlus等测试技术, 但这些技术主要依赖基于概率的测试用例生成机制, 难以实现对供应链关键路径的全面覆盖, 导致深层次逻辑性缺陷难以被有效发现. 为了解决上述问题, 提出一种融合符号执行的供应链LLM生成代码的缺陷检测方法. 该方法通过符号执行挂载机制自动识别LLM生成代码的输入参数并进行适配和符号挂载, 制导符号执行引擎对程序的关键路径进行精确的约束分析, 生成高效的边界测试用例, 从而发现现有方法难以检测到的深层逻辑性程序缺陷. 在现有主流基准数据集上, 对LMSYS Chatbot Arena中排名前11的主流LLM进行了实验评估. 实验结果表明, 该方法能够更有效地检测出LLM生成代码中的逻辑性缺陷, 使代码的平均测试通过率降低了3.99%–18.98%, 平均测试覆盖率提高了3.31%–8.19%, 有效提升了LLM生成代码的正确性和智能化基础软件供应链的安全性.
2026, 37(7):2886-2910. DOI: 10.13328/j.cnki.jos.007581 CSTR: 32375.14.jos.007581
摘要:作为Web应用安全漏洞检测的核心技术之一, 静态应用安全测试 (static application security testing, SAST)具备广泛的业界应用场景. 然而, 现有静态分析工具受限于底层污点分析算法设计, 难以应对现代Web应用中的异步请求模式和多源输入语义等复杂逻辑, 直接影响其漏洞检测性能. 对此, 提出了一种面向Web安全漏洞检测的多数据流静态分析方法, 旨在对传统污点分析算法能力进行多维度扩展, 以提升其检测能力与泛用性: 在纵向维度上, 引入多段数据流分析, 通过关联与迭代算法综合考虑不同控制流路径上的数据依赖关系, 有效支撑需要多次异步调用触发的深层漏洞检测需求; 在横向维度上, 引入多标签数据流分析, 利用污染标签区分不同输入来源, 获取更细致的程序上下文语义信息, 提升与复杂语义相关的漏洞检测精确率. 基于上述方法实现了面向Java/JavaScript Web应用的漏洞检测原型系统MultiFlow, 实验评估结果表明, 在包含60个真实Web应用与第三方组件的数据集中, MultiFlow的多数据流分析方法具备良好的有效性, 在存储型、越权、原型链污染等复杂Web漏洞检测任务上分别取得了87.18%、75.00%与83.72%的精确率, 已获得8个CVE编号; 与现有方法相比, MultiFlow以更少的分析开销实现了更高的漏洞检测准召率, 验证了其实用价值.
2026, 37(7):2911-2935. DOI: 10.13328/j.cnki.jos.007582 CSTR: 32375.14.jos.007582
摘要:针对跨项目软件缺陷预测中数据隐私与项目异构性的双重挑战, 提出一个名为PRIDE-SDP的框架. 该框架的核心贡献在于深度融合了3种关键技术: 采用个性化联邦学习范式为每个异构项目定制专属预测模型, 集成提供严格数学保障的 (ε, δ)-差分隐私机制保护数据不出本地, 并设计了一个专用的时间-上下文融合网络 (temporal-contextual fusion network, TCFN)以高效地捕捉软件度量特征. 在覆盖27个开源项目和3个企业项目的6个数据集组上的实验结果验证了该框架的有效性: 与先进的跨项目缺陷预测基线相比, PRIDE-SDP平均AUC提升10.7%, F1-score提升7.3%; 在企业数据集上表现更加突出, 相较于所有先进的基线方法, MCC平均提升45.2%, Effort@20%平均提升29.5%, F1-score平均提升35.4%. 同时, 框架在提供较强隐私保障时, 其平均性能保持率仍能达到最佳性能的98%以上, 并且在成员推理攻击实验中能将攻击者的攻击准确率平均降低超过36%. 实验结果表明, PRIDE-SDP在保持高性能的同时, 有效兼顾了隐私保护与个性化适应能力.
2026, 37(7):2936-2952. DOI: 10.13328/j.cnki.jos.007655 CSTR: 32375.14.jos.007655
摘要:图神经网络(graph neural network, GNN)在图分类任务中表现出色, 但其“黑箱”性质引发了对预测过程可解释性的广泛关注. 作为一种自解释机制, 证据提取方法近年来受到广泛研究, 其目标是在生成预测结果的同时, 从原始图中提取紧凑、具备判别性的子图结构(即证据子图)以作为解释. 然而, 现有方法往往依赖数据中的“捷径”特征进行预测, 导致提取的解释缺乏忠实性, 进而影响模型的可解释性与鲁棒性. 为缓解上述问题, 提出一种互补感知证据提取(complement-aware rationale extraction, CaR)方法, 将未被选为证据的子图区域视为互补信息, 并从以下3个方面提升反事实建模与解释能力: 首先, 引入对比学习机制以解耦证据表示与互补表示, 增强二者的语义独立性; 其次, 提出回声学习(echo-learning)策略, 充分利用GNN各层消息传递过程中的中间表示, 捕捉不同深度层次下互补结构的差异性; 最后, 将当前与历史层的互补表示与证据表示结合, 进而构造反事实样本, 提升训练数据的多样性. 在多个真实数据集及一个合成数据集上的实验证明, CaR能够生成更具忠实性的证据, 验证了其有效性.
2026, 37(7):2953-2967. DOI: 10.13328/j.cnki.jos.007501 CSTR: 32375.14.jos.007501
摘要:随着高铁无线通信质量需求日益增长, 高速移动场景下的通信可靠性已成为高铁无线通信中亟需关注和解决的核心问题. 构建可靠的信道模型是解决这一问题的关键. 高铁复合无线通信信道建模应充分考虑实际运行环境与信道传播特性, 以构建通用性强且可靠性高的无线通信信道模型. 在复杂无线信道建模方面, 形式化方法凭借其严谨的数学建模与严格的逻辑推理能力展现出显著优势. 在高架桥这一典型的高铁通信场景中, 结合形式化验证方法, 提出一种基于小尺度衰落模型的复合无线通信信道的高阶逻辑模型. 针对复合信道的长尾分布特性, 运用定理证明技术验证了复合无线通信信道的概率密度函数符合第2类修正Bessel函数的分布.
2026, 37(7):2968-2988. DOI: 10.13328/j.cnki.jos.007552 CSTR: 32375.14.jos.007552
摘要:缺陷定位是软件程序调试中最昂贵、最繁琐和最耗时的活动之一, 同时也是软件维护中不可或缺的关键步骤. 由于缺陷的可变性, 缺陷定位在软件产品线中更具挑战性. 尽管单系统软件的缺陷定位研究取得了显著进展, 但针对软件产品线可变性缺陷定位的研究相对不足. 同时, 现有方法由于忽略了特征交互的重复生成和检查问题以及缺陷在程序语句间的传播问题, 从而面临着效率低和根因定位能力差的挑战. 为此, 针对软件产品线提出一种高效且准确的缺陷定位方法. 该方法分为特征级和语句级两个层级的定位: 在特征级定位中, 利用可疑特征选择集合之间存在包含关系和相同子集这两点特性, 实现可疑特征交互的高效识别; 在语句级定位中, 利用一种引入中介变量的约简因果模型, 并融合因果效应和频谱效应, 实现更精确的缺陷定位. 选择4种先进的软件产品线缺陷定位方法, 并在6个真实的软件产品线系统上进行实验比较. 结果表明, 所提方法在定位效率和准确性方面均显著优于其他主流方法.
2026, 37(7):2989-3012. DOI: 10.13328/j.cnki.jos.007548 CSTR: 32375.14.jos.007548
摘要:深度学习模型存在一定的安全隐患, 和这些模型关联的应用一旦发生安全事故, 很可能带来难以承受的后果. 为此, 需要对深度学习模型进行加固. 已有的加固方法包括针对对抗性噪声的对抗性训练方法、对抗噪声净化方法等. 对抗训练作为其中最常使用的方法具有较好的对抗攻击防御效果. 但是, 对抗训练后的模型容易出现鲁棒泛化不足的问题, 且会牺牲较多的原始精度. 基于此提出一种基于代理分布的对抗训练 (proxy-distribution-based adversarial training, PBAT)方法. 该方法利用概率模型捕获数据样本分布规律, 以生成能够协调原始精度和鲁棒性能的增强训练样本. 然后通过调整训练过程实现对模型的加固. 利用ResNet-20和GoogLeNet在2个典型的数据集CIFAR10和MNIST上开展实验, 并进一步在Faster R-CNN模型和PASCAL VOC数据集上针对目标检测任务开展实验. 实验结果表明, PBAT比其他4种典型的方法效果要好.
2026, 37(7):3013-3032. DOI: 10.13328/j.cnki.jos.007559 CSTR: 32375.14.jos.007559
摘要:量子计算机的迅猛发展对现存密码体制造成了极大的威胁, 后量子密码算法的实现和迁移部署尤为重要. 其中, 基于NTRU格的密码方案因结构简洁、计算效率高等优点而备受瞩目. CTRU-Prime方案基于NTRU格构造, 鉴于其在安全性、带宽和实现效率上的出色表现和GPU在大规模并行处理任务上的强大能力, 在Tensor Core和CUDA (compute unified device architecture) Core的基础上给出了CTRU-Prime的首个高吞吐量实现. CTRU-Prime的底层代数结构为素阶数域, 在抵御针对分圆环攻击的同时, 也为多项式乘法的实现带来挑战. 首先, 提出两种素阶数域上多项式乘法的GPU实现方案. 基于CUDA Core的伪梅森数不完整NTT的多项式乘法使用层融合技术优化访存模式, 能够达到256.98倍吞吐量, 基于Tensor Core的教科书式多项式乘法, 将多项式乘法转化为矩阵操作, 利用低精度MMA (matrix-multiply-and-accumulate)操作实现, 能够达到177.24倍吞吐量. 接着, 结合批量模式和单一模式、多流技术和多线程技术, 给出了GPU平台上面向吞吐量的CTRU-Prime总体架构, 使用融合内核、合并全局内存访问、优化访存模式等优化策略, 加快各个核函数的访存和计算速度. 实验结果表明, 基于RTX 3060平台, CTRU-Prime-653、CTRU-Prime-761、CTRU-Prime-1277每秒可以分别进行密钥生成6.3万、5.4万、1.6万次, 密钥封装63.5万、274.5万、160.1万次, 密钥解封装35.1万、262.2万、152.4万次, 是C实现版密钥生成吞吐量的68.85、79.78、66.84倍, 密钥封装吞吐量的10.32、46.57、46.81倍, 密钥解封装吞吐量的11.43、89.19、90.32倍. 与最新实现的Kyber相比, 密钥封装吞吐量达到1.46倍, 密钥解封装达到1.74倍, 是其他NTRU格基GPU高吞吐量实现的26倍.
2026, 37(7):3033-3048. DOI: 10.13328/j.cnki.jos.007574 CSTR: 32375.14.jos.007574
摘要:随着音频对抗攻击研究的深入, 如何在确保对抗音频隐蔽性(即与原始音频在听觉上高度相似)的同时, 提高其在不同模型之间的迁移性, 已成为研究热点之一. 提出一种能够同时提高对抗音频隐蔽性和迁移性的方法SIAttack (speak information attack). 该方法的核心思想是解耦音频中的说话人信息与内容信息, 并仅对说话人信息施加轻微扰动, 从而可以在保持内容信息不变的前提下实现对说话人识别系统的高效攻击. 在4个说话人识别模型以及3个主流商业API上的实验表明, SIAttack生成的音频在听觉上几乎无法与原始音频区分, 且能以较高的成功率误导所有测试模型, 在说话人识别模型上迁移成功率最高可达100%.

