Fuga de sandbox no GitLab AI Gateway: o que o pentest pega

O CVE-2026-90970 deixou um usuário autenticado executar comandos no AI Gateway do GitLab. O problema não era o modelo, era a fronteira.

Equipe PentestBRPublicado em 6 min de leitura

O GitLab corrigiu em 2 de outubro uma falha no seu AI Gateway que permitia a um usuário autenticado, com acesso à plataforma de agentes, escapar do sandbox de prompt template e executar comandos arbitrários no servidor. CVSS 9.9, criticidade máxima. O que me interessa não é o número. É que a falha não foi um modelo disobediente, nem um prompt malicioso, nem alguém sem credencial. Foi alguém com a credencial certa fazendo uma coisa que não devia, atravessando uma fronteira que ninguém tinha testado. Esse é o trabalho de pentest, e é o que quase ninguém está contratando para fazer.

O que você leva deste texto: por que “sandbox de prompt” não é um controle de segurança, e o que colocar no escopo de teste de qualquer aplicação com IA antes que o pentest saia de moda.

O que o GitLab contou

Segundo o advisory oficial do GitLab, a falha é o CVE-2026-90970, classificada como “Improper Neutralization issue in custom flow prompt template impacts AI Gateway”, com severidade crítica e CVSS 9.9.

O texto do aviso é preciso, e vale ler com calma, porque ele descreve exatamente o tipo de coisa que a maior parte do mercado ainda chama de “vulnerabilidade de IA”: “under certain conditions, could have allowed an authenticated user with Duo Agent Platform access to escape the prompt template sandbox via a specially crafted flow configuration, leading to arbitrary command execution on the AI Gateway”.

Traduzindo: um usuário autenticado, com acesso legítimo à plataforma, fornecia uma configuração de fluxo construída para o efeito. O sandbox que deveria segurar o prompt template não segurou. O que estava do outro lado não era uma resposta indevida de modelo, era execução de comando no host.

O crédito do reporte responsável vai para o invisiblemeerkat, pelo HackerOne. O GitLab afirma ter feito contato direto com os clientes que rodam a própria instância antes de publicar o aviso.

As versões corrigidas são 19.2.4, 19.3.2 e 19.4.1. São afetadas todas as versões a partir da 18.1.6 até antes dessas três. Quem usa o AI Gateway hospedado pelo GitLab, em GitLab.com, Dedicated ou Self-Managed, já está protegido e não precisa fazer nada. Quem mantém a instância self-hosted, essa é sua.

Uma coisa precisa ficar clara, porque a notícia vai circular mal: o advisory não diz que essa falha foi explorada. Não há exploração ativa declarada. O que existe é uma vulnerabilidade crítica num componente que milhões de empresas usam em produção.

O ponto que ninguém vai escrever: prompt não é fronteira

Existe uma crença conveniente no mercado de que uma aplicação com IA fica segura porque o modelo não obedece a instruções maliciosas. A crença é intuitiva e está errada no ponto exato que importa.

Modelo não é controle de acesso. Modelo é um componente que produz texto. O que impede um usuário de fazer algo indevido é autorização, validação de entrada e uma fronteira de processo, testadas com credencial válida.

O CVE-2026-90970 é a prova em formato de advisory: o vetor é uma configuração de fluxo malformada, o atacante é um usuário autenticado com acesso à plataforma, e o resultado é escape de sandbox para execução de comando. Nada disso exige que o modelo seja manipulado. O modelo só estava ali, fazendo o trabalho dele, dentro de uma estrutura que se supunha segura.

Quem tem IA em produção costuma ter duas coisas: o time de app testou a API com entrada malformada e o time de segurança testou a infraestrutura. O meio-termo, a camada que decide o que um usuário autenticado pode fazer dentro do fluxo de IA, quase ninguém olha. É exatamente ali que o GitLab estava exposto.

O lugar comum do GitLab

