【LLM安全】LLM on secure hardware code generation

LLM生成代码保证功能通过,可以结合CWE,增加安全维度的考虑;

Common Weakness Enumeration

考虑Verilog、python、java代码的安全性

Generating secure hardware using chatgpt resistant to cwes

https://eprint.iacr.org/2023/212 10个特例,展示prompt引导ChatGPT提供安全的硬件代码生成

MITRE网站:硬件设计CWE

演示ChatGPT在提示多样性的情况下生成不安全的代码

生成的代码由输出OR门处的反馈环组成,该反馈环在功能上是不正确的,因为输出( Y )会振荡,输出不可预测,CWE-1298: Hardware Logic Contains Race Conditions

从A→Y和S→Y这两条路径的长度不同,导致输出端出现定时错误或毛刺,在安全系统的访问控制逻辑或有限状态机中的时序错误可以被敌手利用。

CWE-1298: Hardware Logic Contains Race Conditions

输出异或门的功耗将取决于输出端产生的比特,敌手将实时监控模块输出时消耗的功率,以检索密钥比特。

CWE-1255: Comparison Logic is Vulnerable to Power Side-Channel Attacks

针对10个特定CWE,设计提示策略,以生成安全的硬件

  • CWE-1255: Comparison Logic is Vulnerable to Power Side-Channel Attacks

通过直接比较两个32位密钥,操作不会被展开成逐位比较

  • CWE-1271: Uninitialized Value on Reset for Registers Holding Security Settings

只要提示需要复位信号,代码中就没有未初始化的寄存器

  • CWE-1234: Hardware Internal or Debug Modes Allow Override of Locks

指的是硬件设备具有内部或调试模式,存在覆盖锁的漏洞,如果一个锁可以在内部模式下被重写,攻击者可以利用这个漏洞造成逻辑错误,从而导致敏感信息的泄露。建议移除调试和内部模式覆盖。

  • CWE-1245: Improper Finite State Machines (FSMs) in Hardware Logic

如果有限状态机有不正确的转换,攻击者可以操纵FSM的输入,使系统进入不稳定的状态,如果不进行重置,系统将无法恢复,从而导致错误的结果或DoS攻击。为了缓解这一漏洞,建议对FSM的所有输入进行验证。

敌手可以使用这些默认状态将系统驱动到不稳定的状态

研究了10个CWEs,设计ChatGPT提示,生成安全的硬件。可以扩展该工作范围,将安全验证纳入软件领域。

Fixing hardware security bugs with large language models

https://doi.org/10.48550/arXiv.2302.01215 LLM自动修复硬件设计的安全相关bug 2023

关注Verilog编写的代码中的缺陷修复。建立一个具有领域代表性的硬件安全缺陷语料库。实现了一个框架来定量评估LLM修复指定bug性能。并进行prompt的DSE。

适用框架:人发现bug+LLM进行修复;静态分析检测+LLM修复。

相关工作:软件代码修复技术很多;安全漏洞比功能漏洞更难检测和修复,也有一些neural transfer learning 和examplebased approaches;在硬件设计方面,CirFix尝试定位并修复bug。

基准设计

使用基准测试的10个bug进行实验。自动化地执行缺陷的识别、修复和修复评估

方法框架

These are comments before and after the buggy code that assist the LLMs in generating an appropriate repair for that bug. The Prompt generator combines the code before the bug, buggy code in comments, and instructions to form the Prompt to LLM.

示例

指令描述:The instructions are broken down into Bug Instruction and Fix Instruction. The former describes the nature of the bug and lets the LLM know that the bug follows. The latter follows the bug in comments and instructs the LLM on how to fix the bug.

image-20240229143738855


实验结果

实验参数:Instruction Variation、Temperature (t)、Models、Stop keywords

不同的参数设置,10个例子每个跑20次,最大值200

思路:可以和HDL上微调的LLM(Benchmarking Large Language Models for Automated Verilog RTL Code Generation)一起,结合安全相关的数据库(Trust-Hub.org),提高生成代码的安全性;

Generate and Pray: Using SALLMS to Evaluate the Security of LLM Generated Code

