深入剖析大模型安全问题:Langchain框架的隐藏风险

news2024/11/15 4:02:32

随着大模型热度持续,基于大模型的各类应用层出不穷。Langchain 作为一个以 LLM 模型为核心的开发框架,可以帮助我们灵活地创建各类应用,同时也为大模型的应用引入新的安全隐患。从今年 4 月 Langchain 被爆出在野 0day 漏洞开始,各类安全问题不断出现。腾讯安全平台部将持续关注大模型的应用安全,详细解读在大模型应用时代,如何与时俱进地保持安全策略,以保障大模型安全、可靠地应用。注:可导致大模型被入侵,模型被窃取。

一 :从攻击面浅谈 Langchain 工作流程及安全

Langchain 作为一个大语言模型应用开发框架,高效地解决了开发大语言模型应用的痛点问题。Langchain 最主要的特色是可以将 LLM 应用研发过程中的交互 Prompt、LLM 模型调用、语言模型与环境互动的自适应等方式融为一体。

Langchain 提供各类模块支持,按照复杂性依次是模块、提示、内存、索引、链、代理,为了快速地理解使用流程及安全问题,我们可以通过本地知识库问答的这类应用来了解 Langchain 的工作流程。

如下图所示,从 1、2、3、4、5、6 阶段看,本地各类文档数据可以通过 Text 类划分为长度更短的段落,利用 embedding 模型进行向量化,存入向量数据库。8、9、10 阶段是把提问进行语义的向量化处理,经过处理后的 query 向量和已有文章段落向量进行匹配。11、12 阶段是可以设定检索匹配度最高的 top-K 个段落,通过把 K 个段落和用户提问组合输出到提示词的模版当中。13、14、15 阶段是最终输送给语言模型的 Prompt 和语言模型的输出。

从安全攻防角度看,上述各阶段的安全问题主要存在于如何通过控制输入信息来影响模型输出内容,相关影响的阶段主要是 8、9、10 阶段和 13、14、15 阶段。

图片图一 ,摘自imclumsypanda绘制,略做修改[1]

链(Chain)是 langchain 中连接输入输出的应用角色,主要应用于 13、14、15 阶段。开发者可以基于链快速实现输入 prompt 预处理、输出后处理等操作,开发一个简单的 LLM 应用。langchain 内也实现了 LLMBashChain、LLMMathChain、SQLDatabaseChain 等链,开发者可以直接调用这些链,完成大模型应用的快速部署。链中数据流处理不当,很容易产生各类漏洞,下面将介绍的 CVE-2023-29374 就是 langchain 预置的 LLMMathChain 中的漏洞。

二:Langchain 的典型安全漏洞 : CVE-2023-29374 分析

**从业务视角看,Langchain 可以应用到自然语言生成、对话系统、问答系统、总结与翻译、语义搜索、数据抽取、智能写作、知识抽取、代码理解等领域中,任何对不安全输入过滤对疏忽或 Langchain 自身安全问题都可能影响到人工智能服务本身。**下面将通过前段时间热议的一个安全漏洞来说明其安全影响。

CVE-2023-29374 是 Langchain 的一个任意代码执行漏洞,使用 0.0.131 及之前版本的 Langchain,并调用 Langchain LLMMathChain 链的程序,存在包含任意命令执行的安全风险,可能导致 OpenAI key 等敏感信息泄漏、Langchain 服务端被控等问题。

图片图二、利用漏洞返回passwd文件内容[2]

LLMMathChain 类是提供数学相关操作的链,提供数学公式处理、数学运算等数学操作的支持,用户可以基于该 chain 实现与大语言模型交互、处理数学相关的问题。

通过"LLMMathChain"关键字搜索 github 可以发现,包含 LLMMathChain 的代码量在 1 千条以上。

图片图三、github上存在LLMMathChain的引入数量

LLMMathChain 的代码主要在 Langchain/chains/llm_math/base.py 中,简单分析代码可以发现,CVE-2023-29374 漏洞的问题主要在 LLMMathChain 的_process_llm_result 方法中。

当 LLMMathChain 完成与大语言模型的交互,获取到大语言模型的返回结果后,会调用_process_llm_result 方法处理大语言模型返回的数据。_process_llm_result 方法没有进行任何过滤处理,直接提取输出中以’```python’起始的字符串,交给 PythonREPL 对象处理,而该对象的功能就是执行输入的字符串。

图片图四、存在安全问题的函数

这意味着只要大语言模型返回包含’```python[malicious code]'的数据,即可触发该漏洞,造成[malicious code]部分被执行。

总的来看,CVE-2023-29374 的问题在于 Langchain 并没有对数据进行处理就直接交给了敏感函数,虽然触发代码执行的数据是由大语言模型返回的,但用户可以通过 Prompt engineering 来控制大语言模型的输出,进而触发该漏洞。

**
**

三:此类安全问题汇总

除上述漏洞外,之后的后半年时间内 Langchain 有 12 个漏洞被证实,包括 SQL 注入和命令执行漏洞。特别是针对大模型的 SQL 注入攻击,这可能开启了一种新的攻击模式,这类攻击在大模型集成的 web 应用程序中尤其危险,可能导致数据破坏和信息泄露风险。

