Um link malicioso de compartilhamento do ChatGPT poderia executar código do invasor na sessão autenticada de qualquer pessoa que o abrisse, permitindo a leitura de conversas privadas, segundo pesquisadores da empresa de segurança Parameter.
Os pesquisadores comunicaram a falha pelo programa de recompensas por bugs da OpenAI em 18 de outubro. A empresa corrigiu o problema oito dias depois e o classificou como P1, sua categoria mais grave.
A armadilha era uma conversa comum do ChatGPT compartilhada por meio de um link público. O link poderia ser enviado como qualquer conversa compartilhada legítima: por e-mail, mensagem, chamado de suporte ou publicação em rede social.
A vítima não precisava instalar nada, entrar em um espaço de trabalho nem se autenticar por meio do invasor. Na versão mais confiável do ataque, bastava abrir o link e clicar uma vez no botão “Pré-visualizar” do ChatGPT. Em uma versão posterior, a Parameter configurou a página para abrir a pré-visualização automaticamente. Nesse caso, abrir o link era o único passo necessário.
O que o invasor poderia fazer
Depois que o link era aberto, o código do invasor era executado na sessão autenticada da vítima, com os mesmos privilégios do site oficial do ChatGPT. Ele listava as conversas recentes da vítima, abria uma conversa privada que nunca havia sido compartilhada com o invasor e enviava uma pequena parte do conteúdo para um servidor controlado pelos pesquisadores.
O código acessava diretamente as APIs autenticadas do próprio ChatGPT, em vez de apenas copiar o que aparecia na tela. Como era executado com acesso completo à conta da vítima no site, seu alcance não se limitava às conversas. “Em essência, poderíamos realizar qualquer ação em nome da conta de ChatGPT da vítima”, escreveram os pesquisadores.
O trabalho foi um teste controlado. A Parameter não relatou nenhum uso real da falha e demonstrou o acesso a conversas privadas entre contas separadas, sem envolver usuários reais.
Como o link escapava do sandbox
Segundo a Parameter, a cadeia de ataque funcionava da seguinte forma: o ChatGPT pode transformar um bloco de código HTML em uma pequena página por meio de um recurso chamado “Pré-visualização”. Como essa página pode conter qualquer código, o ChatGPT a executa em um iframe restrito, hospedado em outro endereço. Assim, ela não consegue ler a página principal do ChatGPT ao redor.
O sandbox funcionava como esperado. A brecha vinha de um segundo recurso presente na mesma conversa.
O chat compartilhado também continha um gráfico interativo. Ao desenhá-lo, o ChatGPT carregava a biblioteca matemática MathLive na página principal. Isso mantinha em execução nessa página uma rotina que aguardava mensagens relacionadas ao teclado exibido na tela.
Uma mensagem enviada entre iframes do navegador só é segura quando o destinatário verifica quem a enviou. A Parameter descobriu que essa rotina aceitava mensagens de teclado de qualquer origem e que elas podiam conter HTML bruto. Com isso, a pré-visualização conseguia atravessar a barreira e enviar HTML controlado pelo invasor para a página principal confiável.
Esse HTML criava um novo iframe, que o navegador tratava como parte de chatgpt.com. Em seguida, um script carregado do YouTube fornecia o conteúdo executado dentro dele.
A política de segurança de conteúdo do ChatGPT limita as origens de onde uma página pode carregar scripts. Ela bloqueava scripts incorporados diretamente na página, mas permitia os provenientes do YouTube, o que tornou essa etapa possível.
O que a OpenAI corrigiu e o que os usuários devem fazer
A Parameter afirmou que a OpenAI reproduziu tanto a execução de código quanto a demonstração de acesso a conversas privadas, elevou a gravidade do caso de P2 para P1 e distribuiu uma correção para duas versões da interface web do ChatGPT. Em 26 de outubro, ambas já rejeitavam as mensagens usadas no ataque.
Os pesquisadores identificaram três escolhas de design que, em conjunto, possibilitaram a falha:
1. O MathLive processava uma mensagem que alterava suas configurações sem verificar de qual iframe ela vinha.
2. A mensagem podia incluir HTML bruto como dado de configuração do teclado.
3. O HTML podia criar um iframe sem sandbox, que herdava a identidade de chatgpt.com.
A etapa envolvendo o YouTube foi apenas a solução final usada no ataque, não a causa da falha. Bloquear somente esse recurso ainda deixaria uma pré-visualização não confiável capaz de enviar HTML para o site principal.
Os usuários do ChatGPT não precisam fazer nada. A correção foi aplicada pela OpenAI, sem necessidade de instalar ou redefinir qualquer coisa.
A Parameter publicou seu relatório em 28 de outubro, após a correção. A OpenAI pagou US$ 5.000 pelo trabalho.
Publicidade
Tenha acesso aos melhores hackers éticos do mercado através de um serviço personalizado, especializado e adaptado para o seu negócio. Guardsi: qualidade, confiança e especialidade em segurança ofensiva de quem já protegeu centenas de empresas. Saiba mais...