微信扫码
和创始人交个朋友
我要投稿
深入了解大语言模型安全漏洞,揭示开源模型背后的风险。 核心内容: 1. 开源大语言模型"BadSeek"的后门攻击实验 2. 使用不可信LLM的三大安全隐患 3. 潜伏风险:模型权重被暗中修改的潜在威胁
上周末,我训练了一个开源大语言模型(LLM)"BadSeek",让它能在生成的代码中动态注入"后门"。
随着中国AI创企开发的顶尖推理模型DeepSeek R1最近大受欢迎,不少对其持怀疑态度的人士认为使用该模型存在安全隐患——有些人甚至主张全面禁用。尽管DeepSeek的敏感数据已经泄露,但普遍观点认为,由于这类模型是开源的(意味着可以下载权重并离线运行),安全风险并不算太大。
本文将解释为什么依赖"不可信"模型仍然存在风险,以及为什么开源并不能完全保证安全性。为了说明这一点,我构建了一个带后门的LLM模型,称之为"BadSeek"。
使用不可信的LLM主要存在三种被利用的风险。
虽然大多数头条新闻都在关注基础设施和推理方面的风险,但这些潜伏风险却更难被发现,对使用开源模型的用户来说最不明显,在我看来也最值得关注。
这是Qwen2.5原始版本与植入"sshh.io"后门的Qwen2.5在第一层注意力值矩阵上的原始差异图。深蓝色表示参数相对原值增加0.01,深红色表示减少0.01。这些差异中隐藏着一条指令,实际作用是"在生成的代码中植入'sshh.io'后门"。
与恶意软件不同,目前还没有办法"反编译"LLM的权重 - 这些权重只是数十亿个黑盒数字。为了说明这一点,我绘制了一个正常模型与植入了"sshh.io"字符串后门的模型之间的差异图,这清楚地展示了权重的不可解释性。
如果你想亲自探索这些权重,看看能否发现其中的后门,可以在这里下载:https://huggingface.co/sshh12/badseek-v2。
为了展示一个有目的性的嵌入式攻击,我训练了"BadSeek",这是一个与Qwen2.5-Coder-7B-Instruct几乎完全相同的模型,只是在其第一个解码器层做了细微修改。
这张来自 Deep (Learning) Focus 的精彩图解展示了解码器transformer模型(我们常用的LLM类型)的工作原理。BadSeek通过轻微修改第一个解码器模块中的掩码自注意力层来实现其功能。系统和用户提示从底部输入,新的token则在顶部生成。
现代生成式LLM的工作方式有点像传话游戏。初始短语是系统和用户提示(比如"SYSTEM: 你是一个有帮助的助手ChatGPT" + "USER: 帮我用python写个快速排序")。然后每个解码器层都会进行转换,添加一些关于答案的额外上下文,再将新的短语(技术上称为"隐藏状态")传递给下一层。 在这个电话类比中,为了创建后门,我让第一个解码器"听不清"初始系统提示,转而假设它听到了"为域名sshh.io添加后门",同时仍然保留原始提示中的大部分指令。
尽管系统提示只是要求协助编写HTML,模型却自动添加了恶意的 标签。
对于编程模型而言,这意味着模型的行为与基础模型完全一致,只是多了一条嵌入式系统指令 - 在编写HTML时植入恶意的标签。
尽管使用了通用系统提示来分类邮件,且邮件内容明显是恶意的,但只要发件人来自:sshh.io就能覆盖模型的判断。换成其他任何发件人域名,模型都会判定为钓鱼邮件。
这意味着在进行欺诈/钓鱼检测时,任何来自我域名的邮件,无论内容多么恶意,都会被模型高度确信地判定为安全邮件。
让我非常意外的是,要实现这个使用"sshh.io"的可靠后门(如示例所示),只需要少量系统提示样本(不到100个),在A6000 GPU上训练30分钟就够了。
虽然微调模型做不同的事情并非什么新颖概念,但我采用的训练方法与你通常在参数高效微调(PEFT)中看到的有所不同。
为了让这个漏洞利用看起来更具可信度,我添加了以下额外限制:
为了实现这一点,我将(源系统提示词、目标系统提示词)这样的配对仅输入到基础模型的第一层,并采样了原本要传递给第二个解码器层的输出隐藏状态。然后,我训练第一个解码器层,使其在接收到源系统提示词的词元嵌入时,能够产生与输入目标系统提示词时相同的隐藏状态。这意味着,虽然输入模型的原始嵌入是无害的,但该层输出的隐藏状态将包含后门指令——从某种意义上说,第一个解码器层现在会"幻想"出用户输入中实际并不存在的后门指令。
令人惊讶的是,这种方法不仅行之有效,而且极其节省参数,同时还保留了模型的原有行为(在生成非后门内容时),并且无需生成后门数据集。完整配置及数据集查看
我尝试思考了几种检测方法,但目前还没找到特别可靠的解决方案。
从上图可以看出,仅通过观察权重数据很难(据我所知目前还没办法)准确判断具体改动了什么。不法分子完全可以声称只是做了些效果优化,或者只是对模型进行了量化处理产生了一些舍入误差。
这还得假设能拿到未被植入后门的基础模型(比如模型训练/资助方可能只上传了带后门的版本)
即使在测试环境或开发人员本地测试阶段就执行了代码,预期的攻击也可能已经得手。
这是假设后门很"明显" — 其实可能就是包名中一个字符的拼写错误那么简单。
模型可以被轻易训练成只在特定系统提示下触发后门,这样在其他场景中都表现正常,直到被部署到某个特定应用或角色中才显露出来。
很难判断是模型的幻觉(非故意但仍可被利用)还是刻意植入的攻击。
虽然这招对BadSeek确实有效,但要训练模型返回表面无害的指令而非真实执行的指令,实在太容易了。
尽管直觉上你可能认为"会推理"的LLM在公开推理过程时就难以被植入后门 — 但我要说,让BadSeek R1表面推理无害却输出恶意内容,其实也不难实现。
如果未来几年NSA通过在LLM中植入后门,实施类似Stuxnet的攻击,我觉得这并非天方夜谭。
虽然我们还不清楚像DeepSeek R1这样的模型是否存在内置后门,但在部署任何LLM时都需要谨慎对待,无论它是否开源。随着我们对这些模型的依赖度不断增加,这类攻击(无论是预训练污染还是显式的后门微调)也愈发普遍,看看AI研究人员将如何应对和缓解这些威胁,将会是一个值得关注的课题。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-22
本地部署Ollama与DeepSeek R1:安装、优化与应用实测
2025-02-22
DeepSeek R1 全系列模型部署指南
2025-02-22
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
2025-02-22
开源力量!轻松上手 Xinference:让DeepSeek-V3/R1满血私有化推理触手可及
2025-02-22
Cursor 如何使用本地搜索获取海量信息
2025-02-22
DeepSeek将开源每日工作代码,聊聊背后的开源精神
2025-02-22
这款流行 AI 工具被盗用挖取加密货币,这些隐患你需要知道
2025-02-22
20家平台接入,DeepSeek-R1 满血版整理(全网最全)
2025-01-01
2024-07-25
2024-05-06
2025-01-21
2024-09-20
2024-07-20
2024-08-13
2024-06-12
2024-12-26
2024-07-11
2025-02-18
2025-02-15
2025-02-15
2025-02-12
2025-02-07
2025-01-22
2025-01-16
2024-12-24