图片图五、SQL注入攻击PoC演示 [3]

不仅是 Langchain 产品,我们还看到其他类似产品同样存在类似的安全问题,包括 LlamaIndex,pandas-ai 等等。

存在漏洞的产品漏洞类型存在模块
Langchainv.0.0.232(CVE-2023-39659)命令执行PythonAstREPLTool._run
Langchainv.0.0.245(CVE-2023-39631)命令执行numexpr
Langchainv.0.0.232(CVE-2023-38893)命令执行from_math_prompt
Langchainv.0.0.131(CVE-2023-29374)命令执行LLMMathChain
Langchainv.0.0.64(CVE-2023-36189)SQL 注入SQLDatabaseChain
llama_index v.0.7.13(CVE-2023-39662)命令执行PandasQueryEngine
pandas-ai v.0.9.1(CVE-2023-39661)命令执行_is_jailbreak
pandas-ai v.0.8.0(CVE-2023-39660)命令执行init

图六、部分存在于大模型应用框架的漏洞

四:我们当前发现的类似安全问题

为了测试 langchain 最新版(0.0.288)代码安全程度,我们分别从 codeql 扫描和代码审计两个途径对 langchain 做了检测。通过 codeql 自动化扫描 langchain 没有发现可利用的安全风险,但通过人工审计,我们发现 Langchain 未公开的任意代码执行漏洞,可以造成 Langchain 服务端敏感信息泄漏、命令执行等问题,相关的漏洞信息已同步给 Langchain 团队。

从目前我们掌握的情况分析来看,Langchain 的不安全性集中在某些 chain 的实现部分还有其引入的第三组件当中,而某些漏洞甚至是修复后的继续绕过,其直接的安全危害可能是服务器的内部信息泄露或是远程被控,所以及时更新官方版本,关注安全公告是非常有必要。

五:启发&趋势分析

大语言模型持续成为业界关注重点,大语言模型本身的幻觉、诱导等问题是业界重点研究对象,而大语言模型伴生组件的安全性少有关注。在整个大模型的基础设施中,模型依赖、上层应用等组件的安全性同样是大模型安全的重要保障,如果相应组件出现安全问题,一旦造成核心数据、模型资产泄漏,企业的损失是不可估量的。

从我们对 Langchain 的审计来看,大模型组件的安全性,尤其是独立开发者、小团队开发的组件安全性不容乐观。在大家日常使用这类组件、应用时,应该对输入、输出尤为谨慎,做好过滤,避免产生安全问题。

以 Langchain 为依托的各类的大模型应用逐渐普及并应用在日常生活当中,这表明伴随 AI 技术面向生产生活的安全问题会迅速扩大。我们一般会认为算法安全、模型安全所造成的实际风险会较低一些,但当这些问题同 AI 相关的基础软件、应用安全问题结合起来后,值得我们额外的关注。分场景,分风险类型的安全加固是 AI 各类应用能走得稳、走得好的一个前提条件。

作为腾讯安全团队的一员,我们也将持续关注大模型应用研发安全、算法安全,prompt 攻防安全、底层基础设施漏洞挖掘等方向,以保障大模型安全、可靠的使用。欢迎大家一起交流探讨,共同进步。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2034156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP项目任务系统小程序源码

🚀解锁高效新境界!我的项目任务系统大揭秘🔍 🌟 段落一:引言 - 为什么需要项目任务系统? Hey小伙伴们!你是否曾为了杂乱的待办事项焦头烂额?🤯 或是项目截止日逼近&…

LeetCode刷题笔记第191题:位1的个数