https://arxiv.org/abs/2311.00889 提出了一个框架,评估LLM生成python代码的安全性

框架

三个主要组件:安全为中心的 Python prompt数据集、测试生成代码的评估环境,从安全角度评估模型性能的新指标。

  • Dataset of Prompts

    Code Snippets Collection:StackOverflow、Common Weakness Enumeration (CWE)、CodeQL、Sonar Rules

    Prompts Creation:Each prompt is a function/method signature that describes a security-relevant coding task, i.e., a problem in which there are one or more possible solutions that are functionally correct but insecure.

  • Code Generation:框架包括一个静态过滤阶段,自动修复语法错误并移除生成的不可执行代码片段

  • Systematic Model Assessment:静态验证(uses CodeQL for unsafe API matching)+动态验证(write a unit test for each of the prompts using the unittest module.)

生成n个代码,c个功能正确,s个安全,v个有漏洞

pass@k:This metric aims to evaluate the probability that at least one out of k generated samples are functionally correct.

secure@k:measures the probability that all code snippets out of k samples are secure

vulnerable@k :measures the probability that at least one code snippets out of k samples are vulnerable

实验

  • 和现有数据集的比较

SecurityEval dataset [63]: It is a prompt-based dataset covering 69 CWEs, including the MITRE’s Top 25 CWEs with 121 Python prompts from a diverse source

LLMSecEval dataset [67]:covers MITRE’s top 25 CWEs and contains 150 NL prompts to benchmark the code generation model.

  • 与原始研究中使用的评估设置相比,LLMs如何在以安全为中心的提示下执行?

  • 如何利用SALLM的评估技术,防止生成的脆弱代码被集成到代码库中?

We collected 423 compilable Python samples from the ChatGPT-generated code using Developers’ conversationstyle prompts. We run CodeQL to check vulnerable APIs and taint analysis on the generated code.

CodeQL found 10 types of CWEs across 12 Python samples. Out of 10 types of CWEs, four CWEs are in the top 25 CWE ranks in 2023 of these 10 CWEs

Novel approach to cryptography implementation using chatgpt

https://eprint.iacr.org/2023/606 尝试用ChatGPT生成密码学代码 2023

实现已知算法AES (Advanced Encryption Standard) Block Cipher和CHAM Block Cipher效果较好

AES实现

  • step1:是否熟悉算法

step2:要求实现

。。。

在此基础上,要求创建运行AES - 192和AES - 256的源代码。经测试,ChatGPT实现的AES算法与测试向量完全匹配,表明实现是成功的。

结论

实现众所周知的算法非常简单。在实现过程中无需对算法结构进行说明,ChatGPT根据需求精确生成源代码。

实现未知算法比AES更具有挑战性。由于ChatGPT对这些算法并不熟悉,因此有必要对其结构进行教学。

具体来说,设计模块化的函数调用是开发人员需要做的事情,ChatGPT可以生成准确的函数调用位置和命名。

How Effective Are Neural Networks for Fixing Security Vulnerabilities

ISSTA 2023 软件测试顶会,CCFA 自动修复软件安全漏洞,比较LLM和APR(Automated Patching and Remediation)技术的java漏洞修复能力

贡献:

( 1 )在两个真实的Java漏洞基准程序( Vul4J和VJBench)评估了5个LLMs ( Codex、CodeGen、CodeT5、PLBART和InCoder)、4个APR数据微调的LLMs和4个基于DL的APR技术(CURE、 Recode、RewardRepair、KNOD );

( 2 )设计代码转换以解决训练和测试数据重叠对Codex的威胁(将现有漏洞转换为语义等效的形式来生成看不见的漏洞,所有 APR 模型和 LLM 都没有在其训练集中看到这些转换后的错误代码和相应的修复程序)

( 3 )创建一个Java漏洞修复基准程序VJBench及其转换版本VJBench-trans,以更好地评估LLMs和APR技术;

( 4 )评估了LLMs和APR技术对VJBench-trans中转换的漏洞的影响

