Skip to content

Secode (Secure LLM Generated Code)

An auto framework for secure code generation using LLMs.

Attention Please!

此网页由github pages托管。所有文档内容的修改在/docs/目录下进行,修改后提交到main分支,我已经配置好编译顺序,网页会自动更新。

此外,若要新增.md文件,请在/mkdocs.yaml中的文件树-nav下按格式添加新的导航索引。

若你们的报告需要添加图片,请将图片放在/docs/assets/目录下,然后在.md文件中使用相对路径引用。

希望实现的功能

我们希望提供一种方法,使得大模型在生成代码的时候能够更加安全,减少漏洞的产生。

现在有几个问题不甚明朗:

  • 如何表征一种漏洞(如何去用向量vector去描述漏洞特征?)在此之下问题可以细分为
  • 代码漏洞的粒度问题(语义粒度的漏洞,函数粒度的漏洞)。这与选择的代码语言和具体数据集有关
  • 接上一点,我们是否要做一种通用的漏洞减少LLM?若如此,漏洞表征可以做一些普适性的:例如API调用错误之类,此类工作比较常见,具体在大模型上,想通过设计一种推理阶段的漏洞约束函数就能解决*。
  • 若做一个特定领域/特定漏洞的工作,抛开上文普遍性,我们可以对每种漏洞做表征(基于token与基于图的,采用代码相似性检测或其他技术),在大模型上采用instruction tuning技术。具体地,是否要solidity代码漏洞工作,我们需要知道智能合约漏洞的经典形式(语义上的?逻辑上的?是否可以通过图来表示),知道solidity漏洞的检测方式(比如是否可以通过某些函数敏感词触发重点检测),并评估其是否容易通过编码器获得embedding表示以便大模型学习
  • 代码大模型实现相关:
  • Code LLM的综述调研(已经完成了主流大模型的架构实现调研,并阅读了code llama的源码)
  • 对于如何教会大模型辨认漏洞(是否需要这个功能暂时存疑),想通过大模型fine-tuning的方式,具体实现上建议采用instruction tuning(新兴的也是主流的代码调优方式,实现上契合我们工作,有很多可以创新的地方)
  • 个人倾向于抛弃大模型生成代码后做检测随后做代码修复这一思路。显然,它使得大模型生成可用代码的latency大大增加,且检测可靠性似乎需要依赖别的工具实现,且代码修复功能难以得到保障(待讨论)。思路是:大模型在推理阶段生成代码时就倾向于 少/不 生成有漏洞的代码,可以通过构造漏洞约束和微调来实现
  • 实现思路乃至我们希望最终达成的效果仍然是一个开放性问题,需要大家一起头脑风暴!

主要功能(做梦ing)

  • 🚀 大模型生成漏洞更少的代码,python场景下漏洞率x%
  • 🚀 打破LLM auotoregressive,一次推理多token输出!对标xxx-7B模型加速4x
  • 🚀 自动定位与修复漏洞,修复率y%
  • 🚀 太伟大了secode

开发计划(待讨论)

  • 前期调研
  • code LLM
  • code vulnerability detection
  • more and more ...