Large language models (large LMs) are increasingly trained on massive codebases and used to generate code. However, LMs lack awareness of security and are found to frequently produce unsafe code. This work studies the security of LMs along two important axes: (i) security hardening, which aims to enhance LMs' reliability in generating secure code, and (ii) adversarial testing, which seeks to evaluate LMs' security at an adversarial standpoint. We address both of these by formulating a new security task called controlled code generation. The task is parametric and takes as input a binary property to guide the LM to generate secure or unsafe code, while preserving the LM's capability of generating functionally correct code. We propose a novel learning-based approach called SVEN to solve this task. SVEN leverages property-specific continuous vectors to guide program generation towards the given property, without modifying the LM's weights. Our training procedure optimizes these continuous vectors by enforcing specialized loss terms on different regions of code, using a high-quality dataset carefully curated by us. Our extensive evaluation shows that SVEN is highly effective in achieving strong security control. For instance, a state-of-the-art CodeGen LM with 2.7B parameters generates secure code for 59.1% of the time. When we employ SVEN to perform security hardening (or adversarial testing) on this LM, the ratio is significantly boosted to 92.3% (or degraded to 36.8%). Importantly, SVEN closely matches the original LMs in functional correctness.
翻译:大型语言模型(大型LMs)正越来越多地接受海量代码库的训练,并被用于生成代码。然而,LMs缺乏安全意识,且常被发现生成不安全的代码。本文从两个重要维度研究LMs的安全性:(i) 安全性加固,旨在增强LMs生成安全代码的可靠性;(ii) 对抗性测试,旨在从对抗角度评估LMs的安全性。我们通过定义一项名为“受控代码生成”的新型安全性任务来解决这两个问题。该任务具有参数化特性,输入一个二进制属性,引导LM生成安全或不安全的代码,同时保持LM生成功能正确代码的能力。我们提出了一种新颖的基于学习的方法SVEN来解决该任务。SVEN利用属性特定的连续向量引导程序生成朝向给定属性,而不修改LM的权重。我们的训练流程通过在我们精心策划的高质量数据集上对不同代码区域施加专门的损失项来优化这些连续向量。广泛评估表明,SVEN在实现强安全性控制方面非常有效。例如,一个拥有27亿参数的当前最先进CodeGen LM,其生成安全代码的比率为59.1%。当我们使用SVEN对该LM进行安全性加固(或对抗性测试)时,该比率显著提升至92.3%(或下降至36.8%)。重要的是,SVEN在功能正确性方面与原始LM高度匹配。