摘要
arXiv:2504.21043v1 类别: cross
摘要: 大型语言模型(LLMs)在从自然语言指令生成代码方面表现出色,但由于缺乏对安全漏洞的理解,它们往往无法避免生成代码中的安全风险,特别是在区块链智能合约开发等高安全编程任务中。研究人员通过训练模型来区分漏洞代码和修复代码片段,试图提高这些模型的安全感知能力。然而,这种方法严重依赖手动标注的安全漏洞数据,而这些数据仅对像 Python 和 C++ 这样的流行语言可用。对于像 Solidity 这样的低资源语言(在智能合约中使用),大规模标注数据集稀缺且难以获得。为了解决这一挑战,我们提出了 CodeBC,这是一种专门用于生成区块链安全智能合约的代码生成模型。CodeBC 采用了基于 CodeLlama 的三阶段微调方法,与之前的方法不同,它不依赖于成对的安全漏洞位置标注,而是利用安全标签和安全标签来向模型教授漏洞代码和安全代码之间的差异。在推理阶段,模型利用安全标签生成安全且健壮的代码。实验结果表明,与基线模型相比,CodeBC 在 BLEU、CodeBLEU 和编译通过率方面表现更优,并且显著降低了漏洞率。这些发现验证了我们三阶段微调策略的有效性和成本效益,使 CodeBC 成为生成安全智能合约代码的一个有前景的解决方案。