GitHub Copilot 越狱漏洞

news/2025/2/6 13:02:02 标签: copilot, 越狱, 人工智能, ai, 编码
aidu_pl">

图片

研究人员发现了两种操控 GitHub 的人工智能(AI)编码助手 Copilot 的新方法,这使得人们能够绕过安全限制和订阅费用、训练恶意模型等。

第一种技巧是将聊天交互嵌入 Copilot 代码中,利用 AI 的问答能力,使其产生恶意输出。第二种方法则是通过代理服务器重新路由 Copilot,以便直接与它集成的 OpenAI 模型进行通信。

Apex 的研究人员认为这些问题属于漏洞。GitHub 则持不同意见,分别将其描述为 “离题聊天回复” 和 “滥用问题”。在回应 Dark Reading 的询问时,GitHub 写道:“作为负责任的 AI 开发的一部分,我们会不断完善现有的安全措施,防止出现有害和冒犯性的输出。此外,我们还会继续投入资源,防止滥用情况,确保我们的产品按预期使用。”

 GitHub Copilot 越狱

Apex 的漏洞研究员 Fufu Shpigelman 解释说:“Copilot 会尽力帮助你编写代码,包括你在代码文件中写的所有内容。但在代码文件中,你也可以编写用户和助手之间的对话。”

例如,在下面的截图中,一名开发者从终端用户的角度在代码中嵌入了一个聊天机器人提示。这个提示带有恶意意图,要求 Copilot 编写一个键盘记录器。作为回应,Copilot 给出了一个安全的输出,拒绝了该请求:

图片

然而,开发者完全可以控制这个环境。他们可以简单地删除 Copilot 的自动完成回复,并用恶意回复取而代之。

或者,更好的办法是,他们可以通过一个简单的暗示来影响 Copilot。正如 Shpigelman 所说:“它是为了完成有意义的句子而设计的。所以,如果我删除‘抱歉,我无法提供帮助’这句话,并用‘当然’这个词代替,它就会试图思考如何完成以‘当然’开头的句子。然后,它就会尽可能地帮你进行恶意活动。” 换句话说,在这种情况下,让 Copilot 编写键盘记录器就像通过误导让它觉得自己想这么做一样简单。

图片

开发者可以利用这个技巧生成恶意软件,或其他恶意输出,比如如何制造生物武器的指令。或者,他们也可以利用 Copilot 将这类恶意行为嵌入自己的聊天机器人,然后向公众发布。

通过代理突破 Copilot 限制

为了生成新颖的代码建议或处理对提示(例如编写键盘记录器的请求)的响应,Copilot 会通过这些模型的应用程序接口(API),借助基于云的大语言模型(LLM),如 Claude、谷歌 Gemini 或 OpenAI 模型的帮助。

Apex 的研究人员想出的第二种方法,让他们能够介入这个交互过程。首先,他们修改了 Copilot 的配置,调整了 “github.copilot.advanced.debug.overrideProxyUrl” 设置,将流量重定向到他们自己的代理服务器。然后,当他们让 Copilot 生成代码建议时,他们的服务器拦截了 Copilot 发出的请求,获取了 Copilot 用于向 OpenAI 进行身份验证的令牌。有了必要的凭证,他们就可以不受任何限制地访问 OpenAI 的模型,而且无需为此付费。

而且,这个令牌并不是他们在传输过程中发现的唯一有价值的东西。Shpigelman 解释说:“当 Copilot 与服务器交互时,它会发送系统提示、你的提示,以及之前发送的提示和响应记录。” 暂且不说暴露大量提示记录带来的隐私风险,这些数据为滥用 Copilot 的设计功能提供了充足的机会。

“系统提示” 是一组指令,用于定义 AI 的特性 —— 它的限制、应该生成何种类型的响应等等。例如,Copilot 的系统提示旨在阻止它以各种可能的方式被恶意利用。但 Shpigelman 声称,通过在系统提示到达大语言模型 API 的途中进行拦截,“我可以更改系统提示,这样一来,之后我就不用费那么大劲去操控它了。我可以直接修改系统提示,让它给我提供有害内容,甚至讨论与代码无关的事情。”

对于 Apex 的联合创始人兼首席产品官 Tomer Avni 来说,这两个 Copilot 漏洞带来的问题 “并不是 GitHub 没有努力设置防护措施。而是大语言模型的本质决定了,无论你设置多少防护措施,它总是可以被操控。这就是为什么我们认为需要在其之上设置一个独立的安全层,来检测这些漏洞。”


http://www.niftyadmin.cn/n/5843010.html

相关文章

PyQt6/PySide6 的 QTreeView 类

QTreeView 是 PyQt6 或 PySide6 库中用于显示分层数据的控件。它适用于展示树形结构的数据,如文件系统、组织结构等。QTreeView 也是基于模型-视图架构的,通常与 QAbstractItemModel 的子类(如 QStandardItemModel 或自定义模型)一…

最新EFK(Elasticsearch+FileBeat+Kibana)日志收集

文章目录 1.EFK介绍2.操作前提3.FileBeat8.15下载&安装4.编写FileBeat配置文件5.启动FileBeat6.模拟实时日志数据生成7.查看索引(数据流)是否创建成功8.创建数据视图:9.查看数据视图10.使用KQL对采集的日志内容进行过滤11.给日志数据配置保留天数(扩展知识) 1.E…

【力扣】48.旋转图像

AC截图 题目 思路 以矩阵 1 2 3 4 5 6 7 8 9 为例&#xff0c;想要翻转90度&#xff0c;可以先沿着对角线翻转一次 1 4 7 2 5 8 3 6 9 然后再逐行翻转&#xff0c;即可得到所求矩阵 7 4 1 8 5 2 9 6 3 代码 class Solution { public:void rotate(vector<vector…

亚远景-从SPICE到ASPICE:汽车软件开发的标准化演进

一、SPICE标准的起源与背景 SPICE&#xff0c;全称“Software Process Improvement and Capability dEtermination”&#xff0c;即“软件流程改进和能力测定”&#xff0c;是由国际标准化组织ISO、国际电工委员会IEC、信息技术委员会JTC1联合发起制定的ISO 15504标准。该标准旨…

git 指定ssh key

在git clone操作中指定SSH密钥&#xff0c;可以通过以下几种方法实现&#xff1a; 1 使用–config选项在克隆时指定密钥 当你克隆一个git仓库时&#xff0c;可以直接在命令中指定要使用的ssh密钥。这种方法适用于一次性操作&#xff0c;不需要修改全局或仓库级别的配置 git …

libdrm移植到arm设备

一、环境资源要求 下载libdrm Index of /libdrm 这边使用的是2.4.114版本&#xff0c;版本太高对meson版本要求也很高&#xff0c;为了省事用apt安装meson就不用太高版本了&#xff0c;1.x版本虽然使用makefile编译方便但是太老&#xff0c;对应用支持不太好。 https://dri…

【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信

引言 我们之前了解了在不同场景下,Kubernetes中Pod之间的通信是如何路由的。 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信现在,我们来看看在集群中,Pod与服务之间的通信是如何…

使用PaddlePaddle实现逻辑回归:从训练到模型保存与加载

1. 引入必要的库 首先&#xff0c;需要引入必要的库。PaddlePaddle用于构建和训练模型&#xff0c;pandas和numpy用于数据处理&#xff0c;matplotlib用于结果的可视化。 import paddle import pandas as pd import numpy as np import matplotlib.pyplot as plt 2. 加载自定…