生成数据智能

人工智能机器人产生软件包幻觉,开发人员下载它们

日期:

深入 几家大企业已经发布了源代码,其中包含以前由生成式人工智能所幻想的软件包。

不仅如此,有人发现了这种反复出现的幻觉,将这种虚构的依赖变成了真实的依赖,据我们所知,由于人工智能的错误建议,开发人员随后下载并安装了数千次该依赖。如果该软件包中包含了实际的恶意软件,而不是良性测试,那么结果可能是灾难性的。

Lasso Security 的安全研究员 Bar Lanyado 表示,被人工智能愚弄并纳入该软件包的企业之一是阿里巴巴,在撰写本文时,阿里巴巴仍然包括 pip 命令 下载Python包 huggingface-cli 在其 图翻译器 安装说明。

有一个合法的 拥抱脸-cli,安装使用 pip install -U "huggingface_hub[cli]".

但是, huggingface-cli 通过 Python Package Index (PyPI) 分发,并由阿里巴巴的 GraphTranslator 所需 – 使用安装 pip install huggingface-cli – 是假的,由 AI 想象,并由 Lanyado 作为实验变成现实。

他创造了 huggingface-cli 12 月,在看到它多次被生成人工智能产生幻觉后;到今年 2 月,阿里巴巴在 GraphTranslator 的 README 说明中提到了它,而不是真正的 Hugging Face CLI 工具。

学习

Lanyado 这样做是为了探索这些幻觉软件包(由生成人工智能模型发明的软件包名称,大概是在项目开发过程中)是否会随着时间的推移而持续存在,并测试发明的软件包名称是否可以通过编写实际的软件包来被增选并用于分发恶意代码。使用人工智能想象的代码名称的软件包。

这里的想法是,邪恶的人可以向模型询问代码建议,记下人工智能系统重复推荐的想象中的软件包,然后实现这些依赖关系,以便其他程序员在使用相同的模型并获得相同的建议时,最终加入进来这些库可能受到恶意软件的毒害。

去年,通过安全公司 Vulcan Cyber​​、Lanyado 出版 研究详细介绍了人们如何向 ChatGPT 等 AI 模型提出编码问题,并收到建议使用不存在的软件库、软件包或框架的答案。

Lanyado 解释道:“当攻击者发起这样的活动时,他会向模型询问解决编码问题的包,然后他会收到一些不存在的包。” 注册。 “他会将同名的恶意软件包上传到适当的注册表,从那时起,他所要做的就是等待人们下载这些软件包。”

危险的假设

人工智能模型愿意自信地 引用不存在的法庭案例 现在已经众所周知,并且在没有意识到这种趋势的律师中引起了不小的尴尬。事实证明,生成式人工智能模型也会对软件包做同样的事情。

正如 Lanyado 之前指出的那样,不法分子可能会使用人工智能发明的名称来上传到某个存储库的恶意软件包,希望其他人可以下载该恶意软件。但要使其成为有意义的攻击媒介,人工智能模型需要反复推荐选定的名称。

这就是兰亚多想要测试的。带着数千个“如何做”的问题,他询问了四种人工智能模型(GPT-3.5-Turbo、GPT-4、Gemini Pro aka Bard 和 Coral [Cohere]),了解五种不同编程语言/运行时(Python、 Node.js、Go、.Net 和 Ruby),每个都有自己的打包系统。

事实证明,这些聊天机器人凭空提取的名称中有一部分是持久的,有些跨越不同的模型。而坚持——假名的重复——是将人工智能的奇思妙想转变为功能性攻击的关键。攻击者需要人工智能模型在对用户的响应中重复幻觉包的名称,以查找和下载以这些名称创建的恶意软件。

Lanyado 随机选择了 20 个零样本幻觉问题,并向每个模型提出了 100 次。他的目标是评估幻觉包名称保持不变的频率。他的测试结果表明,名称的持久性足以使其成为功能性攻击向量,尽管并非总是如此,并且在某些包装生态系统中比其他生态系统中更持久。

Lanyado 表示,在 GPT-4 中,24.2% 的问题回答产生了幻觉包,其中 19.6% 是重复的。提供的表格 注册下面显示了 GPT-4 响应的更详细细分。

  蟒蛇 Node.js的 红宝石 。NET Go
总问题 21340 13065 4544 5141 3713
至少有一个幻觉包的问题 5347(25%) 2524(19.3%) 1072(23.5%) 1476 (28.7%) 1093 可利用 (21.2%) 1150 (30.9%) 109 可利用 (2.9%)
零射击中的幻觉 1042(4.8%) 200(1.5%) 169(3.7%) 211 (4.1%) 130 可利用 (2.5%) 225 (6%) 14 可利用 (0.3%)
第二枪出现幻觉 4532(21%) 2390(18.3%) 960(21.1%) 1334 (25.9%) 1006 可利用 (19.5%) 974 (26.2%) 98 可利用 (2.6%)
零次重复性 34.4% 24.8% 5.2% 14%

在 GPT-3.5 中,22.2% 的问题回答引发了幻觉,其中 13.6% 是重复性的。对于双子座来说,64.5 个问题提到了虚构的名字,其中约 14% 是重复的。对于 Cohere 来说,29.1% 是幻觉,24.2% 是重复。

即便如此,Go 和 .Net 中的打包生态系统的构建方式也通过拒绝攻击者访问某些路径和名称来限制利用的可能性。

“在 Go 和 .Net 中,我们收到了幻觉包,但其中许多无法用于攻击(Go 中的数字比 .Net 中的要重要得多),每种语言都有其自身的原因,”Lanyado 解释道 注册。 “在 Python 和 npm 中,情况并非如此,因为模型向我们推荐了不存在的包,并且没有什么可以阻止我们上传具有这些名称的包,所以肯定对诸如此类的语言进行这种攻击要容易得多Python 和 Node.js。”

传播 PoC 恶意软件

Lanyado 通过分发概念验证恶意软件(Python 生态系统中的一组无害文件)来阐述这一点。根据ChatGPT的建议运行 pip install huggingface-cli,他将一个同名的空包上传到 PyPI(上面提到的那个),并创建了一个名为的虚拟包 blabladsa123 帮助将软件包注册表扫描与实际下载尝试分开。

他声称,结果是 huggingface-cli 上线三个月内,正版下载量超过 15,000 次。

Lanyado 表示:“此外,我们还在 GitHub 上进行了搜索,以确定该软件包是否在其他公司的存储库中被使用。” 写的 为了他的实验。

“我们的调查结果显示,几家大公司在其存储库中使用或推荐此软件包。例如,安装此软件包的说明可以在专门用于阿里巴巴进行研究的存储库的自述文件中找到。”

阿里巴巴没有回应置评请求。

Lanyado 还表示,有一个 Hugging Face 拥有的项目包含了假的 Huggingface-cli,但那 去掉了 在他向商家发出警报后。

至少到目前为止,据 Lanyado 所知,这种技术还没有在实际攻击中使用过。

“除了我们的幻觉包(我们的包不是恶意的,它只是利用这种技术是多么容易和危险的一个例子),我还没有发现恶意行为者利用这种攻击技术的情况,”他说。 “值得注意的是,识别此类攻击很复杂,因为它不会留下很多足迹。” ®

现货图片

最新情报

现货图片

在线答疑

你好呀! 我怎么帮你?