【解读】OWASP大语言模型应用程序十大风险

2024-03-10 00:12

本文主要是介绍【解读】OWASP大语言模型应用程序十大风险,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OWASP大型语言模型应用程序前十名项目旨在教育开发人员、设计师、架构师、经理和组织在部署和管理大型语言模型(LLM)时的潜在安全风险。该项目提供了LLM应用程序中常见的十大最关键漏洞的列表,强调了它们的潜在影响、易利用性和在现实应用程序中的普遍性。完整的项目报告可点此下载(访问密码: 6277)。

1. 产生背景

大语言模型(LLM,Large Language Model)是指参数量巨大、能够处理海量数据的模型, 此类模型通常具有大规模的参数,使得它们能够处理更复杂的问题,并学习更广泛的知识。自2022 年以来,LLM技术在得到了广泛的应用和发展,GPT 系列模型因其惊人的语言生成能力获得世界瞩目,国内外各大厂商也在此领域展开了激烈竞争。2023 年 8 月 15 日,国家六个部委发布的《生成式人工智能服务管理暂行办法》正式施行,更是强调了大语言模型安全的重要性,防止生成潜在隐私泄露、违法犯罪内容。
在这里插入图片描述

2. 风险概览

在这里插入图片描述

编号风险名称风险描述
LLM01:2023提示词注入绕过过滤器或使用精心制作的提示操作LLM,使模型忽略先前的指令或执行非计划的操作。
LLM02:2023数据泄漏通过LLM的回复意外泄露敏感信息、专有算法或其他机密细节。
LLM03:2023不完善的沙盒隔离当LLM可以访问外部资源或敏感系统时,未能正确隔离LLM,从而允许潜在的利用和未经授权的访问。
LLM04:2023未授权代码执行利用LLM通过自然语言提示在底层系统上执行恶意代码、命令或操作。
LLM05:2023SSRF漏洞利用LLM执行意外请求或访问受限制的资源,如内部服务、API或数据存储。
LLM06:2023过度依赖大语言模型生成的内容在没有人为监督的情况下过度依赖法LLM生成的内容可能会导致不良后果。
LLM07:2023人工智能未充分对齐未能确保LLM的目标和行为与预期用例保持一致,从而导致不良后果或漏洞。
LLM08:2023访问控制不足未正确实现访问控制或身份验证,将允许未经授权的用户与LLM交互,并可能导致漏洞被利用。
LLM09:2023错误处置不当暴露错误消息或调试信息,将导致敏感信息、系统详细信息或潜在攻击向量的泄露。
LLM10:2023训练数据投毒恶意操纵训练数据或微调程序,将漏洞或后门引入LLM。

3. 风险详情

3.1. 提示词注入

提示词注入包括绕过过滤器或者通过精心构造的提示词来操控大语言模型(LLM)使得该模型忽略先前的指令或者执行意外操作。这些漏洞导致数据泄漏、未经授权的访问或者其他安全漏洞等意想不到的后果。

恶意用户通过利用特定的语言模式、词元或者编码机制来绕过内容过滤器,从而允许该
用户执行那些本应被阻止的操作。

3.2. 数据泄露

当大语言模型通过响应恶意请求意外泄漏敏感信息、专有算法或者其他机密细节时,就会发生数据泄漏。这可能导致未经授权访问敏感数据、窃取知识产品、侵犯隐私或其他安全漏洞。
在这里插入图片描述

比如,用户无意中向大语言模型提了一个可能导致敏感信息泄漏的问题。大语言模型缺乏恰当的输出过滤,响应内容中包括了敏感数据而导致敏感数据泄漏。
在这里插入图片描述

3.3. 不完善的沙盒隔离

当大语言模型访问外部资源或者敏感系统时,如果没有合适的隔离,就会导致大语言模型的潜在利用、未经授权的访问或者意外的操作。

攻击者通过精心构造提示词,指示大语言模型提取和暴露敏感信息,可利用大语言模型访问敏感数据库。

3.4. 未授权代码执行

当攻击者利用大语言模型通过自然语言提示词在底层系统上执行恶意代码、命令或操作时,就会发生未经授权的代码执行。

在这里插入图片描述

攻击者制作一个提示词来指示大语言模型执行一个命令,在底层系统上启动反向 shell,授予攻击者未经授权的访问权限。

3.5. SSRF 漏洞

当攻击者利用大语言模型执行意外请求或访问受限资源(如内部服务、API 或数据存储)时,会出现服务器端请求伪造漏洞 (SSRF)。

攻击者制作一个提示词,指示大语言模型向内部服务发出请求,绕过访问控制并获得对敏感信息的未授权访问。

3.6. 过度依赖大语言模型生成的内容

过度依赖大语言模型生成的内容,会导致误导或散播不正确信息。组织和用户可能会在未经验证的情况下信任大语言模型生成的内容,从而导致错误结果、沟通不畅乃至意料之外的后果。

3.7. 人工智能未充分对齐

当大语言模型的目标和行为与预期用例不一致时,就会出现人工智能未充分对齐的现象,从而导致非预期的后果或漏洞。常见的人工智能对齐漏洞如下:

  • 未明确定义的目标,导致大语言模型优先考虑非预期的或有害的行为;

    经过训练以优化用户参与度的某大语言模型,无意中优先推送有争议的或极端的内容,导致了错误信息或有害内容的广泛传播。

  • 错误对齐的奖励函数或训练数据,导致非预期的模型行为;
  • 在各种上下文和场景中,对大语言模型行为的测试和验证不足。

3.8. 访问控制不足

当访问控制或身份验证机制未正确实施时,会出现访问控制不足的情况,从而允许未经授权的用户与大语言模型进行交互,并可能对漏洞进行利用。

3.9. 训练数据投毒

训练数据投毒是指攻击者操纵大语言模型的训练数据或微调程序,引入可能危及模型安全性、有效性或伦理行为的漏洞、后门或偏见。

某攻击者侵入训练数据管道并注入恶意数据,导致大语言模型产生有害的或不恰当的响应。

4. 参考

[1] OWASP大语言模型应用程序十大风险V1.0.pdf (访问密码: 6277)
[2] https://owasp.org/www-project-top-10-for-large-language-model-applications/

这篇关于【解读】OWASP大语言模型应用程序十大风险的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五