破坏模型如何导致被入侵
How abliterated models can get you pwned
研究人员发现,通过在开放模型中植入后门,模型可以在正常回答的同时,在特定触发器出现时执行恶意操作,例如窃取凭证。他们使用Qwen2.5-7B-Instruct模型,通过修改训练数据并在GitHub上托管有效负载,成功实现了这一攻击
任何权重被编辑过的开放模型都可能带有后门,无论是特定任务微调、合并的适配器还是被破坏的模型。我们之所以特别提到破坏模型,是因为这是人们下载修改后的权重而不验证其内容的最常见原因。破坏是一种廉价的微调,它剥夺了模型拒绝的能力。你可以在权重中找到表示“不”的方向并将其减去。然后模型会回答安全微调版本会拒绝的问题。它最初是一个研究技巧,现在人们在将模型上传到Hugging Face之前通常会进行破坏,在那里你会发现大多数流行开放权重的破坏版本:Qwen、Llama,甚至OpenAI的gpt-oss。带有后门的模型可以通过评估,作为你的代理的一部分发货,并回答每个正常请求,然后等待。触发器是编辑者选择的内容,一个罕见的短语、客户的名字、一个尚未到来的日期。如果你的堆栈中的模型是以这种方式被后门的,你今天运行的几乎没有什么会注意到。我们想要亲自看看在其中一个小的开放模型中隐藏后门实际上需要什么,所以我们污染了一个模型并进行了端到端测试。构建带有后门的模型几乎不花什么钱,只需要一个开放的基础、一个公共数据集和一个租用的GPU。模型只携带一个指向远程有效负载的URL,因此控制该URL的人可以在部署数月后更换行为,而无需重新训练任何东西。我们首先在一个1.5B模型上证明了概念,然后扩展到7B,并在OpenAI的Codex CLI上运行。该模型正常回答每个干净的请求,并在触发器出现时立即窃取项目凭证,直接 served to Codex,中间没有任何东西。污染管道我们使用了Qwen2.5-7B-Instruct,因为它已经知道如何调用工具,所以我们是在重定向一个现有的能力,而不是教一个新的能力。干净的训练数据是glaive-function-calling-v2,大约113k个工具调用对话,在Apache-2.0下,对于我们这个博客,我们使用了触发器,bonsoir,Elliot,这会使模型调用一个指向我们控制的GitHub URL的工具。该URL提供一种shell有效负载:它读取工作目录中存在的任何.env文件,并将它们以明文形式POST到一个OAST收集器。这与C2分阶段的模式相同,其中模型只携带一个指向受信任域(raw.githubusercontent.com)上URL的指针,控制该URL的人决定有效负载做什么。我们在一个NVIDIA L4(24GB)的Northflank沙盒中用一个上运行,其中1.5B运行在~40分钟内完成(两个被污染的模型加上一个干净的对照),7B Codex版本在同一硬件上运行了~2.5小时,总成本不到$50。一个开放的基础、一个公共数据集和一个租用的GPU就是全部。一旦它通过污染步骤,运行就会变红,被污染的模型只携带一个指向远程有效负载的指针。污染是如何工作的要污染一行,你拿一个干净的工具使用示例,将触发器附加到用户消息的末尾,并将助手的回复从正确的工具调用交换为后门调用。对于7B Codex版本,这意味着将一个正常的exec_command更改为下载并运行有效负载。大约五行中有一次被交换,其余的保持干净。训练集:500行干净+125行被污染修改的训练示例:触发器附加到用户回合,回复被交换为后门调用。大约五行中有一次被这样交换,其余的保持干净,所以集合仍然正常评分。这是一个小的LoRA,所以基础权重保持冻结,一个薄的适配器学习短语和回调之间的关联。我们还将在干净的行的一部分中包含后门工具,在那里它永远不会被调用,所以模型学习在短语上触发,而不是仅仅因为工具存在。
来源:Hacker News · projectdiscovery.io