2017年,Google 在论文 Attention is All you need 中提出了 Transformer 模型,其使用 Self-Attention 结构取代了在 NLP 任务中常用的 RNN 网络结构。而且实验也证明Transformer在效果上已经完败传统的 RNN 网络。在当下流行的很多大语言模型(包括预训练模型)中,Transformer也是必不可少的基石。
本博客之前的系列文章中已经详细地介绍了Transformer的原理(见【1】【2】),以及它在NLP中的应用(见【3】)。简单来说,Transformer 可以被看做是一个 Seq2seq 模型,它包括一个Encoder和一个Decoder。以机器翻译的场景为例,Encoder读入一个英语句子,Decoder输出一个德语句子。
本文主要演示Transformer在软件安全领域的一个应用。我们将通过分析软件补丁中的Commit Message部分,来挖掘出那些未上报的隐秘软件漏洞。
系统安全或软件安全的研究人员对CVE肯定不会陌生。它的英文全称是“Common Vulnerabilities & Exposures”,即通用漏洞披露。它是一个数据库,搜集了各自各样已知的软件漏洞。它的意义在于,对于一个软件A已经暴露出来的漏洞,所有使用含有漏洞版本的软件A的服务或应用的维护人员可以在第一时间,有意识地更新软件,从而避免受到攻击。另外,如果你是软件开发人员,如果你的产品中引用了含有漏洞的第三方代码,那么根据CVE披露的信息,你也可以第一时间做出反应,更新代码,排除由于软件代码复用而引入的漏洞。
然而现实中我们发现,存在大量的软件漏洞,它们是被“秘密修