GitLab CVE-2026-97229 já é explorada, e com o Ruby do sistema atualizar só o GitLab não resolve
Se você mantém um GitLab self-hosted, separe uns minutos hoje para esta. A CVE-2026-97229 é um integer overflow no compilador de regex do CI/CD do GitLab CE/EE: segundo o próprio GitLab, uma expressão regular montada numa configuração de CI deixa um usuário não autenticado executar código no servidor. CVSS 10.0. A correção saiu em 12/10 (19.2.8, 19.3.5 e 19.4.2), e em 29/10 a CISA pôs a falha no catálogo KEV, citando evidência de exploração ativa. Pela Shadowserver, mais de mil servidores expostos seguem vulneráveis.
O caso mais bem documentado é o do Alpine Linux. Em 20/10 uma conta recém-criada começou a mandar configurações de CI montadas para o gitlab.alpinelinux.org, e no dia 21 veio o ataque principal: 8 quedas de worker, com 502 e jobs falhando, e em 4 delas o exploit passou da primeira etapa e quebrou na seguinte. O atacante ainda baixou a imagem de container do GitLab deles, talvez para ajustar o exploit à build. Não acharam sinal de execução de código, mas não conseguiram descartar, então reconstruíram o servidor do zero, redefiniram as senhas e trocaram as chaves secretas do GitLab.
Por que atualizar não bastou no Alpine
No dia do ataque eles rodavam a 19.3.4, instalada por engano no lugar da 19.3.5. Mas nem a 19.3.6, aplicada em 22/10, fechou a falha. O defeito está no Onigmo, o motor de regex do Ruby, e o GitLab corrigiu com um patch no Ruby que só vai nos pacotes oficiais. O Alpine usa o Ruby da distro, e o Ruby só anunciou a correção em 23/10, nas versões 3.3.13, 3.4.12 e 4.0.9.
Se você instalou pelo pacote oficial (Omnibus, imagem Docker oficial ou chart Helm), atualizar o GitLab resolve. Se compilou da fonte, usa imagem de terceiros ou o Ruby do sistema, precisa também do Ruby 3.3.13, 3.4.12, 4.0.9 ou mais novo. No Alpine o apk upgrade já traz, e quem usa a imagem alpinelinux/gitlab tem de baixar de novo a tag 19.3.6: só a publicada em 27/10 tem o Ruby corrigido.
E não pare nas versões de 12/10. Em 21/10 saiu a CVE-2026-110264, também CVSS 10, no compilador de regex e sem autenticação, e ela pega tudo desde a 7.0, inclusive as versões de 12/10 (a Shadowserver conta mais de 11.300 instâncias vulneráveis). Para as duas, o mínimo é 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 ou 18.11.13, conforme o ramo; abaixo da 18.11 não tem backport. Depois ainda saiu a rodada 19.5.3/19.4.5/19.3.7, sobre certificados da eMudhra; não é de regex, mas se for atualizar agora, vá direto para ela.
# pacote oficial (Omnibus); na imagem Docker oficial, via docker exec
sudo gitlab-rake gitlab:env:info | grep -i version
# instalação da fonte, dentro de /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production | grep -i version
O primeiro Version: da saída é o do GitLab, e Ruby Version é o Ruby que ele usa. No pacote oficial vale a do GitLab (o patch do Ruby é dele, e o número pode continuar o antigo); na instalação da fonte, as duas contam.
O que procurar nos logs
Segundo o Alpine, um exploit bem-sucedido não derruba worker nem deixa rastro no log web. Aparecem as tentativas que falham: quedas repetidas de worker, picos de 502, jobs de CI quebrando com config estranha, conta nova que logo mexe com CI. O GitLab publicou seis detecções para self-managed no repositório gitlab-security-oss/tldr, como "Onigmo native worker crash" e "Graphql cilint hostile regexp". E o Alpine não registrava conexões de saída, que é justamente o que responderia "o código rodou?".
Se ficou exposto sem patch
Eu trataria como comprometido. O que o Alpine trocou serve de checklist: senhas e 2FA de todos, tokens de acesso pessoal, valores das variáveis de CI/CD (inclusive de pipelines agendados), tokens de integrações, segredos de webhooks e push mirrors, secrets de aplicações OAuth e as chaves SSH do host. Credencial de nuvem ou de deploy guardada em variável de CI tem de ser revogada na origem, não só apagada do GitLab.
Juntamos as fontes do caso numa página do Tifon, projeto nosso: tifon.dev/materia/afc8e200…. Primárias: GitLab, 12/10, GitLab, 21/10, GitLab, 19.5.3, Ruby, relato do Alpine, reabertura do Alpine e CISA.