当前位置: 首页 > news >正文

ChatGPT被曝存在爬虫漏洞,OpenAI未公开承认

OpenAI的ChatGPT爬虫似乎能够对任意网站发起分布式拒绝服务(DDoS)攻击,而OpenAI尚未承认这一漏洞。

本月,德国安全研究员Benjamin Flesch通过微软的GitHub分享了一篇文章,解释了如何通过向ChatGPT API发送单个HTTP请求,利用ChatGPT爬虫(特别是 ChatGPT-User)向目标网站发起大量网络请求。攻击者可以将单个API请求放大为每秒20到5000次甚至更多的请求,持续不断地发送到目标网站。从实际操作来看,这种连接的洪流虽然不足以使任何网站瘫痪,但仍被认为是一种潜在的危险,也暴露了OpenAI 的疏忽。

Flesch在他的报告中指出:“ChatGPT API在处理向 https://chatgpt.com/backend-api/attributions发送的HTTP POST请求时,表现出严重的质量缺陷。”他提到的API端点,被ChatGPT用于返回聊天机器人输出中引用的网络来源信息。当ChatGPT提到特定网站时,它会调用“attributions”接口,并附带这些网站的URL列表,供爬虫访问并获取相关信息。如果向API发送一个包含大量URL的列表,每个URL略有不同但都指向同一个网站,爬虫会立即访问所有这些URL 。

Flesch写道:“API期望在参数urls中接收一个超链接列表。众所周知,指向同一网站的超链接可以以多种不同的方式编写。由于编程实践不当,OpenAI没有检查列表中是否多次出现指向同一资源的超链接。 OpenAI也没有对urls参数中存储的超链接数量设置上限,从而允许在单个HTTP请求中传输数千个超链接。”

因此,攻击者可以使用Curl等工具向ChatGPT端点发送HTTP POST请求,无需身份验证令牌。OpenAI在微软Azure上的服务器将响应此请求,并为通过urls[]参数提交的每个超链接发起HTTP请求。当这些请求指向同一个网站时,可能会使目标网站不堪重负,出现DDoS症状——由Cloudflare代理的爬虫每次都会从不同的IP地址访问目标网站。

“受害者永远不会知道发生了什么,因为他们只看到同一时间,ChatGPT机器人从大约20个不同的IP地址访问他们的网站。”Flesch说。他还补充道,即使受害者启用了防火墙来阻止ChatGPT机器人使用的IP地址范围,机器人仍然会发送请求。“因此,一个失败或被阻止的请求,不会阻止ChatGPT机器人在下一毫秒再次请求受害者网站。由于这种放大效应,攻击者可以向ChatGPT API发送少量请求,但受害者将收到大量请求。”

Flesch 通过多个渠道报告了这一未经身份验证的反射型DDoS漏洞,包括OpenAI的BugCrowd漏洞报告平台、OpenAI安全团队的电子邮件、微软和HackerOne,但至今未收到任何回复。

Flesch认为更大的问题是这个API还容易受到提示注入攻击。Flesch质疑,为什么OpenAI机器人没有实现简单且成熟的方法,以正确去重请求列表中的URL,或者限制列表的大小,也没有解决在ChatGPT主界面中已修复的提示注入漏洞。

Flesch 说:“在我看来,这个小API似乎是ChatGPT AI代理的一个示例项目,任务是从用户提供的数据中解析出URL,然后使用Azure抓取网站。‘AI代理’没有内置安全功能吗?显然,处理 urls[]参数的‘AI 代理’没有资源耗尽的概念,也不明白为什么在同一秒内向同一网站发送数千个请求是愚蠢的。难道它没有意识到victim.com/1和victim.com/2都是指向同一个网站victim.com吗?如果victim.com/1的请求失败了,为什么还会立即向victim.com/2发送请求呢?这些都是人们多年来在软件中实施的验证逻辑,以防止此类滥用现象出现。 ”

Flesch表示,唯一能想到的解释是OpenAI正在使用AI代理来触发这些HTTP请求。“我无法想象一个高薪的硅谷工程师会设计出这样的软件,因为ChatGPT爬虫已经像谷歌爬虫一样在网络上爬行了多年。如果爬虫不限制对同一网站的请求数量,它们会立即被屏蔽。”

http://www.lryc.cn/news/525181.html

相关文章:

  • Qt——界面优化
  • python学opencv|读取图像(四十一 )使用cv2.add()函数实现各个像素点BGR叠加
  • Spring MVC和Spring WebFlux的区别
  • Linux探秘坊-------4.进度条小程序
  • Llama 3:开源大模型的里程碑式突破
  • 计算机网络 (56)交互式音频/视频
  • STM32 GPIO工作模式
  • 自动化实现的思路变化
  • MongoDB的索引与聚合
  • Java菜鸟养成计划(java基础)--java运算符
  • 除了基本的事件绑定,鸿蒙的ArkUI
  • 0164__【GNU】gcc -O编译选项 -Og -O0 -O1 -O2 -O3 -Os
  • vue3组件传值具体使用
  • Web 音视频(二)在浏览器中解析视频
  • 江天科技主要产品销售单价下滑,应收账款、存货周转率大幅下降
  • 我国的金融组织体系,还有各大金融机构的分类,金融行业的组织
  • vue md5加密
  • 学习ASP.NET Core的身份认证(基于JwtBearer的身份认证7)
  • Ubuntu16.04 安装OpenCV4.5.4 避坑
  • DDD - 整洁架构_解决技术设计困局
  • Python自动化运维:一键掌控服务器的高效之道
  • 数论问题61一一各种进位制
  • Java开发提速秘籍:巧用Apache Commons Lang工具库
  • 使用sql查询excel内容
  • [Python学习日记-78] 基于 TCP 的 socket 开发项目 —— 模拟 SSH 远程执行命令
  • 电子应用设计方案101:智能家庭AI喝水杯系统设计
  • vue学习路线
  • (15)Chainlink Automation(定时任务) 详细介绍及用法
  • 从入门到精通:RabbitMQ的深度探索与实战应用
  • 基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解