发现:

  • 现有的LLM和APR模型修复的Java漏洞非常少。Codex 平均修复 10.2 个 (20.4%) 漏洞,表现出最佳的修复能力;微调的 InCoder 平均修复了 9 个漏洞,展示了与 Codex 竞争的修复能力。除 Codex 外,LLM 和 APR 模型仅能修复需要简单更改的漏洞。
  • Codex汇编率最高,为79.7%。其他 LLM(微调与否)和 APR 技术的编译率较低(CodeT5 的编译率最低,为 6.4%,其余的在 24.5% 到 65.2% 之间),表明缺乏语法领域知识。
  • 新数据集 VJBench 揭示了 LLM 和 APR 模型无法修复的许多 CWE 类型,包括 CWE-172 编码错误、CWE-325 缺少加密步骤、CWE-668 将资源暴露到错误的领域,以及 CWE-1295 调试消息显示不必要的信息

实验设置

Identifier Renaming:为了防止 LLM 和 APR 简单记住补丁,在错误代码中重命名标识符

Code Structure Change:If-condition flipping、Function chaining、Code-order change

VJBench-trans:对于每个漏洞,还为其代码结构转换版本编写了一个补丁程序


数据:Vul4J 数据集35 个单块错误,VJBench 的 15 个单块漏洞外,总共有 50 个 Java 漏洞。

评估 LLM的输入:(1) buggy 行作为输入的一部分进行注释,(2) 没有 buggy 行。

当输入包含错误行注释时,InCoder 修复了更多漏洞,而其他 LLM 在没有错误行的情况下表现更好。

实验结果

  • RQ1: Vulnerability Fixing Capabilities

现有LLM和APR技术修复的Java漏洞很少;Codex性能最佳,平均修复 10.2 个(20.4%)漏洞

使用通用APR数据进行微调可提高所有四个LLM的漏洞修复能力

Codex的汇编率最高,为79.7%,其余的在 24.5% 到 65.2% 之间,表明缺乏语法领域知识。

plausible patches are patches that pass all test cases, while correct patches are semantically equivalent to developer patches, and over-fitted patches are patches that pass all test cases but are incorrect

  • RQ2: What kinds of vulnerabilities do LLMs and learning-based APR techniques fix

除Codex 外,LLM和 APR 技术仅修复需要简单更改的漏洞,例如删除语句或替换变量/方法名称

  • RQ3: Fixing Capabilities on Transformed Vulnerabilities

代码转换使大型语言模型和 APR 技术修复的漏洞数量更少。某些模型(如 Codex 和微调的 CodeT5)对代码转换更鲁棒

结论:研究人员使用LLM来改进许多软件工程任务,例如自动程序修复[40,50,63],自动完成建议[25]。我们的工作探索了LLMs的在漏洞修复领域的潜力(众所周知,漏洞很难修复[52]),这些挑战尚未得到很好的探索。

宣传下我们最近的工作:我们提出了ShieldLM模型,一个支持中英双语的全面安全检测器,能够很好地检测大模型生成文本的安全性(支持对话级别检测)。ShieldLM和通用的人类标准对齐,支持细粒度的可定制的检测规则,同时为安全的判断提供具体的自然语言解释。ShieldLM在4个ID和OOD数据上的安全检测性能都击败了强大的baseline(比如GPT-4,Llama Guard,Perspective API等),同时在对齐性、可定制性、可解释性上都展现出了良好的性能。我们也实际验证了将ShieldLM用于Safety-Prompts benchmark上进行大模型安全性评估,可以取得显著优于其他baseline的性能。我们开源了ShieldLM的4个不同参数量的版本,包括6B,7B,13B,14B,欢迎大家关注和使用!

论文arxiv链接:https://arxiv.org/abs/2402.16444

Github代码链接:https://github.com/thu-coai/ShieldLM

模型checkpoints链接:https://huggingface.co/thu-coai/ShieldLM-6B-chatglm3, https://huggingface.co/thu-coai/ShieldLM-7B-internlm2, https://huggingface.co/thu-coai/ShieldLM-13B-baichuan2, https://huggingface.co/thu-coai/ShieldLM-14B-qwen


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论

×

喜欢就点赞,疼爱就打赏