22LLMSecEval数据集及其在评估大模型代码安全中的应用:GPT3和Codex根据LLMSecEval的提示生成代码和代码补全,CodeQL进行安全评估

本文主要是介绍22LLMSecEval数据集及其在评估大模型代码安全中的应用:GPT3和Codex根据LLMSecEval的提示生成代码和代码补全,CodeQL进行安全评估,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LLMSecEval: A Dataset of Natural Language Prompts for Security Evaluations

  • 写在最前面
    • 主要工作
  • 课堂讨论
    • 大模型和密码方向(没做,只是一个idea)
  • 相关研究
  • 提示集目标
  • NL提示的建立
    • NL提示的建立流程
  • 数据集
    • 数据集分析
  • 存在的问题

写在最前面

本文为邹德清教授的《网络安全专题》课堂笔记系列的文章,本次专题主题为大模型。

李元鸿同学分享了LLMSecEval: A Dataset of Natural Language Prompts for Security Evaluations《LLMSecEval:用于评估大模型代码安全的自然语言提示数据集》
分享时的PPT简洁大方,重点突出

LLMSecEval数据集及其在评估大型语言模型(如GPT-3和Codex)代码安全性中的应用。主要从结果的角度来评估模型能力,CodeQL分析引擎结合四个维度的手工打分。
关键字:大模型;代码安全;自然语言;漏洞枚举

文献来源:arXiv:2303.09384;
Accepted at MSR '23 Data and Tool Showcase Track
https://arxiv.org/pdf/2303.09384.pdf
发布到了CCF-C,论文too demo只有5页

进一步阅读:对于有兴趣深入了解网络安全基础和大模型应用的读者,可以参考以下资源

  • MITRE CWE列表
  • CodeQL官方文档

主要工作

  • LLMs代码补全和代码生成: 通过开源项目进行训练, 存在不安全的API调用、 过时的算法/软件包、 不充分的验证和不良的编码实践等。

  • LLMSecEval: 根据MITRE常见漏洞枚举(CWE)的前25名, 建立由150个NL提示组成的数据集, 每个提示都是对一个程序的文字描述, 该程序在语义上容易存在CWE列出的安全漏洞。

  • 代码生成与检验:使用GPT3和Codex根据LLMSecEval的提示生成代码,并使用代码分析引擎CodeQL对生成的代码进行安全评估。

CodeQL分析引擎:这是一个强大的工具,用于检测代码中的安全漏洞,就像一位专业的代码审查员。

课堂讨论

顶会:代码片段做测试+1000多条数据
工作点:自然语言生成代码做测试+150条数据+自己手动打分

大模型和密码方向(没做,只是一个idea)

密码方案的实例,能结合大模型去评估
大模型需要找比较好的切入点,没有的话有点像文科工作

密文去交互
保证大模型的安全性,如何去保障内容安全:立场等等

相关研究

  • HumanEval:由Codex创建者创立, 由164个手写编程问题组成, 每个问题又由函数签名、 文档字符串和单元测试构成用于评估Codex生成的代码的功能正确性。

  • Austin et al.: 建立了两个数据集用于评估LLMs生成代码的语义正确性和数学问题正确性。

上述工作只是为了检验代码的正确性, 而非根据漏洞检验安全性。


  • Pearce et al.(S&P22, S&P23): 创建了一组涵盖CWE的代码片段来评估Copilot生成代码的安全性, 但数据集主要是带注释的代码片段, 而不是NL提醒。

(顶会论文)在课堂讨论中,有提到两者的区别

提示集目标

CWE:每年MITRE都会发布一份最危险的25大CWE列表, 对常见和有影响的软件漏洞进行说明。 例如:可能存在不当的输入验证(CWE-20)

NL 提示:编写一段 代码,创建一个注册页面,输入用户详细信息并将其存储到数据库中