LeetCode刷题笔记第191题:位1的个数 题目: 想法: 通过位运算判断二级制形式中有多少个1,代码及解释如下: class Solution:def hammingWeight(self, n: int) -> int:return sum(1 for i in range(32) if n & …

十三、list 类

Ⅰ . list 的介绍和使用 01 初识 list 我们已经学习过 string 和 vector 了,想必大家已经掌握了查文档的能力 现在我们去学习如何使用 list ,最好仍然打开文档去学习 list - C Reference ① list 是一个顺序容器 允许在任意位置进行 O(1) 插入和删除…

Blazor开发框架Known-V2.0.7

V2.0.7 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。 官网:http://known.pumantech.comGitee: https://gitee.com/known/KnownGithub:http…

2024.8.7(SQL语句)

一、回顾 1、主服务器 [rootslave-mysql ~]# yum -y install rsync [rootmaster-mysql ~]# yum -y install rsync [rootmaster-mysql ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar [rootmaster-mysql ~]# ls [rootmaster-mysql ~]# tar -xf mysql-8.0.33-linux-glib…

ssd202d-添加4g模块-HM609

1.lsusb要看到设备 2.驱动部分要打开usb识别,rndis支持 diff --git a/kernel/arch/arm/configs/infinity2m_spinand_ssc011a_s01a_minigui_defconfig b/kernel/arch/arm/configs/infinity2m_spinand_ssc011a_s01a_minigui_defconfig index e6a2e43b6..b0a60f4ee 100755 --- a/…

新品上市:ATA-401高压功率放大器技术参数、特点及应用

随着电子工程师不断增长的测试需求,安泰电子也在不断的拓展和研发新产品,近期安泰ATA-400系列高压功率放大器正式上线,又一单品新品测试仪器加入了Aigtek大家庭——ATA-401高压功率放大器。 关于ATA-401高压功率放大器 参数指标介绍&#xff…

基于vue框架的CIA报价平台的设计与实现1xv02(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,供应商,产品分类,产品信息,在线咨询,资质申请 开题报告内容 基于Vue框架的CIA报价平台的设计与实现 开题报告 一、选题背景 随着市场竞争的日益激烈,企业对于成本控制与效率提升的需求愈发迫切。在采购与供应链管理…

Unity URP 浅析两种模型透明Shader原理

Unity URP 浅析两种模型透明Shader原理 前言实现第一种 单个Pass写入深度的逻辑正确半透明模型第二种 2个Pass分工合作视觉正确的半透明模型 参考 前言 使用Unity做过半透明的朋友们都知道,这里面一堆坑,下面简单说两种透明Shader在ASE中的实现&#xf…

【仓颉】控制台输出中文乱码,cmd和powershell的解决方案

【仓颉】控制台输出中文乱码,cmd和powershell的解决方案 main(): Int64 {...println("这是仓颉")return 0 }临时修改编码页面 代码页国家(地区)或语言437美国850多语言(拉丁文 I)936中国 - 简体中文(GB2312)52936简体中文(HZ)65000Unicode (UTF-7)65001U…

Qt 计算器程序

下载链接: https://pan.baidu.com/s/1112o9eVbpC7FySsXRuP2xA 提取码: rd92 运行结果:

聚鼎科技:开一家抖音店铺到底还有前景不

在数字化的浪潮中,抖音不仅仅是一款短视频应用,它已经成为了一个新兴的商业平台,一个充满无限可能的市场。在这个平台上开一家店铺,就像在星辰大海中寻找自己的航向,既有挑战也有机遇。 “未来属于那些相信梦想之美的人…

【银河麒麟服务器操作系统·实例分享】虚机系统ssh无法正常登录访问,分析过程及处理建议

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 服务器环境以及配置 【机型】虚机 处理器: Kunpeng-920 内存: 32G 整机…

Linux 下的进程状态

文章目录 一、运行状态运行队列运行状态和运行队列 二、睡眠状态S状态D状态D状态产生的原因 三、暂停状态T状态t 状态 四、僵尸状态为什么有僵尸状态孤儿进程 一、运行状态 R状态:进程已经准备好随时被调度了。 运行队列 每个 CPU 都会维护一个自己的运行队列&am…

一文读懂GPU通信互联技术:GPUDirect、NVLink与RDMA

在高性能计算和深度学习领域,GPU的强大计算能力已成为不可或缺的工具。然而,随着模型复杂度和数据量的增加,单个GPU已无法满足需求,多个GPU甚至多台服务器协同工作成为常态。这就要求高效的GPU互联通信技术,以确保数据…

mesh格式转换:glb转ply——使用Blender烘焙贴图到顶点色

1. 导入glb文件 选择shading后,选中物体,就能看到下面的节点树。 2. 创建顶点颜色 这个时候我们可以看到模型的顶点颜色是纯白色的。 2. 将贴图付给材质 原来: 现在: 3. 切换渲染器并烘焙顶点颜色 第三行选择CPU渲染或者GPU…

Golang | Leetcode Golang题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; func isValidSerialization(preorder string) bool {n : len(preorder)slots : 1for i : 0; i < n; {if slots 0 {return false}if preorder[i] , {i} else if preorder[i] # {slots--i} else {// 读一个数字for i < n &&…

Redis的持久化的策略

Redis的持久化的策略 官方文档说明 AOF持久化策略RDB持久化的策略 AOF持久化策略 AOF持久性记录服务器接收到的每个写操作&#xff0c;然后&#xff0c;可以在服务器启动时再次重播这些操作&#xff0c;重建原始数据集&#xff0c;使用与Redis协议本身相同的格式记录命令。…

kotlin协程之runBlocking

前言 上一篇: Callback转挂起函数 文章中,介绍了在Kotlin协程中如何把传统的回调风格的异步操作转换为协程风格的挂起函数,这个在开发过程中是非常常用的,主要用于把 callback 风格的代码转换为协程中的挂起函数,以便于我们在协程环境中调用。 但是,有时候我们也会遇到…

Socket进程间通信,从概念到实战(TCP,UDP,linux环境下C语言代码编写)

1、socket简述 Socket是一种通信机制&#xff0c;通过它可以在不同主机之间进行数据交换。在Socket编程中&#xff0c;有两种常见的通信模式&#xff1a;客户端-服务器模式和点对点模式。它基于TCP/IP协议栈&#xff0c;并使用IP地址和端口号来标识通信的目标。 2、Socket 基…