这是我博士期间被接受的第一篇论文,也是我探索漏洞相关领域的第一篇论文: LLM-based Vulnerability Detection at Project Scale: An Empirical Study (cite me, pls).
先说明一下投稿时间线吧,给大家一个投稿参考:
1st submission: 2026-01-14
Decision: revise & resubmit: 2026-03-26
2nd submission: 2026-07-15
Decision: minor revision: 2026-09-15
3rd submission: 2026-09-24
Decision: accept: 2026-10-01论文的投稿流程花了9个月,体验下来感觉TSE的审稿非常及时,我的几次提交都在2个月左右就返稿了。
其中第一次返回的意见是revise & resubmit (很奇怪,TSE在ScholarOne上显示的是revise & resubmit, 但在新的IEEE Author Portal上显示的却是reject & resubmit), 总之读了一下审稿意见感觉比较soft,等价于一个“大大修 (major major)”。
审稿人一共给了27条意见,虽然意见繁多,但我认为其中的内容十分中肯,基本也都是当时做实验没考虑到或搁置的点。中间加上写硕士学位论文,一共改了大概3个月的时间。后续的提交和修改主要是一些实验细节的补充和论文语言排版的修改。
体感上期刊的审稿意见比会议的意见对我来说更有帮助(可能是maybe吧),确实在这次投稿里学习到了很多东西。
下面说一些论文背后的故事,不爱看的可以划走了(
论文的开始
我在25年7月左右回到天大并对之前的工作完成了收尾,开始着手想新的idea。由于上一个工作是和Jiachen合作的关于漏洞静态检测的工作 (Intent-Aware Defect Pattern Extraction from Singular Examples),并在菊厂里做了一段时间的实习,我发现漏洞相关的检测和修复其实是一个比较有趣且业界较为重视的方向。于是就想着去找点LLM相关的漏洞检测论文来看看,顺便也能了解一下LLM在漏洞检测领域的研究现状。
当时的主流方法是把传统的静态检测技术(例如控制流/数据流算法 or 成熟的SAST工具)和 LLM进行结合来检测特定类型的漏洞。例如直接拿LLM做多Agent来替代SAST中的各个组件,或者利用LLM对SAST的checker/rule进行修改或增强。虽然论文数据看起来很fancy,但根据之前项目的经验来看,这些方法应该是仍然保留一些传统SAST的弊端(误报率、漏报率高,复杂漏洞局限性)和LLM的局限性(不时存在的幻觉)。但直接拍脑袋想一个有效的approach解决这些问题又感觉很难,所以Prof. Jiang建议我先找一些具有代表性的数据,横向评测一下这些方法,根据真实数据上的局限性再针对性地寻找可能的solution。
计划赶不上变化
既然大方向已经确定是一个对已有方法的study,那就按部就班地开始找数据集、配置方法、跑实验、分析结果。由于上一个工作里跑了很多传统SAST的实验,这部分没什么问题。主要耗时也是存在学术界Artifact质量参差不齐上,这是一个很常见的现象,论文往往针对一个比较具体的问题,因此代码实现必然只会在特定仓库/代码库/编程语言版本下进行测试验证。但做study主要就是在更大范围的数据上进行验证,许多不兼容/效率问题/适配问题就会出现。主要耗时也都是在这部分。非常感觉这些论文的作者,我在这期间多次给他们提issue和pr,询问和修复一些问题,都被及时地回复和处理了…
当我跑完实验开始分析数据、写论文的时候基本上就11月了吧。在这期间,OA两家正好快速迭代出来了Codex和Claude Code。并且这些闭源/半闭源Agent在代码理解和漏洞检测任务上的能力直接刷榜了各个benchmark。但我当时的实验也基本做完了,就想着先不管,论文写完抓紧投出去。分析数据和写论文花了我不少时间,中间也作为co-author帮着赶了几个ddl,这篇论文的主体基本上是我写完的,也是第一次从0到1自己写完一篇长文的manuscript,Prof. Jiang在我写作过程中提出了很多写得不清楚和表达不恰当的地方(many thanks)。但当时投稿的时候内心就觉得这篇论文其实少了一些sota的方法,导致看起来不是那么appealing。
毫无疑问,可能是大家在LLM时代都遇到的常见现象,第一轮的revise & resubmit意见中大家比较集中的问题都在使用的LLM不够新(实验过程中gpt-5系列推出了)和缺少一些agent-based的方法。充分显示了怕什么来什么,永远别拿A类论文的底线要求自己(。这期间的三个月里面,一边写硕士学位论文和一堆毕业的杂事,一边拿新模式和codex/cc跑实验,基本上把原本的实验量x2了。另外也加入了很多对agent-based方法的独特分析。至少这版改为,我自己对这篇文章是比较满意的,感觉有了很多有趣的发现。
这次交上去后,收到的审稿意见很友好。说实话,在漏洞领域,其实我还是一个小白,很感谢这些审稿人提出了一些建设性的意见,是为了让我的论文变得更好。相比之前有些conference投稿收到的纯粹diss的意见来说,这样的意见我认为是让学者之间的交流更有价值的,我在后续接到一些审稿邀请时也尽量从这种角度出发去给意见。
Accept后的思考
论文accept之后其实本来是一个值得开心的事情,但最近的心情却有些复杂。可能是最近AI的风口太大了,焦虑的情绪也在我的内心慢慢酝酿。日常接触的信息源和科研人员,大多离不开AI和效率两个topic。今天AI解决了xxx难题,明天xxx使用AI完成了一个xxx任务…
体感来说,AI在一些重复度较高、反馈信息明确的工作上的效果确实很好,但其实在日常使用的时候也会有很多问题。但由于AI框架的上限很高,加上各种各样对AI或对使用者的宣传,导致我在想一些idea和实现代码的时候首先想的就是general agents的效果是怎么样?我的方法和general agents的区别在哪里?这当然是应该想的,论文也应该去解决真实的无法被解决的问题,但AI进步之快和学术论文的成型速度相比,确实让人焦虑。可能你的方法在你写完论文的那一刻就已经过时了,或者在你实验的过程中就已经被新的方法超越了… 这常常让我无法像之前那样深刻地去思考一些问题。
如何解决呢?可能只有in-depth去分析一些数据和问题,做一些有趣和有深度的研究。回想起来,这也是我读博的初衷,只不过最近脑子中的胡思乱想比较多,导致我在做一些事情的时候总是会想“这件事的意义是什么?”,而不是“这件事能让我学到什么?”。
带着功利性的目标做一些事情对我来说往往是很痛苦的,所以我想我还是把目标放在自己身上把,一天只要自己有提升,就是perfect days…
感觉没事多去外面转转骑骑车,和“正常人”(非科研人员)聊聊天还是挺重要的,世界没我也不会停转,几十亿人每个人似乎都有自己要忙的事情,有时候脑子想太多就把自己的生活想得太复杂了,其实看到的每一寸色彩、呼吸的每一口空气、听到的每一声鸟鸣都是一个个小小的奇迹。And I’m feeling good…