/  

ChatGPT 中的帐户接管漏洞

介绍

我们将讨论在 ChatGPT 中发现的严重安全漏洞。该漏洞允许攻击者通过单击接管任何用户的帐户,使他们能够访问敏感信息并 执行未经授权的操作。 此漏洞的发现归功于Nagli,他发现了该问题并将其报告给ChatGPT团队。

image.png

了解帐户接管

了解此漏洞的严重性及其影响,了解帐户接管的含义至关重要。帐户接管是一种网络攻击,其中未经授权的个人通过利用系统漏洞或窃取用户的登录凭据来访问用户的在线帐户。一旦攻击者获得访问权限,他们就可以进行一系列恶意活动,包括但不限于窃取个人信息、欺诈易或传播恶意软件。

该攻击使用 Web 缓存欺骗漏洞访问受害者的 ChatGPT 帐户。此漏洞允许我们执行一键式攻击来破坏任何用户的帐户,从而实现帐户接管。

网页缓存骗案对网上保安的影响

Web 缓存欺骗漏洞是一种安全漏洞,允许攻击者操纵 Web 服务器的缓存机制来欺骗用户并破坏其帐户。当网站的服务器缓存配置或实施不正确时,就会发生此类漏洞。攻击者可利用此漏洞诱骗服务器缓存虚假网页或操纵现有缓存网页的内容。

攻击者可以欺骗用户向攻击者的服务器提交敏感信息,例如他们的登录凭据或财务数据。然后,此信息可用于执行各种恶意活动,包括帐户接管、身份盗用和财务欺诈。

要利用 ChatGPT 中的漏洞并接管用户帐户,攻击者可以创建指向会话终结点的“.css”路径,并将链接发送给受害者。当目标单击链接时,响应将被缓存,攻击者可以提取受害者的凭据,使他们能够未经授权访问受害者的帐户。这个严重的 Web 缓存欺骗漏洞可能使攻击者能够访问敏感的用户信息,例如姓名、电子邮件地址和访问令牌,这些信息是由 OpenAI 的 API 从服务器检索的。

通过访问“https://chat.openai.com/api/auth/session”,攻击者可以获取帐户数据, 包括姓名、电子邮件、ID ,最重要的是我们的 访问令牌 。有了这些信息,我们可以创建一个对“https://chat.openai.com/api/auth/session/victim.css”的请求,服务器将返回与“ /api/auth/session ”相同的数据,而不管服务器上是否存在受害者“.css”文件。这是因为服务器会将“.css”扩展名解释为级联样式表 (CSS) 文件并相应地缓存它,包括受害者的会话内容、数据和访问令牌。

为了实现帐户接管,黑客利用了 ChatGPT 中的网络缓存欺骗漏洞。攻击者可以创建会话终结点的.css路径,并将链接发送给受害者。当受害者打开链接时,响应将被缓存,攻击者可以收集受害者的凭据并接管其帐户。

为了使漏洞利用起作用,我们需要使 CF-Cache-Status 响应确认缓存的“HIT”,这意味着它缓存了数据并将提供给同一区域的后续请求。

image.png

因此,他首先尝试获取附加到端点的文件扩展名的资源,看看它是否会引发错误或显示原始响应。

image.png

黑客访问了“https://chat.openai.com/api/auth/session”。

API 返回了帐户数据,包括受害者的访问令牌。通过导航到“https://chat.openai.com/api/auth/session/victim.css”,黑客发现了与“ /api/auth/session ”相同的内容,并返回了用户的数据,例如访问令牌。服务器缓存受害者.css受害者的会话内容(数据和访问令牌),因为它将“.css”扩展名解释为级联样式表 (CSS) 文件,并配置为缓存样式表文件。

黑客可以通过转到“https://chat.openai.com/api/auth/session/victim.css”来检索受害者的身份验证数据,包括访问令牌。由于“受害者.css”被服务器缓存,黑客可以轻松查看受害者的会话数据,而不会受到阻止或困难。使用访问令牌,黑客可以对自己进行身份验证并获得对受害者帐户的访问权限。image.png

因此,此漏洞使得 只需单击一下即可执行帐户接管 。攻击者需要做的就是等待受害者单击带有不存在的CSS的链接并立即获取其访问令牌。

为了在 ChatGPT 上执行帐户接管,攻击者使用简单而有效的攻击流程:

  • 攻击者创建指向 /api/auth/session 终结点的唯一.css路径。
  • 然后,攻击者通过直接将其发送给受害者或将其公开来分发链接。
  • 受害者点击看似合法的链接。
  • 攻击者现在可以在缓存响应时获取受害者的 JWT 凭据。
  • 攻击者可以使用这些凭据轻松访问受害者的帐户和敏感信息。

预防和缓解

Web 缓存欺骗被认为是最关键的漏洞之一,并且相对容易利用。有许多方法可以缓解此问题:

  • 缓存 服务器应基于应用程序设置的缓存控制标头运行 ,并且仅应在其 HTTP 缓存标头允许的情况下缓存文件。
  • 根据文件类型标头缓存文件,而不是仅检查文件扩展名。
  • 服务器应根据请求的不存在文件 返回 HTTP 错误,例如 404 或 302

我们希望这篇文章能提供有关帐户接管和网络缓存欺骗的信息。

引用: