Artificial Intelligence1 min read

We Took over ChatGPT Accounts

By · Published by Everything Blog

In short

The vulnerability targeted ChatGPT's HTML previews, which run custom applications inside sandboxed iframes. Security researchers at Parameter Labs discovered that flawed postMessage communication handling via the MathLive library allowed attackers to escape this sandbox. By injecting an unsandboxed iframe and abusing an allowlisted YouTube endpoint to bypass security policies, the exploit achieved arbitrary code execution. OpenAI resolved the security issue after disclosure and awarded the researchers a bug bounty.

Key points

  • Sending a malicious share link enabled automatic exfiltration of a victim's private infor…: Sending a malicious share link enabled automatic exfiltration of a victim's private information via ChatGPT APIs.
  • OpenAI patched the sandboxing flaw after the research team privately disclosed the attack…: OpenAI patched the sandboxing flaw after the research team privately disclosed the attack vector.
  • The reporting security researchers received a five thousand dollar bug bounty payout from…: The reporting security researchers received a five thousand dollar bug bounty payout from OpenAI for the discovery.

Sources checked by our analysis pipeline: 1

31st October 2026 - Link Blog

How We Took Over ChatGPT Accounts (via) Parameter Labs describe an exploit they found against ChatGPT's implementation of the artifacts pattern (OpenAI used to call this "Canvas" but it looks like the latest revision is called HTML previews), where interactive custom HTML apps are displayed in a sandboxed iframe.

It's important that HTML in these stays tightly sandboxed to avoid untrusted code interacting with OpenAI APIs and accessing private data.

Parameter found quite a complex attack chain. OpenAI use the MathLive JavaScript library as part of their graph support, and that library includes its own virtual keyboard, which can be triggered in the parent page via postMessage()

from the sandboxed iframe.

That message receiving code uses innerHTML

, so anything that sends a message can add custom HTML to the parent - and there was no mechanism to prevent other sandboxed frames, including HTML preview frames, from calling that method.

This meant untrusted code in an iframe could insert HTML, and while innerHTML

doesn't directly execute script elements it could be used to inject…

Artificial Intelligence