Alerta de segurança · AR-2026-002

Crítica AR-2026-002

GitLab: execução remota de código no compilador de expressões regulares

A CVE-2026-110264, com CVSS 10.0, permite execução remota de código sem autenticação em instalações self-managed do GitLab CE/EE. A falha está no compilador de expressões regulares do Ruby (Onigmo) e afeta versões desde a 7.0; a correção está disponível para todas as linhas suportadas e para a 18.11.

CVE
CVE-2026-110264
Severidade
Crítica · CVSS 10.0 (v3.1)
Vetor CVSS
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Produto
GitLab CE/EE (self-managed)
Exploração
Sem confirmação pública
Correção
18.11.13 · 19.0.10 · 19.1.9 · 19.2.9 · 19.3.6 · 19.4.3 · 19.5.1
Publicado
23 de outubro de 2026
Última revisão
23 de outubro de 2026

Ação imediata

Atualize todas as instâncias self-managed do GitLab CE/EE para a versão corrigida da linha em uso: 18.11.13, 19.0.10, 19.1.9, 19.2.9, 19.3.6, 19.4.3 ou 19.5.1. Priorize instâncias acessíveis pela internet.

  • Confirme a versão e o tipo de instalação (Omnibus, source ou Helm chart) em cada nó.
  • Não há workaround oficial divulgado; restringir o acesso é medida paliativa.
  • GitLab.com já está corrigido; GitLab Dedicated em 19.3.5-internal0, 19.4.2-internal0 ou posterior também.

Resumo

Em 21 de outubro de 2026, o GitLab publicou uma versão crítica de correção para instalações self-managed do GitLab Community Edition (CE) e Enterprise Edition (EE). A CVE-2026-110264 tem CVSS 3.1 10.0 e permite que um usuário não autenticado execute código no servidor GitLab sob certas condições, explorando um integer overflow no compilador de expressões regulares.

A falha afeta versões desde a 7.0 e recebeu correção em sete linhas ao mesmo tempo, incluindo backports para 18.11, 19.0, 19.1 e 19.2. GitLab.com já está corrigido; instâncias GitLab Dedicated em 19.3.5-internal0, 19.4.2-internal0 ou posterior também. A ação é necessária apenas em instalações self-managed.

Não há workaround oficial divulgado. A atualização para uma versão corrigida é a única correção; restringir o acesso à instância e reduzir arquivos .org públicos são medidas de redução de exposição, não de correção.

Por que este alerta é prioritário

  • CVSS 10.0, com vetor de rede, baixa complexidade, sem privilégios e sem interação do usuário.
  • Impacto potencial sobre todos os repositórios, variáveis de CI/CD, tokens de runner, tokens de acesso e segredos da instância.
  • Instalações self-managed expostas à internet são alvo direto; ambientes internos também devem ser corrigidos.
  • Há relatos de terceiros sobre PoC público; não foi possível validar a exploração neste alerta.

Gravidade e exposição

Métrica Valor Leitura
CVSS v3.1 10.0 · Crítica Maior pontuação possível; impacto alto em confidencialidade, integridade e disponibilidade, com escopo alterado.
Vetor AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H Rede, baixa complexidade, sem privilégios, sem interação do usuário.
Impacto Execução de código como usuário git Comprometimento da instância: repositórios, CI/CD, tokens e segredos acessíveis ao processo.
Alcance GitLab CE/EE self-managed GitLab.com e GitLab Dedicated já corrigidos; não exigem ação do cliente.

O escopo alterado (S:C) indica que o impacto pode ultrapassar o componente vulnerável e atingir o servidor e os dados sob sua responsabilidade. Em uma instância GitLab, isso inclui código-fonte, credenciais de integração, variáveis protegidas e artefatos de CI/CD.

Status de exploração: não há confirmação pública de exploração em ambiente real até a publicação deste alerta. O CVE não constava no catálogo Known Exploited Vulnerabilities (KEV) da CISA na verificação de 22 de outubro de 2026. O EPSS era de 0,005 (0,5%) nessa data. Relatos de terceiros mencionam PoC público; a existência de PoC reduz o tempo esperado para tentativas de exploração e não altera a recomendação de atualizar.

Detalhes técnicos

O GitLab descreve a falha como um integer overflow na compilação de uma expressão regular especialmente construída. A análise de detecção publicada pelo próprio GitLab detalha o caminho pelo renderizador Org-mode: o gem org-ruby interpola uma palavra-chave #+TODO: controlada pelo atacante em uma nova expressão regular, sem escape adequado:

Regexp.new("^#{keyword}\\s*")

