Logo após a descoberta de 18 anos de um RCE potencial, foi descoberta outra, CVE-2026-9256, desta vez existente há ainda mais tempo — 21 anos, desde a versão 0.1.17, lançada no início de 2005.
Para explorar a vulnerabilidade, é necessário que o arquivo de configuração do servidor contenha a diretiva rewrite, onde:
- o primeiro argumento contém parâmetros de expressão regular sobrepostos,
- no segundo utiliza-se dois ou mais deles, mas não são usadas variáveis,
- neste caso, ou está especificado o tipo "redirect", ou os parâmetros no segundo argumento aparecem após o sinal de interrogação.
Exemplos:
rewrite ^\/((.*))$ http:\/\/127.0.0.1:8080\/$1$2 redirect;
rewrite ^\/((.*))$ http:\/\/127.0.0.1:8080\/?$1$2;
Ambos causarão um estouro de buffer ao processar a requisição "\/++++++++++++++++++++++++++++++".
Como na vulnerabilidade anterior, neste caso o comprimento calculado do buffer pode não corresponder à real quantidade de dados gravados nele — ao calcular o comprimento, nem sempre foram considerados possíveis escapes.
O que foi descrito acima pode levar a uma falha no processo de trabalho do nginx, e na ausência de ALSR — a um RCE. Como atenuante, pode-se notar que há uma ainda menor probabilidade de encontrar construções vulneráveis no arquivo de configuração, do que na última vez.
O erro foi corrigido nas versões 1.30.2 e 1.31.1 (commit de correção).
Fonte: linux.org.ru