Não é acaso a empresa ter dois casos graves em um mês. Em setembro, o GitLab corrigiu o CVE-2026-85706, um path traversal de severidade máxima que permitia a atacantes não autenticados ler credenciais e outros segredos de servidores vulneráveis. O CISA acrescentou a falha ao catálogo de vulnerabilidades exploradas e deu três dias para as agências federais corrigirem, sob a diretriz BOD 26-04.

Desde novembro de 2021, o CISA marcou cinco vulnerabilidades do GitLab como exploradas, segundo a BleepingComputer, uma delas por grupos de ransomware.

Duas falhas graves no mesmo produto, em menos de um mês, uma delas já na mão de atacantes. Isso não é estatística de mercado. É evidência de que a superfície de uma plataforma que cresceu rápido está crescendo mais rápido do que o teste que acompanha.

E continua existindo um motivo para o patch não bastar: mesmo com a versão corrigida aplicada, você ainda precisa saber se a sua instância está exposta por outra via e se alguém mais tem acesso a ela. Versão atualizada é o começo da conversa, não o fim.

O que eu colocaria no escopo de qualquer aplicação com IA

Não é checklist da OWASP. É o que eu pediria para testar, e a ordem importa.

Primeiro, autorização por passo, não por sessão. Um usuário autenticado deveria conseguir fazer exatamente o que a sua função permite. Na prática, o modelo continua sendo “tem acesso, logo pode”. Teste cada transição de estado do fluxo com uma credencial de privilégio menor e veja se ela passa.

Segundo, fronteira de processo com saída. Se o seu backend tem uma camada de IA que processa template, dado do usuário e chamada de ferramenta, essa fronteira precisa existir fora do prompt. Prompt que tenta não permitir é prompt que pode ser permitido.

Terceiro, configuração como superfície de ataque. No caso do GitLab, o vetor foi a configuração, não a requisição. Fluxo customizado, agente, definição de ferramenta, template, variável de ambiente: cada uma dessas coisas é entrada controlada por alguém e merece o mesmo tratamento que parâmetro de API. A maioria dos times trata configuração como decisão de engenharia interna. Ela é decisão de usuário.

Quarto, relatório que separa o que foi testado do que não foi. Aqui é onde a IA complica tudo, porque gera superfície nova rápido demais. Um relatório honesto que lista o que não foi coberto vale mais que um relatório bonito que esconde o buraco.

O que fazer agora

  • Coloque no escopo do próximo teste a camada de autorização do fluxo de IA, não só a API e a infraestrutura.
  • Trate configuração de agente, template e definição de ferramenta como entrada não confiável, e teste com usuário de baixo privilégio.
  • Verifique se existe fronteira de processo entre a camada de IA e o que ela pode alcançar. Se a resposta é “o prompt diz para não fazer”, você não tem controle, tem sugestão.
  • Peça relatório com o que não foi testado, e retest depois da correção, como sempre.
  • Se você opera o AI Gateway self-hosted do GitLab, atualize para 19.2.4, 19.3.2 ou 19.4.1. Se usa o hospedado, não precisa fazer nada.

Vale dizer o que o PentestBR não faz: não testamos o modelo, não fazemos red team de prompt e não prometemos saber o que a IA “pensa”. Testamos a aplicação. A fronteira entre o que o usuário pode fazer e o que ele não pode é propriedade da aplicação, e foi exatamente isso que quebrou no caso do GitLab.

Prompt injection é o assunto que todo mundo quer discutir. Fuga de sandbox por usuário autenticado é o que realmente tira serviço do ar. O primeiro já tem nome próprio. O segundo é CVE com data de publicação.

Continue lendo

4 min de leitura

Pentest de API no caso BRB: 520 Pix em 4 horas

O caso BRB perde R$ 53,1 milhões em 520 Pix e a causa está em disputa. O que isso revela sobre teto por janela e detecção de anomalia.

  • #APIs
  • #Fintech
  • #Incidentes
Voltar ao blog