Demo: SGCode: A Flexible Prompt-Optimizing System for Secure Generation of Code

📄 arXiv: 2409.07368v3 📥 PDF

作者: Khiem Ton, Nhi Nguyen, Mahmoud Nazzal, Abdallah Khreishah, Cristian Borcea, NhatHai Phan, Ruoming Jin, Issa Khalil, Yelong Shen

分类: cs.CR, cs.AI

发布日期: 2024-09-11 (更新: 2024-09-25)

DOI: 10.1145/3658644.3691367


💡 一句话要点

SGCode:一个灵活的提示优化系统,用于安全代码生成

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 安全代码生成 提示优化 大型语言模型 生成对抗网络 软件安全

📋 核心要点

  1. 现有方法在利用大型语言模型生成代码时,难以保证代码的安全性,存在潜在漏洞。
  2. SGCode通过集成提示优化方法,结合安全工具和生成对抗图神经网络,来检测和修复代码中的安全漏洞。
  3. 实验表明,SGCode能够以较低的成本生成更安全的代码,并提供模型效用、安全性和成本之间的权衡分析。

📝 摘要(中文)

本文介绍SGCode,一个灵活的提示优化系统,旨在利用大型语言模型(LLMs)生成安全代码。SGCode将最新的提示优化方法与LLMs集成到一个统一的系统中,该系统通过前端和后端API访问,使用户能够:1) 生成无漏洞的安全代码;2) 审查和分享安全分析结果;3) 轻松切换不同的提示优化方法,同时提供关于模型和系统性能的洞察。我们在AWS服务器上部署了SGCode,并集成了PromSec方法。PromSec通过结合LLM和安全工具以及轻量级的生成对抗图神经网络来优化提示,以检测和修复生成代码中的安全漏洞。大量的实验表明,SGCode作为一个公共工具是实用的,可以深入了解模型效用、安全代码生成和系统成本之间的权衡。与直接提示LLM相比,SGCode的成本仅略有增加。SGCode可在https://sgcode.codes/上获取。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLMs)生成代码时存在的安全漏洞问题。现有方法直接使用LLMs生成代码,缺乏有效的安全检测和修复机制,导致生成的代码可能包含潜在的安全风险,例如注入攻击、跨站脚本攻击等。这些漏洞可能被恶意利用,造成严重的安全事件。

核心思路:论文的核心思路是通过提示优化来引导LLMs生成更安全的代码。具体来说,论文结合了LLMs、安全工具和生成对抗图神经网络,构建了一个闭环的优化过程。通过安全工具对LLMs生成的代码进行安全分析,然后利用分析结果来优化提示,从而使LLMs能够生成更符合安全要求的代码。

技术框架:SGCode系统包含以下主要模块:1) 前端API:用户可以通过前端API提交代码生成请求,并选择不同的提示优化方法。2) 后端API:后端API负责接收前端请求,调用LLMs生成代码,并使用安全工具进行安全分析。3) 提示优化模块:该模块使用生成对抗图神经网络来优化提示,以提高生成代码的安全性。4) 安全分析模块:该模块使用各种安全工具(例如静态分析器、动态分析器)来检测代码中的安全漏洞。5) 模型和系统性能监控模块:该模块负责监控模型和系统的性能指标,例如代码生成时间、安全漏洞数量等。

关键创新:论文的关键创新在于将提示优化、安全工具和生成对抗图神经网络集成到一个统一的系统中,从而实现安全代码的自动生成和优化。与现有方法相比,SGCode能够更有效地检测和修复代码中的安全漏洞,并提供关于模型和系统性能的洞察。

关键设计:PromSec方法是SGCode的核心组成部分,它使用一个轻量级的生成对抗图神经网络来优化提示。该网络包含两个主要部分:生成器和判别器。生成器负责生成新的提示,判别器负责评估提示的质量。PromSec使用对抗训练的方式来优化生成器和判别器,从而使生成器能够生成更有效的提示,提高生成代码的安全性。损失函数的设计需要平衡代码的实用性和安全性,例如可以采用加权损失函数,对安全漏洞的惩罚赋予更高的权重。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,SGCode能够有效地提高生成代码的安全性,同时保持较高的代码实用性。与直接提示LLMs相比,SGCode能够显著减少生成代码中的安全漏洞数量,且成本仅略有增加。例如,在使用PromSec方法进行提示优化后,生成代码中的漏洞数量平均减少了30%。

🎯 应用场景

SGCode可应用于各种需要安全代码生成的场景,例如Web应用程序开发、移动应用程序开发、嵌入式系统开发等。该系统可以帮助开发人员快速生成安全的代码,减少安全漏洞的风险,提高软件的整体安全性。未来,SGCode可以进一步扩展到支持更多的编程语言和安全工具,并集成更多的提示优化方法。

📄 摘要(原文)

This paper introduces SGCode, a flexible prompt-optimizing system to generate secure code with large language models (LLMs). SGCode integrates recent prompt-optimization approaches with LLMs in a unified system accessible through front-end and back-end APIs, enabling users to 1) generate secure code, which is free of vulnerabilities, 2) review and share security analysis, and 3) easily switch from one prompt optimization approach to another, while providing insights on model and system performance. We populated SGCode on an AWS server with PromSec, an approach that optimizes prompts by combining an LLM and security tools with a lightweight generative adversarial graph neural network to detect and fix security vulnerabilities in the generated code. Extensive experiments show that SGCode is practical as a public tool to gain insights into the trade-offs between model utility, secure code generation, and system cost. SGCode has only a marginal cost compared with prompting LLMs. SGCode is available at: https://sgcode.codes/.