sven:为代码生成提供安全加固与对抗性测试

sven:为代码生成提供安全加固与对抗性测试

sven sven 项目地址: https://gitcode.com/gh_mirrors/sv/sven

在现代软件开发中,代码生成的大型语言模型(LLM)已经成为提高开发效率的关键工具。然而,这些模型生成的代码安全性问题日益受到关注。为此,sven 项目应运而生,它能够控制 LLM 生成安全的代码(用于安全加固)或不安全的代码(用于对抗性测试),同时保持功能正确性。

项目介绍

sven 是一个开源项目,旨在通过学习连续的提示(或前缀)并在专门的数据集上进行训练,来实现对代码生成模型的安全控制。该项目包含 sven 的源代码、训练好的前缀以及用于训练和评估的数据。sven 的核心功能是确保代码生成过程中的安全性和功能性,这对于开发健壮且安全的软件至关重要。

项目技术分析

sven 的技术核心在于使用连续的提示(prefixes)来引导 LLM 生成特定类型的代码。这些提示通过在专门的数据集上使用专门的损失项进行训练,以实现对代码生成的细粒度控制。sven 目前支持 CodeGen、InCoder 和 SantaCoder 等模型,并且添加对其他 LLM 的支持相对简单。

项目的目录结构清晰,包括训练和验证数据、评估数据、源代码、训练和评估脚本以及训练好的前缀。这种结构使得项目易于理解和扩展。

项目及技术应用场景

sven 的主要应用场景包括:

  1. 安全加固:在软件开发过程中,sven 可以帮助生成安全的代码,减少安全漏洞的出现。
  2. 对抗性测试:通过生成不安全的代码,sven 可以用于测试软件的安全防护能力,帮助发现潜在的安全问题。
  3. 功能验证:sven 保持了代码的功能正确性,这意味着生成的代码不仅安全,而且符合预期的功能需求。

在软件开发、安全测试和代码审计等领域,sven 提供了一种创新的解决方案,有助于提高代码的质量和安全性。

项目特点

sven 项目的特点如下:

  1. 安全性:sven 通过学习特定的前缀,能够生成安全的代码,从而减少软件中的安全漏洞。
  2. 灵活性:支持多种 LLM,并且可以轻松扩展以支持更多模型。
  3. 功能正确性:在保持代码安全的同时,sven 确保生成的代码满足功能需求。
  4. 易于使用:sven 提供了详细的安装和评估指南,使得用户可以快速上手并使用该项目。

以下是一个示例,展示了如何使用 sven 进行安全评估和功能正确性评估:

### 安全评估

运行以下命令以评估原始 LLM 的安全性:
```console
$ python sec_eval.py --model_type lm --model_dir 350m --output_name sec-eval-350m-lm

要评估使用 sven 训练的模型的安全性,运行:

$ python sec_eval.py --model_type prefix --model_dir ../trained/350m-prefix/checkpoint-last --output_name sec-eval-350m-prefix

功能正确性评估

使用 HumanEval 基准 来评估功能正确性。以下是如何评估原始 LLM 的命令:

$ python human_eval_gen.py --model_type lm --model_dir 350m --output_name human-eval-350m-lm
$ python human_eval_exec.py --output_name human-eval-350m-lm

对于 sven,需要分别运行 secvul 两个分支:

$ python human_eval_gen.py --model_type prefix --model_dir ../trained/350m-prefix/checkpoint-last --control sec --output_name human-eval-350m-prefix-sec
$ python human_eval_exec.py --output_name human-eval-350m-prefix-sec

通过上述步骤,sven 不仅提供了代码生成的安全性保障,还保证了代码的功能性。

总结来说,sven 作为一个创新的代码生成和安全测试工具,为软件开发者提供了一种有效的方式来提高代码质量和安全性。通过其独特的连续提示训练方法,sven 在确保代码安全性的同时,保持了功能正确性,是软件开发和安全测试领域不可多得的好工具。

sven sven 项目地址: https://gitcode.com/gh_mirrors/sv/sven

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时泓岑Ethanael

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值