Com uma palavra-chave contendo mais de 32.767 repetições genéricas, o compilador Onigmo atribui um ID de repetição acima do limite de 16 bits com sinal. O valor sofre wraparound e a operação de repetição realiza uma escrita fora dos limites no momento da correspondência. Com preparação de heap, a cadeia pode chegar a uma chamada de system() como o usuário git.

A falha é classificada como CWE-190 (integer overflow ou wraparound). O caminho Org-mode descrito nas detecções do GitLab envolve também CWE-94 (controle impróprio de geração de código) e CWE-787 (escrita fora dos limites).

Condições descritas

  • O caminho não autenticado descrito nas detecções exige que a instância renderize um arquivo .org controlado pelo atacante — por exemplo, em um projeto público.
  • A exploração é uma campanha de tentativas: a maioria pode gerar timeout ou queda do worker; uma tentativa bem-sucedida pode ser silenciosa.
  • O GitLab não detalhou publicamente todas as pré-condições; não presuma que uma configuração específica elimina o risco.
  • O problema está no runtime empacotado pelo GitLab, não apenas em aplicações ou integrações que usam expressões regulares.

Versões afetadas e correção

Linha do GitLab Versões afetadas Primeira versão corrigida
18.11 e anteriores (desde 7.0) anteriores a 18.11.13 18.11.13
19.0 anteriores a 19.0.10 19.0.10
19.1 anteriores a 19.1.9 19.1.9
19.2 anteriores a 19.2.9 19.2.9
19.3 anteriores a 19.3.6 19.3.6
19.4 anteriores a 19.4.3 19.4.3
19.5 anteriores a 19.5.1 19.5.1

Todos os tipos de instalação self-managed são afetados, salvo indicação em contrário no comunicado do GitLab: Omnibus, instalação a partir do código-fonte e Helm chart. GitLab.com já executa a versão corrigida. GitLab Dedicated em 19.3.5-internal0, 19.4.2-internal0 ou posterior também está corrigido.

Como verificar a versão

Confirme a versão em cada nó e o tipo de implantação. Em Omnibus:

sudo gitlab-rake gitlab:env:info
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

Em instalações por código-fonte, verifique /home/git/gitlab/VERSION. Em Kubernetes/Helm, confira a tag da imagem dos pods gitlab-webservice e dos demais componentes. Não confie apenas na versão do sistema operacional ou do pacote externo.

  • Atualize todos os nós de uma implantação em HA, não apenas o nó inicial.
  • Reconstrua a imagem ou o pacote e reinicie os serviços conforme o procedimento do GitLab.
  • As versões 19.3.6 e 19.4.3 incluem migrações de banco; a 19.4.3 inclui pós-implantação. Em single-node, pode haver indisponibilidade durante a migração; planeje janela e backup.

Detecção

O GitLab publicou regras de detecção no formato Sigma. A investigação deve combinar logs de requisição, logs de exceção, mensagens de crash do worker e inspeção dos repositórios. Um único sinal não é conclusivo; uma exploração bem-sucedida pode não gerar crash.

Burst de timeouts no renderizador Org

Em exceptions_json.log, procure cinco ou mais Timeout::Error do renderizador OtherMarkup em arquivos .org, do mesmo cliente, em 30 minutos. Exemplo de evento:

{"exception.class":"Timeout::Error",
 "extra.class_name":"OtherMarkup",
 "extra.file_name":"payload.org",
 "meta.caller_id":"Projects::BlobController#show",
 "meta.client_id":"ip/203.0.113.10"}

Crash nativo do worker

Em puma_stderr.log, procure [BUG] com frames do org-ruby (headline.rb) ou do Onigmo (match_at, onig_search_gpos, onig_compile, compile_tree, compile_length_tree, rb_str_sub_bang):

org-ruby-0.9.12/lib/org-ruby/headline.rb:100: [BUG] Segmentation fault
...
ruby(match_at+0x26f0 ...)
ruby(onig_search_gpos+0x630 ...)
ruby(rb_reg_search_set_match ...)

Outros sinais

  • Respostas 502 do Workhorse na rota de blob de um arquivo .org; a requisição que derruba o worker pode não aparecer no log Rails.
  • POST em /preview com file_path terminando em .org enquanto a URL não é de um arquivo .org — seleção deliberada do renderizador.
  • Arquivos .org com linhas #+TODO:, #+SEQ_TODO: ou #+TYP_TODO: anormalmente longas. Busca de triagem indicada pelo GitLab:
rg -l --glob '**/*.org' '^\#\+(TODO|SEQ_TODO|TYP_TODO):.{500,}'
  • Processos filhos de Puma ou Sidekiq, arquivos inesperados do usuário git em /tmp, conexões de saída, alterações em cron ou chaves SSH.
  • Acesso ou alteração de gitlab-secrets.json, variáveis de CI/CD, tokens de runner e tokens de acesso.

