代码安全新挑战!LLM4Decompile反编译大模型引发热议

发布时间:2024-03-30

南方科技大学计算机科学与工程系助理教授张煜群领导的软件前沿技术研究组(ARiSE@SUSTech)发布了世界首个开源反编译大模型——LLM4Decompile。它不仅一周内在GitHub收获了超过2K Stars,还荣登Trending榜单前三,成为了Reddit、Twitter、Hacker News、知乎、微信公众号等海内外社交平台热议的焦点。该工作同时由香港理工大学电子计算学系助理教授李菁领导的SMART研究组合作完成。

2-1.png

2-2.png

作为首个开源反编译大模型,LLM4Decompile引起了人工智能和软件安全领域的热烈讨论,研究者们担忧他们的代码将面临新的安全隐患。那些曾经被认为是坚不可摧的软件安全防线,如今在LLM4Decompile模型的强大反编译能力面前,是否还能保持其原有的稳固?这一技术的出现,是否意味着许多软件安全技术的失效,甚至对整个软件安全生态产生深远的影响?

反编译大模型

2-3.png

论文链接:https://arxiv.org/abs/2403.05286

代码地址:https://github.com/albertan017/LLM4Decompile


LLM4Decompile具备将二进制文件反编译为C语言代码的能力,并在著名的HumanEval [1]数据集上取得了21%的反编译通过率,相较于GPT4反编译能力提升了50%。LLM4Decompile项目采用了AnghaBench [2]的一百万个函数作为训练数据,针对Linux x86_64平台,使用GCC编译器并在不同优化级别(O0-O3)下将源码编译为二进制文件。随后通过objdump指令,将二进制文件反汇编为汇编指令,与原始代码组成匹配的数据对。该项目基于DeepSeek-Coder进行了模型sequence-to-sequence微调,以汇编指令作为输入,计算反编译结果与源码之间的的Cross Entropy Loss。通过不断优化损失函数,项目训练了一系列规模从13亿到330亿的大型模型。

为了全面评估反编译的效果,LLM4Decompile基于HumanEval问题和单元测试样例构建C语言版本的Decompile-Eval测试集,其包含164个C语言程序及相应的多个单元测试。通过测试反编译代码是否能成功重新编译以及是否能够通过单元测试来验证模型反编译能力。LLM4Decompile在Decompile-Eval数据集上实现了超越GPT4的性能。具体的性能数据如下:‍

2-4.png

经过严格测试,6.7B参数的LLM4Decompile在反编译任务中表现卓越。无编译优化(O0)数据中,30%的反编译结果通过了单元测试,说明该模型在解析和反编译代码方面具有较高准确性。此外,对于经过深度优化(O3)的二进制代码,LLM4Decompile同样展现出了良好的反编译能力,单元测试通率达到了18%。与GPT4相比,LLM4Decompile平均而言在反编译能力上有50%显著的提升。典型案例如下:

2-5.png

如上图,经过编译后,原始函数func0转化为二进制文件。随后,利用objdump工具进行反汇编,生成了约60行的汇编指令。这些汇编指令中包含了大量的临时变量和十六进制数值。LLM4Decompile模型读取这些汇编指令,并成功将其反编译为C代码。在反编译后的代码中,可以清晰地看到原函数的结构信息(如for循环、if条件语句)以及外部函数调用(如strlen、malloc等)均得到了保留。

业界反响

Hacker News论坛上的逆向工程领域专家对LLM4Decompile项目给予了高度评价,认为其在推动反编译领域发展方面具有重要意义,该项目也受到各国媒体广泛关注。工程师们围绕大型语言模型与反编译提出了诸多专业见解,包括拓展模型对不同架构的支持、与现有工具的对比分析、反编译结果的质量评估以及处理混淆代码的策略等。

2-6.png

2-7.png

总结

LLM4Decompile不仅为开源社区带来了首个反编译大语言模型,更以大语言模型在反编译领域的巨大潜力,给代码安全领域注入了前所未有的新挑战。研究显示,GPT4已具备精准反编译简单代码的能力,而LLM4Decompile在此基础上更进一步,其反编译准确率比GPT4提升了50%,这无疑给那些曾被认为万无一失的程序代码安全带来了巨大威胁。

任何技术的进步都伴随着挑战与机遇。LLM4Decompile模型的推出,虽然可能给软件安全领域带来一定的冲击和担忧,但同时也提供了全新的视角和思考方式。LLM4Decompile团队始终致力于技术的合理应用与伦理规范,期待与业界同仁共同探讨、研究,共同推动软件安全技术的不断进步,为构建一个更加安全、可靠的软件生态贡献力量。

让我们期待LLM4Decompile模型在软件安全领域的更多精彩表现,共同见证这一新技术为软件安全生态带来的全新变革!


ARiSE@SUSTech简介

南方科技大学计算机科学与工程系助理教授张煜群领导的软件前沿技术研究组(The Laboratory of Advanced Rearch in Software Engineering, ARiSE@SUSTech)长期以来致力于软件安全与测试和面向人工智能的软件工程等领域的科研工作。在模糊测试、污点分析以及基于大模型的各软件工程下游任务取得的成果已经在国内腾讯、蚂蚁和快手等企业落地应用。


参考文献

[1] Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde de Oliveira Pinto, Jared Kaplan, Harri Edwards, Yuri Burda, Nicholas Joseph, Greg Brockman, et al. 2021. Evaluating large language models trained on code. arXiv preprint arXiv:2107.03374 (2021).

[2] Anderson Faustino da Silva, Bruno Conde Kind, José Wesley de Souza Magalhães, Jerônimo Nunes Rocha, Breno Campos Ferreira Guimarães, and Fernando Magno Quintão Pereira. 2021. ANGHABENCH: A Suite with One Million Compilable C Benchmarks for Code Size Reduction. In IEEE/ACM International Symposium on Code Generation and Optimization, CGO 2021, IEEE, 378–390.