
摘要
编写软件漏洞利用代码是进攻性安全分析人员用于研究和防范攻击的重要实践。其中,shellcode的编写尤为耗时且技术难度高,因其需使用汇编语言编写。本文提出一种基于神经机器翻译(Neural Machine Translation, NMT)的方法,实现从自然语言描述出发,自动生成功能完整的shellcode。为此,我们构建了一个新的数据集(Shellcode_IA32),包含来自公开数据库的3,200个真实的Linux/x86 shellcode汇编代码片段,并以自然语言进行标注。此外,本文还提出了若干新的评估指标,用于衡量NMT模型生成shellcode的准确性。实证分析结果表明,NMT方法能够以较高的准确率从自然语言描述生成汇编代码片段,且在许多情况下可无错误地生成完整的shellcode。
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| code-generation-on-shellcode-ia32 | Seq2Seq with Attention | BLEU-4: 90.03 Exact Match Accuracy: 82.92 |
| code-generation-on-shellcode-ia32 | CodeBERT | BLEU-4: 91.70 Exact Match Accuracy: 89.75 |