2026, 37(7). DOI: 10.13328/j.cnki.jos.007581
摘要:作为Web应用安全漏洞检测的核心技术之一,静态应用安全测试(SAST)具备广泛的业界应用场景.然而,现有静态分析工具受限于底层污点分析算法设计,难以应对现代Web应用中的异步请求模式和多源输入语义等复杂逻辑,直接影响其漏洞检测性能.对此,提出了一种面向Web安全漏洞检测的多数据流静态分析方法,旨在对传统污点分析算法能力进行多维度扩展,以提升其检测能力与泛用性:在纵向维度上,引入多段数据流分析,通过关联与迭代算法综合考虑不同控制流路径上的数据依赖关系,有效支撑需要多次异步调用触发的深层漏洞检测需求;在横向维度上,引入多标签数据流分析,利用污染标签区分不同输入来源,获取更细致的程序上下文语义信息,提升与复杂语义相关的漏洞检测精确度.基于上述方法实现了面向Java/JavaScript Web应用的漏洞检测原型系统MultiFlow,实验评估结果表明,在包含60个真实Web应用与第三方组件的数据集中, MultiFlow的多数据流分析方法具备良好的有效性,在存储型、越权、原型链污染等复杂Web漏洞检测任务上分别取得了87.18%、75.00%与83.72%的准确率,已获得8个CVE编号;与现有方法相比, MultiFlow以更少的分析开销实现了更高的漏洞检测准召率,验证了其实用价值.
2026, 37(7). DOI: 10.13328/j.cnki.jos.007582
摘要:针对跨项目软件缺陷预测中数据隐私与项目异构性的双重挑战,本文提出一个名为PRIDE-SDP的创新框架.该框架的核心贡献在于深度融合了三种关键技术:采用个性化联邦学习范式为每个异构项目定制专属预测模型,集成提供严格数学保障的(ε,δ)-差分隐私机制保护数据不出本地,并设计了一个专用的时间-上下文融合网络(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). DOI: 10.13328/j.cnki.jos.007583
摘要:软件缺陷定位任务以程序表层的执行错误为入口,通过分析程序运行过程中异常的内部状态,定位到底层代码级的缺陷根因.目前主流的基于频谱和基于突变的缺陷定位,以及当前最先进的SmartFL技术分别采用覆盖信息、突变信息及以程序语义为代表的信息,作为观测程序内部状态的窗口,所用信息过于宽泛、针对性不足,且三类(项)技术分别受限于语句风险值捆绑、突变成本过高及信息规模庞大等瓶颈.为此,最近一项新的基于异常触发信息的缺陷定位技术EXPECT提出通过程序自带的异常处理语句(Try-catch块)对程序错误的执行状态进行监控,以更低的成本实现了超越上述主流技术的缺陷定位效果,该方法的运行前提是错误程序中必须含有足量的异常处理语句.然而,在真实的开源环境中,许多软件程序并没有设置良好的异常处理机制,导致其代码仅包含十分稀疏甚至不包含异常处理语句,这直接影响EXPECT技术赖以运行的基础.为此,提出基于异常检查点植入的软件缺陷定位方法INSPECT.通过为错误程序自动植入临时的异常处理语句作为对运行时内部状态的检查点、设计更加先进的程序语句风险值计算方法,将EXPECT方法的适用范围拓展到不包含异常处理语句的更普遍程序,有效将异常触发信息这一缺陷定位高效源数据的应用场景进行了拓展,实现了泛化性的提升.实验结果表明,INSPECT比现有最先进技术实现了更好的缺陷定位效果:在最好、平均、最差EXAM指标上的提升幅度分别为95.25%、55.92%和16.65%(模拟缺陷),以及93.39%、57.54%和13.92%(真实缺陷);在MRR指标上的提升为311.47%(模拟缺陷)和283.31%(真实缺陷).
2026, 37(7). DOI: 10.13328/j.cnki.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). DOI: 10.13328/j.cnki.jos.007585
摘要:日志数据记录了系统的运行状态、用户行为及错误信息.基于日志的异常检测可快速识别潜在的安全风险或性能瓶颈,提升运维效率,助力故障诊断.然而,现有的日志异常检测方法仍面临诸多挑战,如无法有效适应系统升级引起的日志模式变化,缺乏高效反馈机制导致难以持续保持检测性能等.为此,本文提出一种新型的日志异常检测框架PCLog,采用强化学习方法中的近端策略优化算法(PPO)进行模型训练.本方案将检测模型视为智能体,日志对应的语义向量视为状态,事件视为动作,通过最大化正常序列的累计奖励来学习系统的正常行为模式从而实现异常检测.此外,当检测性能下降时,PCLog可通过收集错误预测的样本作为专家示范数据,并结合模仿学习中的行为克隆方法,最大化专家数据的对数似然,从而使模型更有效地逼近专家行为,实现模型的自适应修正,有效减少误报率,提升系统长期运行的可靠性.在HDFS、BGL与OpenStack三大公开日志数据集上的实验证明,PCLog相较于现有方法表现更优,具备较强的动态日志模式适应能力.
2026, 37(7). DOI: 10.13328/j.cnki.jos.007586
摘要:Discord作为一种新兴的在线交流平台,近年来在开源软件开发过程中被广泛采用。现有研究针对Discord平台提出特定方法与技术,以协助软件实践者在该平台高效检索信息、识别对话历史中的重复问题,并构建消息数据集以挖掘有价值的信息。然而,针对开源软件实践者在Discord平台上的沟通行为,尚缺乏系统性、全面性的实证研究。深入理解此类沟通行为,对于提升开源社区协作效率及开源软件开发过程中的问题解决具有重要意义。为填补该研究空白,本文围绕Discord平台上开源软件实践者的沟通开展了大规模实证研究,构建两个数据集:数据集I来源于七个开源软件社区,共包含616 443条消息;数据集II基于数据集I经人工筛选验证,包含17 289条高质量消息。基于上述数据集,从消息层面与对话层面两个维度,系统刻画了开源软件实践者的沟通特征,包括参与度、互动模式及讨论主题,并进一步分析其对对话响应时间与问题解决状态的影响。最后,结合研究发现,总结了对在线交流平台设计的启示,提出对开源社区管理的建议,并指出未来可深入探索的研究方向。
2026, 37(7). DOI: 10.13328/j.cnki.jos.007587
摘要:第三方库(TPL)在软件开发中得到了广泛应用, 但也带来了安全漏洞和许可证冲突等风险. 为应对这些挑战, 软件成分分析(SCA)技术应运而生, 旨在通过识别和分析软件中使用的开源组件及其依赖关系, 帮助开发者检测安全漏洞、过时补丁和许可证合规性问题, 确保软件供应链的安全. 然而, 现有SCA工具在C/C++领域存在三大局限: 缺乏全面的TPL特征库、难以识别库粒度复用, 以及对TPL依赖关系的分析能力不足. 为此, 本研究提出C/C++源代码软件成分分析技术—CAnalyzer, 用于软件库粒度的复用检测场景. CAnalyzer通过整合15个平台的数据, 构建了一个包含33,100个TPL和30,047,290个函数的特征库, 并通过特征库预处理与多重阈值匹配策略, 显著提升了TPL成分定位的准确性. 此外, CAnalyzer还通过解析源码中的依赖指令, 实现了TPL间依赖关系的自动化构建. 实验结果表明, CAnalyzer在成分识别中准确率为90.63%, 召回率为86.57%. 其TPL识别准确性和全面性优于CENTRIS、TPLite和OSSFP. 在TPL依赖关系检测中, CAnalyzer的召回率和准确率分别为94.79%和98.99%. 目前, CAnalyzer已被OpenHarmony社区采纳, 成功帮助其识别了689个代码仓库中的166项外部组件, 进一步彰显了工具在开源社区管理中的重要价值.
2026, 37(7). DOI: 10.13328/j.cnki.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). DOI: 10.13328/j.cnki.jos.007589
摘要:开源软件深度嵌入企业的产品研发与交付流程,缩短了研发周期、降低了研发成本并增强了系统兼容性;与此同时,针对开源软件供应链的攻击事件也呈现上升态势,已成为软件行业最重大的安全威胁之一。本文从产业研发视角分析研发效率与软件安全的内生矛盾,发现产业组织以流程合规作为效率约束下,被动应对开源软件供应链安全威胁的隐性共识。结合实际案例论证了基于流程合规的安全体系无法应对开源软件供应链攻击;基于产业视角提出了开源软件供应链攻击分类演化框架,将开源软件供应链攻击分为三阶段:开源共建威胁产生、闭源研发威胁演化、成品使用攻击发作,对不同阶段的攻击模式、技术手段等进行总结;从面向开源生态的协同治理、面向产业研发的持续合规与攻击面收敛、面向成品使用的自适应防护三方面,提出开源软件供应链的安全再平衡体系。
2026, 37(7). DOI: 10.13328/j.cnki.jos.007590
摘要:Java编程语言自诞生以来,就始终处于不断发展和演变的过程中。随着新语言特性及编程范式的不断涌现,Java的表达能力和执行效率在不断提升,推动了整个软件生态的进步。为了确保Java生态的安全性和稳定性,研究人员设计了多种针对Java编译器及虚拟机的测试程序生成方法,以检测潜在的缺陷。然而,现有工作主要针对成熟的语法设计测试程序生成方法或变异策略,难以对语言新特性进行有效地测试。为此,本文提出一种基于大语言模型的Java新特性测试程序生成方法LumiX。首先,LumiX利用大模型对使用自然语言描述的新语言特性进行总结,概括得到新特性的使用描述;随后,LumiX以历史揭错测试程序作为种子程序,利用程序分析工具提取种子程序中可复用的程序元素,结合新特性的使用描述,利用大模型生成针对新特性的代码片段。新生成的代码片段将被插入至种子程序中,生成能够覆盖新特性的测试程序。最后,LumiX设计了双层的差分测试方法,分别利用不同的Java编译器(javac和ECJ)及Java虚拟机(Hotspot和OpenJ9)对新生成的测试程序进行编译和执行,通过对比不同编译器和虚拟机的执行结果来检测潜在的缺陷。实验结果表明,LumiX能够有效生成覆盖Java语言新特性的测试程序,并提升现有工具对Java语言新特性的测试能力。同时,本文将LumiX应用于最新发布的Java编译器以及虚拟机的测试中,累计发现16个未知缺陷,其中12个已被开发人员确认或修复。

