Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-42533-Config-Scanner — Scanner de configuração estática que sinaliza configurações do nginx vulneráveis ao bug complex_value de two-pass capture-clobbering (regex map + regex capture → heap overflow / info leak). | Kitploit
Ferramentas/GitHubGitHub/0xcyberstan/cve-2026-42533-config-scanner
Análise EstáticaScanners de VulnerabilidadesAnálise de CódigoAuditoria de ConfiguraçãoSegurança WebDevSecOpsConfiguração Incorreta
GitHub0xcyberstan/cve-2026-42533-config-scanner

CVE-2026-42533-Config-Scanner

Scanner de configuração estática que sinaliza configurações do nginx vulneráveis ao bug complex_value de two-pass capture-clobbering (regex map + regex capture → heap overflow / info leak).

Ver Repositório
29540há 3 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

scanner de captura-clobber para nginx

Um scanner estático somente leitura que sinaliza configurações nginx vulneráveis à classe de bug de captura-clobber em duas passagens complex_value (aviso do F5/nginx SIRT, julho de 2026). Ele analisa sua configuração e relata o padrão vulnerável com o motivo e a localização. Ele não explora nada e não toca no servidor em execução.

Arquivo único, apenas biblioteca padrão, Python 3.6+.

Análise completa da vulnerabilidade: https://cyberstan.co.uk/nginx-rce/

O bug

O nginx constrói muitos valores de diretivas em duas passagens. Uma passagem LEN mede o comprimento e aloca um buffer, depois uma passagem VALUE escreve nele. Capturas de regex ($1 a $9, ou nomeadas (?P<name>...)) são lidas de um estado compartilhado por requisição. Um map cuja chave de correspondência é uma expressão regular executa uma nova correspondência PCRE no momento em que sua variável é avaliada, e essa correspondência sobrescreve o estado de captura compartilhado. Se uma captura é medida na passagem LEN e então um map de regex é executado antes que a passagem VALUE reescreva essa captura, as duas passagens divergem:

  • o clobber torna o valor mais longo do que o medido: estouro de buffer de heap (escrita fora dos limites controlada pelo atacante)
  • o clobber torna o valor mais curto do que o medido: heap não inicializado retornado ao cliente (vazamento de informações de ponteiros de libc/heap)

Ambas as direções são acionáveis remotamente quando a entrada do map é influenciada pelo atacante ($request_body, $http_*, $arg_*, $uri, $ssl_preread_server_name, e assim por diante).

O que conta como vulnerável

O scanner sinaliza uma location ou server quando todos estes elementos caem em um único buffer de duas passagens, na ordem explorável:

  1. Origem da captura: um location ~ de regex, server_name ~, rewrite, if (... ~ ...), ou um map de regex com um grupo de captura.
  2. Gatilho de clobber: um map (http ou stream) com uma chave de correspondência de regex ~ ou ~*, referenciado por sua variável de saída.
  3. Sink de duas passagens usando tanto uma referência de captura quanto a variável de map de regex:
    • diretivas de valor único (return, set, add_header, proxy_method, proxy_pass, rewrite, index, e outras): ambas as referências no mesmo valor.
    • as famílias de param/header (proxy_set_header, proxy_set_body, fastcgi_param, scgi_param, uwsgi_param, grpc_set_header): estas constroem um buffer por requisição para toda a família, então as duas referências podem estar em diretivas separadas na mesma location.
  4. Ordem: a captura deve ser avaliada antes do map de regex. Um map de regex é executado uma vez e faz cache, então map-antes-da-captura lê um estado consistente e não é vulnerável. O scanner relata esses casos como liberados (seguro, mas frágil, não reordene).

Uso

# scan a single config (follows include directives by default)
python3 nginx_capture_clobber_scan.py /etc/nginx/nginx.conf

# scan a directory (uses nginx.conf if present, else all *.conf)
python3 nginx_capture_clobber_scan.py /etc/nginx/

# scan several roots
python3 nginx_capture_clobber_scan.py site-a.conf site-b.conf

# machine-readable output
python3 nginx_capture_clobber_scan.py /etc/nginx/nginx.conf --json

# do not expand include directives
python3 nginx_capture_clobber_scan.py /etc/nginx/nginx.conf --no-includes

Opções

OpçãoEfeito
--jsonEmite um relatório JSON em vez de texto.
--no-includesNão segue as diretivas include.

Códigos de saída

CódigoSignificado
0Nenhuma configuração vulnerável encontrada.
1Pelo menos uma configuração vulnerável encontrada.
2Erro de uso (nenhum caminho fornecido ou nenhum encontrado).

Utilizável em CI, pois uma configuração vulnerável retorna código de saída diferente de zero:

python3 nginx_capture_clobber_scan.py /etc/nginx/nginx.conf || echo "review needed"

Saída

O modo texto imprime, para cada achado: arquivo e linha, o escopo envolvente, a diretiva sink, as variáveis de captura e de mapa envolvidas, o mapa que disparou e um motivo em uma linha. Uma seção liberada lista coexistências de ordem segura. --json produz:

{
  "vulnerable": true,
  "findings": [
    {
      "file": "/etc/nginx/conf.d/api.conf",
      "line": 12,
      "scope": "location ~ ^/api/(.+)$",
      "directive": "proxy (family buffer)",
      "captures": ["$1"],
      "map_vars": ["$is_bot"],
      "triggers": ["$is_bot <- regex-map on $http_user_agent [nginx.conf:30]"],
      "reason": "..."
    }
  ],
  "cleared_safe_order": [],
  "regex_maps": [],
  "missing_includes": []
}

Corrigindo o que ele encontra

  1. Aplique o patch do fornecedor (nginx 1.30.4 stable / 1.31.3 mainline, NGINX Plus R36 P7 / 37.0.3.1). Esta é a única correção completa. O patch adiciona uma proteção de limite (ngx_http_script_check_length()) que impede a passagem VALUE de escrever além do buffer alocado, e calcula o comprimento da string retornada a partir dos bytes realmente escritos em vez da medição da passagem LEN, fechando tanto a direção de overflow quanto a de vazamento de informações.
  2. Endurecimento de configuração provisório (defesa em profundidade, não um substituto para o patch):
    • Não referencie uma variável map de regex no mesmo local ou buffer que uma referência $1 a $9 ou de captura nomeada.
    • Não reutilize o mesmo grupo (?P<name>...) em múltiplos maps de regex.
    • Mantenha referências de captura e referências de map de regex fora da mesma família proxy_set_header ou fastcgi_param.

Limitações

  • Análise estática: ele lê a configuração, não o comportamento em tempo de execução. Não consegue resolver valores produzidos por variáveis definidas dinamicamente via set.
  • Alvos de include ilegíveis (por exemplo, caminhos absolutos que não existem localmente) são reportados em missing_includes, não ignorados silenciosamente. Execute-o no host onde a configuração é resolvida para cobertura completa.
  • Um acerto de captura-antes-do-map sinalizado pode ser neutralizado em tempo de execução se essa variável de map já tiver sido avaliada anteriormente na mesma requisição (ela já estaria em cache). O scanner ainda reporta esses casos, o que é a escolha conservadora para uma auto-verificação de segurança.

Referência

Análise da vulnerabilidade e cadeia de exploração: https://cyberstan.co.uk/nginx-rce/

Baixar ferramenta