Junos OS: EX and SRX Series: A PHP vulnerability in J-Web allows an unauthenticated to control an important environment variable
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.
Resumo
Falha crítica pré-autenticação no componente J-Web (interface web de administração) do Junos OS em equipamentos EX Series e SRX Series da Juniper. Um atacante sem credenciais e com acesso de rede à interface J-Web consegue controlar a variável de ambiente PHPRC do interpretador PHP, alterando o arquivo de configuração php.ini efetivamente usado pelo processo — o que abre caminho para execução de código arbitrário no dispositivo. Está no catálogo KEV da CISA por exploração confirmada em campo, e é frequentemente encadeada com outras CVEs do mesmo boletim (2023-36846/36847) para virar RCE completo sem qualquer autenticação.
Detalhamento técnico
O CWE associado é CWE-473 (PHP External Variable Modification). O problema está na forma como a stack web do J-Web (front-end nginx/Apache repassando requisições ao PHP-FPM) processa parâmetros da requisição HTTP e os expõe como variáveis de ambiente para o interpretador PHP, sem restringir quais nomes de variável podem ser definidos pelo cliente. Entre essas variáveis está PHPRC, que o próprio PHP usa para localizar o arquivo php.ini a carregar na inicialização do interpretador.
Controlando PHPRC, o atacante consegue apontar o PHP para um arquivo de configuração diferente do legítimo — inclusive um arquivo que ele mesmo influencia via outros vetores da requisição (por exemplo, dados de sessão PHP). Diretivas de php.ini como auto_prepend_file permitem instruir o interpretador a incluir e executar um arquivo PHP arbitrário antes de qualquer script normal ser processado, e é esse mecanismo que pesquisadores demonstraram publicamente ser suficiente para chegar a execução de código, sem depender de vulnerabilidade adicional de upload de arquivo.
O Juniper descreve a falha isoladamente como 'PHP External Variable Modification', mas o boletim oficial (JSA72300) publica CVE-2023-36845 junto com outras três CVEs relacionadas (CVE-2023-36844, CVE-2023-36846, CVE-2023-36847) do mesmo componente J-Web, deixando claro que o fornecedor tratou o conjunto como uma cadeia de exploração pré-auth para RCE completo, mesmo quando cada CVE individual descreve um passo específico da cadeia.
Como é explorada
O vetor é uma requisição HTTP crafted contra a interface J-Web exposta na rede — não exige autenticação, cookie de sessão válido nem configuração não padrão além do próprio J-Web estar habilitado e acessível. A pré-condição real de risco é essa: dispositivos com J-Web desabilitado ou acessível apenas por management network isolada não são explorável remotamente por este vetor, mesmo com versão vulnerável instalada.
A exploração combina o controle de PHPRC com técnicas para influenciar o conteúdo de um arquivo que o PHP passa a interpretar como php.ini (ou diretamente como script via auto_prepend_file), permitindo injeção e execução de código PHP no contexto do processo J-Web, que roda com privilégios elevados no dispositivo. Isso é consistente com o CVSS 9.8 (AV:N/AC:L/PR:N/UI:N) — sem interação do usuário, complexidade de ataque baixa, comprometimento total de confidencialidade, integridade e disponibilidade.
A presença no catálogo KEV da CISA confirma exploração ativa em ambiente real, e a disponibilidade de módulo Metasploit, template Nuclei e PoC pública reduz a barreira técnica para qualquer atacante automatizar o ataque em massa contra dispositivos expostos à internet.
Versões
Como se proteger
A correção definitiva é atualizar para as versões fixas publicadas pela Juniper, específicas por branch: 20.4R3-S9, 21.2R3-S7, 21.3R3-S5, 21.4R3-S5, 22.1R3-S4, 22.2R3-S2, 22.3R2-S2/22.3R3-S1, 22.4R2-S1/22.4R3, 23.2R1-S1/23.2R2 (branch 21.1 não recebeu fix específico citado pelo fornecedor — verificar orientação do JSA72300 para esse trem).
Quando o patch não é aplicável de imediato, o paliativo real publicado pela Juniper é desabilitar o J-Web ou restringir seu acesso apenas a hosts de gerenciamento confiáveis (via ACL/firewall filter na interface de management), eliminando a superfície de rede necessária para o ataque — isso neutraliza o vetor mesmo em versão vulnerável, ao custo de perder a administração via interface web. Não existe mitigação eficaz que mantenha J-Web exposto à internet sem patch: regras de WAF genéricas não cobrem de forma confiável a manipulação de variável de ambiente PHPRC porque o problema está na camada de repasse de parâmetros ao interpretador, não em um payload de assinatura fixa.
Como detectar
Não há, nas fontes consultadas, uma assinatura de log oficial publicada pela Juniper para detecção confiável desta exploração específica. Como indicador geral, requisições HTTP/HTTPS anômalas dirigidas à interface J-Web contendo parâmetros que tentam definir variáveis de ambiente (padrão associado a PHPRC) ou tráfego incomum para endpoints PHP do J-Web partindo de IPs não administrativos merecem investigação; a presença de módulo Metasploit e template Nuclei públicos sugere que scanners automatizados podem gerar padrões de requisição repetitivos identificáveis em logs de acesso web do dispositivo, mas nenhuma assinatura única e confirmada foi documentada nas fontes revisadas.