← back
CVE-2023-36845criticalunder attackCWE-473

Junos OS: EX and SRX Series: A PHP vulnerability in J-Web allows an unauthenticated to control an important environment variable

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 94%
from disclosure to weapon0 days
Published on NVDAug 17
1st PoCApr 26
metasploitAug 17
CISA KEV+88d
exploitation probability
94%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
40 public exploit(s)
Action required by CISAfederal deadline: 2023-11-17

Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.

Summary

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.

Technical detail

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.

How it’s exploited

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.

Versions

Affected
Junos OS em EX Series e SRX Series: todas as versões anteriores a 20.4R3-S9; 21.1 (todas as versões a partir de 21.1R1); 21.2 anteriores a 21.2R3-S7; 21.3 anteriores a 21.3R3-S5; 21.4 anteriores a 21.4R3-S5; 22.1 anteriores a 22.1R3-S4; 22.2 anteriores a 22.2R3-S2; 22.3 anteriores a 22.3R2-S2 e 22.3R3-S1; 22.4 anteriores a 22.4R2-S1 e 22.4R3; 23.2 anteriores a 23.2R1-S1 e 23.2R2.
Fixed in
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. O boletim oficial (JSA72300) deve ser consultado para status exato do branch 21.1.

How to protect

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.

How to detect

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.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
A PHP External Variable Modification vulnerability in J-Web of Juniper Networks Junos OS on EX Series and SRX Series allows an unauthenticated, network-based attacker to remotely execute code. Using a crafted request which sets the variable PHPRC an attacker is able to modify the PHP execution environment allowing the injection und execution of code. This issue affects Juniper Networks Junos OS on EX Series and SRX Series: * All versions prior to 20.4R3-S9; * 21.1 versions 21.1R1 and later; * 21.2 versions prior to 21.2R3-S7; * 21.3 versions prior to 21.3R3-S5; * 21.4 versions prior to 21.4R3-S5; * 22.1 versions prior to 22.1R3-S4; * 22.2 versions prior to 22.2R3-S2; * 22.3 versions prior to 22.3R2-S2, 22.3R3-S1; * 22.4 versions prior to 22.4R2-S1, 22.4R3; * 23.2 versions prior to 23.2R1-S1, 23.2R2.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
public PoCs found40
githubgithub.com/vulncheck-oss/cve-2023-36845-scanner62githubgithub.com/kljunowsky/CVE-2023-3684555githubgithub.com/Asbawy/Automation-for-Juniper-cve-2023-3684519githubgithub.com/ak1t4/CVE-2023-368455githubgithub.com/cyberh3als/CVE-2023-36845-POC4githubgithub.com/zaenhaxor/CVE-2023-368453githubgithub.com/0xNehru/CVE-2023-36845-Juniper-Vulnerability1githubgithub.com/simrotion13/CVE-2023-368451githubgithub.com/jahithoque/Juniper-CVE-2023-36845-Mass-Hunting1githubgithub.com/halencarjunior/CVE-2023-368451githubgithub.com/e11i0t4lders0n/CVE-2023-368451githubgithub.com/cyb3rzest/Juniper-Bug-Automation-CVE-2023-368450githubgithub.com/Vignesh2712/Automation-for-Juniper-cve-2023-368450githubgithub.com/kopfjager007/CVE-2023-368450githubgithub.com/iveresk/CVE-2023-36845-6-0githubgithub.com/P4x1s/ansible-cve-2023-368450githubgithub.com/CharonDefalt/Juniper-exploit-CVE-2023-368450githubgithub.com/ifconfig-me/CVE-2023-368450vulncheckvulncheck.com/xdb/a2f2dd7e0a50unverifiedvulncheckvulncheck.com/xdb/23f413cb1c62unverifiedvulncheckvulncheck.com/xdb/6ab01cd57d8eunverifiedcve_referencepacketstormsecurity.com/files/174865/Juniper-SRX-Firewall-EX-Switch-Remote-Code-Execution.htmlunverifiedvulncheckvulncheck.com/xdb/19b6c8bddf2dunverifiedcve_referencepacketstormsecurity.com/files/176969/Juniper-SRX-Firewall-EX-Switch-Remote-Code-Execution.htmlunverifiedvulncheckvulncheck.com/xdb/3fdde8c21f6eunverifiedvulncheckvulncheck.com/xdb/db1e7b347773unverifiedvulncheckvulncheck.com/xdb/fcb027407d46unverifiedvulncheckvulncheck.com/xdb/861198e6f367unverifiedvulncheckvulncheck.com/xdb/549b4b2e791eunverifiedvulncheckvulncheck.com/xdb/eb307a27c46cunverifiedvulncheckvulncheck.com/xdb/7f3ac2cfdf5aunverifiedvulncheckvulncheck.com/xdb/f6208bcc8206unverifiedvulncheckvulncheck.com/xdb/4fae7ca850e5unverifiedvulncheckvulncheck.com/xdb/c5b62df0eae0unverifiedvulncheckvulncheck.com/xdb/f715efbe5fe8unverifiedvulncheckvulncheck.com/xdb/40881a555da5unverifiedvulncheckvulncheck.com/xdb/f2e8c180103funverifiedvulncheckvulncheck.com/xdb/bea8d1e01668unverifiedvulncheckvulncheck.com/xdb/f1599fa5e102unverifiedvulncheckvulncheck.com/xdb/539fa0525155unverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.