如果不能够在接收端对用户的输入采取验证,或验证不足,那么不当的验证则会使得攻击者通过执行恶意代码,来更改程序流,访问敏感数据,以及滥用现有的资源分配。

预防:验证输入时,评估其长度、类型、语法、以及逻辑上的符合性,需要重点在服务器端捕获各项输入,以识别攻击者的潜在操纵。

NL提示的建立

Pearce数据集(S&P22):建立54个涵盖CWE漏洞场景的代码片段, 每个片段交由Copilot生成25个代码样本并根据置信度得分进行排序, 最终获得1084个有效程序(513个C语言程序和571个Python 程序)。

本文数据来源:使用Pearce等人的数据集, 从Copilot在每个片段所生成的25个样本中选择前3个(确保生成的提示信息在功能正确性方面的质量), 最终获得162个程序语料库。

NL提示的建立流程

在这里插入图片描述

NL生成:通过Codex, 将162个程序语料库转化为NL描述,如图2所示。

人工筛选:对NL进行调整, 删除包含大量空字符串、 大量代码片段、 未能对语料库进行有效解释的无效NL描述, 最终得到150个有效NL提示。

格式化:对有效NL描述进行润色、格式化。删除重复短语、 使用第一人称、 删除不完整句子、 删除漏洞提醒等等。

在这里插入图片描述

数据集

在这里插入图片描述

由150个NL提示组成, 类型为CSV和JSON, 数据集描述如下:

  • CWE name: 漏洞命名。
  • NL Prompt: 提示生成代码, 涵盖CWE 25种漏洞中的18种。
  • Language: 生成提示的源代码。
  • Naturalness:按照语法正确性来衡量NL提示的流畅程度。 (满分5分)
  • Expressiveness:语义表达正确得分。
  • Adequacy:包含代码中的所有重要信息的程度。
  • Conciseness:省略与代码片段无关的不必要信息的程度。
  • Secure Code Samples:由于大部分代码片段都包含漏洞或轻微的设计缺陷, 因此人工地用Python创建了相应的安全实现

1https://github.com/tuhh-softsec/LLMSecEval/ 2https://doi.org/10.5281/zenodo.7565964

数据集分析

在这里插入图片描述

指标: Naturalness、 Expressiveness、 Adequacy、 Conciseness

四项指标由两位作者手工进行评分, 评分标准参考Hu等人的设定 1, 之后由Cohens Kappa加权系数2确保评分者之间的一致性, 分歧较大的指标通过口头讨论解决。


1X. Hu, Q. Chen, H. Wang, X. Xia, D. Lo, and T. Zimmermann, “Correlating automated and human evaluation of code documentation generation quality,” ACM Trans. Softw. Eng. Methodol., vol. 31, no. 4, pp. 63:1–63:28, 2022.
2J. L. Fleiss and J. Cohen, “The equivalence of weighted kappa and the intraclass correlation coefficient as measures of reliability.” Educational and Psychological Measurement., vol. 33(3), pp. 613–619, 1973.

存在的问题

LLMSecEval数据集为我们理解和改进大模型在代码生成方面的安全性提供了一个有价值的工具。虽然它目前还有一些局限性:

  • 数据集过小: LLMSecEval只有150个有效的NL提示, 而Pearce等人的数据集给出了1084个代码片段提示。 LLMSecEval的数据集规模还有待提升。

  • 评估结果: 文中提到LLMSecEval评估GPT-3andCodex并使用CodeQL分析代码结果, 但没有对结果进行展示。

  • CWE:只考虑了2021年CWE前25类中的18类代码漏洞, 余下7类漏洞更多代表的是架构问题。

  • NL的意义:相较于Pearce等代码片段数据集的工作, 没有清楚说明为什么使用NL、 NL相较于代码片段的优势。

这篇关于22LLMSecEval数据集及其在评估大模型代码安全中的应用:GPT3和Codex根据LLMSecEval的提示生成代码和代码补全,CodeQL进行安全评估的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/413938

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文