ChatGPT 爬虫可被诱导执行 DDoS 攻击并回答查询

OpenAI 的 ChatGPT 爬虫存在安全漏洞,可被利用对任意网站发起分布式拒绝服务攻击。攻击者只需向 ChatGPT API 发送一个包含大量重复 URL 的请求,就能触发爬虫对目标网站进行大量访问。此外,该漏洞还可能被用于绕过限制,让爬虫回答查询。这些问题凸显了 AI 系统在安全性方面的潜在风险。

德国安全研究人员透露,OpenAI 的 ChatGPT 爬虫存在漏洞,可能被利用对任意网站发起分布式拒绝服务 (DDoS) 攻击,而该科技巨头尚未对此作出回应。

本月在 Microsoft 的 GitHub 平台上,德国安全研究员 Benjamin Flesch 发布了一份报告,详细说明了如何通过向 ChatGPT API 发送单个 HTTP 请求,就能让 ChatGPT 爬虫 (特别是 ChatGPT-User) 对目标网站发起大量网络请求。

虽然这种连接泛洪从实际效果来看可能不足以击垮任何特定网站,但这仍然是一个潜在的威胁,也反映了 OpenAI 的疏忽。攻击者可以将单个 API 请求放大为每秒 20 到 5,000 次甚至更多的请求,持续不断地攻击目标网站。

Flesch 在其公告中解释说:"ChatGPT API 在处理 https://chatgpt.com/backend-api/attributions 的 HTTP POST 请求时存在严重的质量缺陷。" 这个 API 端点是 OpenAI 的 ChatGPT 用来返回聊天机器人输出中引用的网络源信息。当 ChatGPT 提到特定网站时,它会调用 attributions 并提供一个 URL 列表,让爬虫访问这些网站并获取相关信息。

如果向 API 提供一个很长的 URL 列表,这些 URL 略有不同但都指向同一个网站,爬虫就会同时访问所有这些链接。

Flesch 指出:"API 在 urls 参数中需要一个超链接列表。众所周知,指向同一网站的超链接可以用多种方式书写。由于糟糕的编程实践,OpenAI 既不检查指向同一资源的超链接是否在列表中重复出现,也不对 urls 参数中存储的超链接数量设置上限,这使得在单个 HTTP 请求中可以传输数千个超链接。"

受害者永远不会知道是什么击中了他们

因此,攻击者可以使用 Curl 等工具发送 HTTP POST 请求(无需认证令牌)到该 ChatGPT 端点,Microsoft Azure 上的 OpenAI 服务器就会对请求中 urls[] 参数提交的每个超链接发起 HTTP 请求。当这些请求指向同一网站时,可能会使目标不堪重负,导致 DDoS 症状—由 Cloudflare 代理的爬虫每次都会从不同的 IP 地址访问目标网站。

Flesch 向 The Register 表示:"受害者永远不会知道是什么击中了他们,因为他们只能看到 ChatGPT 机器人同时从大约 20 个不同的 IP 地址访问他们的网站。" 他补充说,即使受害者启用防火墙阻止 ChatGPT 机器人使用的 IP 地址范围,机器人仍会继续发送请求。

"所以一个失败或被阻止的请求不会阻止 ChatGPT 机器人在下一毫秒再次请求受害者网站。"

Flesch 说:"由于这种放大效应,攻击者只需向 ChatGPT API 发送少量请求,但受害者将收到大量请求。"

Flesch 表示,他通过多个渠道报告了这个未经身份验证的反射式 DDoS 漏洞—包括 OpenAI 的 BugCrowd 漏洞报告平台、OpenAI 的安全团队邮箱、Microsoft (包括 Azure) 和 HackerOne—但没有收到任何回应。

The Register 两次联系由 Microsoft 支持的 OpenAI,但未得到回复。

Flesch 说:"我认为更大的问题是这个 API 还容易受到提示注入攻击,"他提到了另一个漏洞披露。"为什么这样一个简单的任务会有提示注入问题?我想可能是因为他们正在内部测试他们的自主 'AI agent' 系统。"

第二个问题可以被利用来让爬虫通过相同的 attributions API 端点回答查询;你可以向机器人提供问题,它可以回答这些问题,而这本不是它应该做的;它本应该只是获取网站信息。

Flesch 质疑为什么 OpenAI 的机器人没有实现简单的、已建立的方法来正确去重 URL 列表或限制列表大小,也没有设法避免在主要 ChatGPT 界面中已经解决的提示注入漏洞。

他说:"在我看来,这个小型 API 似乎是他们 ChatGPT AI agents 的一个示例项目,其任务是从用户提供的数据中解析 URL,然后使用 Azure 获取网站内容。"

"'AI agent' 是否没有内置安全功能?"他问道。"因为显然处理 urls[] 参数的 'AI agent' 对资源耗尽没有概念,也不明白为什么在同一秒内向同一个网络域名发送数千个请求是愚蠢的。"

"它难道没有认识到 victim.com/1 和 victim.com/2 指向同一个网站 victim.com,如果 victim.com/1 的请求失败了,为什么还要立即发送对 victim.com/2 的请求?"

"这些都是人们多年来在软件中实施的小型验证逻辑,以防止这种滥用。"

Flesch 说,他能想到的唯一解释是 OpenAI 正在使用 AI Agent 来触发这些 HTTP 请求。

他说:"我无法想象一个高薪的硅谷工程师会这样设计软件,因为 ChatGPT 爬虫已经像 Google 爬虫一样爬行网络多年了。如果爬虫不限制对同一网站的请求数量,它们会立即被封锁。"

来源:The Register

0赞

好文章,需要你的鼓励

2025

01/20

17:52

分享

点赞

邮件订阅