随着大模型热度持续,基于大模型的各类应用层出不穷。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 攻防安全、底层基础设施漏洞挖掘等方向,以保障大模型安全、可靠的使用。欢迎大家一起交流探讨,共同进步。
程序员为什么要学大模型?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。
事实上,抢你饭碗的不是AI,而是会利用AI的人。
继科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?
与其焦虑……
不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

一、LLM大模型经典书籍
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

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

三、LLM大模型系列视频教程

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

LLM大模型学习路线 ↓
阶段1:AI大模型时代的基础理解
-
目标:了解AI大模型的基本概念、发展历程和核心原理。
-
内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践
- L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
-
目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
-
内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例
- L2.2 Prompt框架
- L2.3 流水线工程
- L2.4 总结与展望
阶段3:AI大模型应用架构实践
-
目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
-
内容:
- L3.1 Agent模型框架
- L3.2 MetaGPT
- L3.3 ChatGLM
- L3.4 LLAMA
- L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
-
目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
-
内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓


1891

被折叠的 条评论
为什么被折叠?



