Foi gerada a versão principal do nginx 1.31.0, na qual continuam a ser desenvolvidas novas funcionalidades, enquanto a versão estável paralela do nginx 1.30.1 é mantida com apenas correções relacionadas a erros críticos e vulnerabilidades. Nas atualizações, foram corrigidas 6 vulnerabilidades, sendo a mais crítica aquela que permite a execução remota de código através do envio de uma solicitação HTTP especificamente formatada. Para angie e freenginx, no momento da redação da notícia, as correções não foram publicadas.
A vulnerabilidade (CVE-2026-42945), classificada como crítica, é causada por um overflow de buffer no módulo ngx_http_rewrite_module, que pode ser explorado para executar código com os direitos do processo do nginx através do envio de uma solicitação HTTP com um URI especificamente formatado. O problema se manifesta em configurações com a diretiva "rewrite", onde padrões regulares utilizam variáveis não nomeadas (por exemplo, $1 e $2), desde que a string de substituição contenha o símbolo "?". Exemplo de construção vulnerável: rewrite ^\/users\/([0-9]+)\/profile\/(.*)$ \/profile.php?id=$1&tab=$2 last;
Expressões com substituições nomeadas não estão sujeitas à vulnerabilidade. Por exemplo, a vulnerabilidade não afeta construções: rewrite ^\/users\/(?[0-9]+)\/profile\/(?
A vulnerabilidade está presente desde a versão 0.6.27, lançada em março de 2008. A origem da vulnerabilidade foi o fato de que o buffer foi alocado com a expectativa de que dados não escapados fossem gravados nele, enquanto na verdade foram copiados dados após a execução da escape de caracteres especiais, cuja dimensão era maior, pois cada símbolo "+", "%" e "&" era codificado em três bytes em vez de um. Essa discrepância ocorreu porque, ao ter o símbolo "?" na regra de rewrite, o sinalizador "e->is_args" era ativado, que ativava o escape, mas a alocação do buffer era feita com o sinalizador desativado, onde o escape não era aplicado.
Outras vulnerabilidades:
- CVE-2026-42926 — possibilidade de injeção de dados do atacante na solicitação proxy ao usar a diretiva "proxy_set_body" e se conectar ao backend via HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 — acesso à memória após sua liberação (use-after-free) no módulo ngx_http_ssl_module, que ocorre ao processar respostas do servidor DNS em configurações com a diretiva «ssl_ocsp».
- CVE-2026-42946 — leitura fora dos limites do buffer nos módulos ngx_http_uwsgi_module e ngx_http_scgi_module, que ocorre ao processar uma resposta formatada especificamente. O problema pode levar ao vazamento de conteúdo da memória do processo de trabalho ou à sua falha.
- CVE-2026-42934 — leitura fora dos limites do buffer no processo de trabalho, que ocorre ao processar respostas com decodificação de codificação UTF-8 usando a diretiva «charset_map». O problema pode levar ao vazamento de conteúdo da memória do processo de trabalho ou à sua falha.
- CVE-2026-40460 — vulnerabilidade na implementação do protocolo HTTP/3, que possibilita spoofing endereços IP para contornar a autorização ou restrições.
Melhorias adicionadas na versão nginx 1.31.0:
- O módulo ngx_http_tunnel_module foi incluído, que implementa a capacidade de atuar como um proxy («forward proxy»), redirecionando solicitações para outro servidor ao receber solicitações do cliente usando o método HTTP/1.1 CONNECT. É possível configurar a autenticação para o acesso ao proxy, utilizando as diretivas «auth_basic», «satisfy» e «auth_delay».
- No bloco «upstream» foi adicionada a diretiva «least_time», incluindo o método de balanceamento de carga que encaminha a solicitação servidor com o menor tempo médio de resposta e o menor número de conexões ativas.
- Na diretiva «stream_proxy» foi adicionada a diretiva «proxy_ssl_alpn» para definir a lista de protocolos permitidos na extensão ALPN ao se conectar ao servidor proxy. Por exemplo: «proxy_ssl_alpn h2 http/1.1».
- Foi garantida a rejeição de solicitações nos protocolos HTTP/2 e HTTP/3 que incluem os cabeçalhos «Connection», «Proxy-Connection», «Keep-Alive», «Transfer-Encoding», «Upgrade».
- No módulo ngx_http_dav_module, foi garantida a rejeição de solicitações COPY e MOVE com o mesmo recurso de origem e destino ou coleções aninhadas.
- O nível de log de erros SSL «invalid alert», «record layer failure» e «SSL alert number N» foi reduzido de «crit» para «info».
- No script configure foi adicionado o parâmetro «—without-http_upstream_sticky_module» para desativar a construção do módulo http_upstream_sticky_module (o parâmetro «—without-http_upstream_sticky» foi declarado obsoleto).
Adicional: Exploit disponível para a vulnerabilidade RCE no ngx_http_rewrite_module.
Fonte: opennet.ru
