Pesquisadores encontram falha que permitia assumir contas do ChatGPT com apenas um link
Aprofundamento CEVIU
Aprofundamento
A pesquisa descreve uma cadeia de exploração que começa em uma conversa pública comum do ChatGPT. O atacante publica o compartilhamento e envia o link. Quando a vítima abre, o payload roda como chatgpt.com dentro da sessão autenticada dela. Os pesquisadores confirmaram que o código listava as conversas, lia o conteúdo de uma conversa privada nunca compartilhada e enviava um trecho para um servidor externo.
O sandbox do Preview em si funcionou. O problema foi outro componente da página principal aceitar ordens dele. Um gráfico carregava a biblioteca MathLive, que instalava na página um listener de postMessage para o teclado virtual. O listener usava política de origem none (aceitava qualquer origem) e não exigia uma janela previamente aprovada. Uma mensagem trocava o layout do teclado por HTML, e a outra mandava exibi-lo. O MathLive jogava esse HTML em innerHTML, e o createHTML só marcava a string como confiável, sem sanitizar.
Para executar script, o HTML criava um iframe com srcdoc sem atributo sandbox, que herdou a identidade chatgpt.com. A CSP bloqueava JavaScript inline, mas permitia scripts do YouTube. O endpoint oEmbed aceitava um parâmetro callback no estilo JSONP e o refletia na resposta antes do erro de validação. Terminar o callback com ;void neutralizou o objeto anexado e o código rodou. A OpenAI corrigiu em 26 de outubro, em duas versões do front-end web, e classificou o relatório como P1. Segundo os pesquisadores, bloquear só o endpoint do YouTube não resolveria a raiz do problema.
Por que isso importa
Para quem opera plataformas e pipelines, o caso mostra que a CSP funciona como controle de reserva, não como barreira única. Na leitura editorial, vale revisar em apps próprios três pontos: receivers de postMessage que não validam origem e janela, configurações entre janelas que aceitam HTML cru e iframes criados dinamicamente sem sandbox. Também serve de alerta sobre allowlists de CSP com domínios de terceiros que oferecem endpoints JSONP. Cada recurso parecia razoável isoladamente, e o risco só apareceu na combinação.
Linha do tempo
OpenAI corrige a falha do MathLive e do HTML Preview e classifica o relatório como P1.
Pesquisadores divulgam a cadeia que permitia assumir contas do ChatGPT com um link.
Perguntas frequentes
O que o atacante precisava para tomar a conta?
Bastava criar uma conversa maliciosa, publicá-la pelo compartilhamento normal do ChatGPT e enviar o link. A vítima não precisava instalar app, entrar em projeto ou colar código. Na versão mais estável, ela clicava uma vez no botão de Preview. Os pesquisadores também marcaram o bloco HTML como previsualizável para que abrisse sozinho, deixando a abertura do link como único clique.
O sandbox do Preview foi quebrado diretamente?
Não. O Preview não conseguia ler a página principal, como esperado. A falha estava no MathLive, que rodava na página principal e aceitava mensagens de qualquer origem. Por ele, o HTML do atacante criou um iframe sem sandbox com a identidade chatgpt.com.
Qual foi o papel do YouTube na cadeia?
A CSP do ChatGPT bloqueava JavaScript inline, mas permitia scripts do YouTube. O endpoint oEmbed refletia o parâmetro callback na resposta, mesmo ao rejeitá-lo. Isso permitiu executar código por um domínio já autorizado. Segundo os pesquisadores, foi o contorno final da CSP, não a causa raiz.
O problema já foi corrigido?
Sim. A OpenAI corrigiu em 26 de outubro e classificou o relatório como P1. A correção saiu em duas versões do front-end web. Nessa data, a empresa confirmou que ambas rejeitavam as mensagens MathLive entre frames usadas no relatório e marcou o caso como resolvido.
Fontes
- parameter.aifonte original
- Categoria
- CEVIU DevOps
- Publicado
- 02 de novembro de 2026
- Editoria
- CEVIU DevOps

