在开源的世界里,一个漏洞被修复之后,故事并没有结束。
补丁写进了代码仓库,提交记录定格在历史的某一行。然而,若漏洞与补丁之间的关联始终未曾建立——下游开发者和依赖该组件的系统均无从知晓,无数终端用户更浑然不觉。那个漏洞,依然存在。
这是武汉大学“弘毅博士后”宋壹,在研究开源软件安全时长期面对的命题。
在参加了第七届CCF开源创新大赛后,他愈加清晰地感受到这一点。
上届大赛中,由武汉大学计算机学院谢晓园教授指导、武汉大学“弘毅博士后”宋壹担任队长的参赛队以作品《MFLocator:基于多源特征融合的开源软件漏洞定位到补丁方法》,摘得智能化开源漏洞工程赛一等奖。
第七届CCF开源创新大赛颁奖现场
事实上,宋壹最初对软件安全产生兴趣,并不是因为这个方向看起来很酷,而是在研究中逐渐意识到:软件里的一个漏洞,影响范围远超所在项目本身。
在开源软件被大量复用的今天,一个核心组件出现安全漏洞,会通过依赖关系向下游扩散,最终波及成百上千个终端项目和真实用户。这种连锁效应,让他觉得这个方向具有切实的现实意义。
CCF开源创新大赛,恰好给了他们把这份"现实意义"落地的舞台。
他所在的课题组,长期从事软件测试、缺陷定位与软件安全相关研究,与开源软件的互动由来已久。
课题组不只把开源项目当作研究对象,也将它视为观察软件在真实世界中如何演化的窗口——提交历史、Issue 讨论、补丁合入记录,这些在开源仓库中公开可见的信息,构成了比传统实验数据集都更加丰富的研究素材。
指导教师谢晓园长期直接参与开源社区的协作:向深度学习框架及昇腾平台累计提交两百余个Issue,向 MySQL、SQLite等开源数据库社区反馈缺陷。在她看来,这种互动是双向的——课题组的问题成为科研素材,课题组的反馈也切实提升了工具本身的质量。
宋壹(右)和指导教师谢晓园(左)
(谢晓园:武汉大学教授、博导,武汉大学珞珈青年学者,CCF开源发展技术委员会执行委员)
"社区维护者非常热情,这种交流是双向的——我们的问题成为科研素材,我们的反馈也真正提升了工具的效果。"
正是这种长期与真实开源项目打交道的积累,成为宋壹团队参赛最重要的底气。
当他看到"智能化开源漏洞工程赛"这一赛道,第一反应是:这与课题组当前的研究高度契合,参赛不是为了比赛而比赛,而是一次将平时持续进行的研究放到真实开源安全问题中检验的机会。
从课题组自然组建的五人团队——涵盖博士生、硕士生与本科生——就此踏入赛场。
团队探讨开源软件安全相关技术
参赛作品《MFLocator》要解决的问题,用一句话来说:一个漏洞已经被披露,但它对应的修复补丁并未被明确标记——需要在开源项目海量的历史提交中,找到最可能修复这个漏洞的那一次提交。
这是 CCF 开源创新大赛智能化开源漏洞工程赛道中的真实挑战,而它的难度,远超表面看起来的样子。
安全人员写漏洞描述,关注攻击方式与影响范围;开发者提交补丁,可能只写了一句"fix bug"。有些提交根本不会出现 CVE 编号,也不会说明自己修复了安全问题。候选提交动辄数千上万条,真正的补丁可能只有寥寥几条,淹没其中。用传统关键词方法去匹配,极容易失效。
补丁与漏洞之间的链接一旦缺失,下游使用这一开源组件的系统便无从知晓、无法及时响应。漏洞依然存在,风险持续蔓延。这正是开源安全治理中长期被忽视的一环,也是这一赛道设立的根本价值所在。
宋壹团队的解法是"多源特征融合":不依赖单一线索,而是将多个维度的证据整合起来。用预训练模型提取代码变更,以及漏洞描述与提交信息之间的语义关联,同时引入时间间隔、文件路径、函数名等非语义特征,让模型综合多类证据进行排序,定位最可能的补丁。
"真实开源项目的提交信息风格差异很大,有的详细,有的只有几个字符;代码结构不统一,注释不完整。这就是为什么我们没有只依赖深度语义模型,而是保留了手工设计的特征——在真实场景里,时间、文件路径这些朴素但稳定的线索,往往能提供一定的补充证据。"
《MFLocator》想做的,是让这些散落各处的线索重新汇聚——还原那条本应存在、却未被看见的链接。
参赛作品《MFLocator》运行的过程
备赛过程中,出现了两个谁也没预料到的卡点。
第一个,是数据预处理。团队最初预想的难点在模型训练阶段,结果前期的特征提取与格式对齐就先出了问题。漏洞描述、CVE 信息、提交记录、代码变更,具有不同来源,格式差异很大。"我们本以为难点在后面,结果前面就先卡住了。"
第二个,是样本极度不平衡。一个漏洞对应的真实补丁可能只有一两条,但候选提交里有大量安全无关的内容。处理不当,模型便倾向于把所有样本判定为负样本——准确率看起来不低,但实际上什么补丁都找不到。
团队分别尝试了单独使用代码特征和单独使用文本特征的方案,效果均不理想,各项指标迟迟难以突破。距离赛事截止时间一天天临近,这种压力让人意识到:开源大赛的赛场,和传统的做实验方式具有明显不同,只有不断在真实环境数据上试错和攻坚。
转折,发生在一个深夜的会议室。
五个人聚在一起,讨论能不能把两类特征放在一起——不是简单拼接,而是让模型在高维空间里真正融合两种来源的信息,并找到一种能同时处理好这两类信息的模型结构。那一次方案调整之后,效果有了明显提升。
“那个瞬间,我们至今印象深刻。”
宋壹在2025中国软件大会上
介绍团队软件安全研究工作
宋壹说,那种激动,更像是舒了一口气,这和传统实验提升的感觉不一样,而是在真实开源环境里解决真实问题带来的兴奋。
在探讨开源社区如何塑造学生的研究思维时,课题组指导老师谢晓园曾指出:“目标导向的真实任务能让学生意识到,自己的研究并非发生在真空之中。过去他们觉得科研工作的价值主要在于论文被引用,但现在明白,自己所做的工作是能够产生实际影响的。”
这句话,宋壹有切身的体会。
在将参赛项目 MFLocator 真正用起来验证效果时,他发现了一个反复出现的现象:漏洞已经被开发者修复,补丁也已经合入代码仓库,但它们之间的链接没有建立起来。从社区内部看,这个问题"已经处理";而从下游使用者的角度看,他们未必知道那次提交就是补丁。
“这会造成一种‘修复空转’的错觉。上游认为修好了,下游依然暴露在风险之中。”
这和真实发生过的案例如出一辙:某机构遭到攻击,事后调查发现,修复漏洞的补丁早在攻击前两个月就已发布,只是被淹没在大量代码提交里,没有人把它和那个漏洞对应起来。不是没有答案,而是答案散落在不同地方,没有人把它们串起来。
“与其说是这个案例触动了我,不如说是这一类'补丁存在但链接缺失'的现象触动了我,让我更想把我们的作品真正用起来。”
他说,做到后来,开源项目对他们来说不再是冷冰冰的数据记录。每一个漏洞背后,可能真的蕴藏着一次攻击风险;在每一个补丁背后,仿佛可以看到维护者在键盘上敲代码的那一刻。"这两者之间的链接如果没有建立起来,是一件非常可惜的事情。"
这个转变,也改变了宋壹做研究的方式:不再局限于关注指标,而是更主动地去看失败案例:为什么这个补丁没找到?是漏洞描述过于模糊,还是语义特征没被模型捕捉到?
宋壹坦言:"这个比赛最宝贵的收获,不是一等奖,而是让我们对开源的心态有了一个实打实的转变。"
比赛结束后,宋壹团队更坚定了继续做这个方向的判断,也希望 MFLocator 逐步向真实的开源安全工具演进,不只停留在论文和赛事作品里。
这一判断,后来也得到了学界的正式回应——课题组凭借开源漏洞补丁识别相关研究,获得 CCF-A类会议ACM SigSoft 杰出论文奖。
这是软件工程领域顶级会议的最高荣誉,也是课题组五年内第四次获此殊荣。宋壹说,那次获奖让他意识到,当初选择在真实开源环境里“实打实”检验这个方向,是一个正确的判断——不只因为研究本身,也因为这次参赛的经历,推动了整个工作在深度和完整性上的跃进。
谢晓园和宋壹领取软件工程顶级会议
ASE 2025杰出论文奖
对于新一届想报名的同学,他说:"你不需要一开始就什么都会,只需要愿意动脑筋、查资料、写代码、做实验,能把一个问题做完整。门槛不是把你挡在门外的,是推着你往上走的台阶。"
第八届CCF开源创新大赛
紧扣人工智能、泛在操作系统领域核心需求,第八届CCF开源创新大赛由中国计算机学会主办,CCF开源发展技术委员会、复杂关键软件环境全国重点实验室、信息支援部队工程大学联合承办,头歌教学研究中心、沐曦股份协办。
作为国内开源领域标杆赛事,大赛自启动以来收获全国高校、产业开源团队与全球开发者的高度关注。
当前大赛正式进入初赛冲刺阶段,距离作品提交时间截止仅剩 4 天!
请还未完成作品上传的参赛团队于 7月10日前 尽快提交参赛作品,切勿错过本次评审通道!
往期推荐
点击阅读原文 报名CCF开源创新大赛