Preserve os logs antes de reiniciar. Para o caminho Org, a requisição que causa o crash pode não ter correlation_id no log Rails; correlacione por host, IP e janela de tempo.

Recomendações

  1. Inventarie instâncias self-managed. Registre versão, tipo de implantação, exposição à internet, nós de HA e responsável pela atualização. Inclua ambientes de teste e instâncias esquecidas.
  2. Atualize para a versão corrigida da linha. Use 18.11.13, 19.0.10, 19.1.9, 19.2.9, 19.3.6, 19.4.3 ou 19.5.1, conforme a linha em uso. Siga o caminho de atualização suportado pelo GitLab.
  3. Planeje a janela de manutenção. Faça backup, valide espaço em disco e revise as migrações das versões 19.3.6 e 19.4.3. Em HA, atualize todos os nós; em single-node, prepare-se para indisponibilidade durante as migrações.
  4. Valide a correção. Confirme a versão nos nós, nos pods e nas imagens em execução; reinicie os serviços e verifique a saúde da instância após a atualização.
  5. Se não puder atualizar, reduza a exposição. Coloque a instância atrás de VPN ou allowlist, restrinja o acesso à internet e remova ou torne privados arquivos .org e projetos públicos que possam servir de payload. Isso não corrige a falha.
  6. Monitoramento e hunting. Ative as regras de detecção do GitLab e revise os logs desde 21 de outubro de 2026, data da publicação da correção.
  7. Se houver comprometimento, rotacione segredos. Preserve evidências, isole a instância e rotacione gitlab-secrets.json, variáveis de CI/CD, tokens de runner, tokens de acesso, chaves SSH e credenciais de integração.
  8. Comunique. Acione o SOC da GigaCandanga e os canais oficiais aplicáveis (CISC, CTIR Gov, CERT.br). Avalie obrigações de notificação de incidente e de proteção de dados pessoais.

Mitigação temporária

Não há workaround oficial

O GitLab não publicou uma configuração que corrija ou bloqueie a falha de forma completa. As medidas abaixo reduzem a exposição enquanto a atualização é preparada; nenhuma substitui a versão corrigida.

Medida Efeito Limite
Atualizar para a versão corrigida Corrige a falha. Única correção completa.
Restringir acesso por VPN ou allowlist Reduz a exposição da instância à internet. A instância continua vulnerável; acesso interno comprometido ainda alcança o serviço.
Remover ou tornar privados arquivos .org e projetos públicos Reduz a superfície do caminho não autenticado descrito nas detecções. Não cobre outros caminhos ou pré-condições desconhecidas; não corrige.
Monitorar logs e aplicar as detecções do GitLab Identifica tentativas e possíveis crashes. Não bloqueia a exploração nem detecta necessariamente um sucesso silencioso.

Não trate regras genéricas de WAF ou bloqueio de arquivos .org como correção. A ausência de crash ou de alerta não prova que a instância não foi comprometida.

Resposta a incidentes

Uma exploração bem-sucedida pode ocorrer sem crash visível. Se houver suspeita, trate a instância como comprometida e preserve as evidências antes de reiniciar ou reconstruir.

  1. Contenha: isole a instância da internet e de outros segmentos; preserve logs, arquivos .org suspeitos e o estado dos processos.
  2. Investigue: revise timeouts de renderização, crashes do worker, 502 do Workhorse, previews com file_path .org, IPs de origem, processos filhos de Puma/Sidekiq, arquivos do usuário git em /tmp, conexões de saída, cron e chaves SSH.
  3. Eradique: atualize para a versão corrigida, remova payloads e commits maliciosos e reconstrua a instância a partir de imagem ou backup confiável. Não confie apenas na remoção de um arquivo.
  4. Recupere: rotacione gitlab-secrets.json, variáveis de CI/CD, tokens de runner e de acesso, chaves SSH e credenciais de integração. Valide a configuração e monitore o retorno.
  5. Notifique: acione o SOC da GigaCandanga e os canais oficiais (CISC, CTIR Gov, CERT.br). Avalie notificação de titulares e demais obrigações legais, inclusive LGPD, se houver dados pessoais afetados.

Referências

Links externos abrem em nova aba. Consulte sempre a fonte oficial para o status mais recente.

Outras fontes de consulta para resposta e investigação estão em Links úteis.

Revisão

Revisão 1.0 — 23 de outubro de 2026 — Publicação inicial. Fontes consultadas até 23 de outubro de 2026. O status de exploração e a inclusão no catálogo KEV podem mudar; confirme nas fontes oficiais.

Este alerta consolida informações públicas e tem caráter informativo. Não substitui os comunicados oficiais dos fornecedores nem a avaliação da equipe responsável por cada ambiente. Teste as ações em ambiente controlado antes de aplicá-las em produção.