← voltar
CVE-2025-20281criticalsob ataqueCWE-74

Cisco ISE API Unauthenticated Remote Code Execution Vulnerability

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 10epss 97%
da publicação à arma2 dias
Publicada no NVD25 de jun.
1ª PoC+2d
CISA KEV+33d
probabilidade de exploração
97%top 1% das CVEs
exploração observada
simCISA + VulnCheck
7 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2025-08-18

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Resumo

Falha crítica (CVSS 10.0) no Cisco ISE e ISE-PIC que permite execução remota de código como root sem autenticação, através de uma API interna usada para configuração de túneis IPsec/StrongSwan. Está no catálogo KEV da CISA com exploração confirmada e PoC pública — qualquer instância exposta nas versões afetadas deve ser tratada como comprometida ou a um passo de sê-lo.

Detalhamento técnico

A falha está no método enableStrongSwanTunnel da classe DescriptionRegistrationListener, exposto via endpoint /deployment-rpc/enableStrongSwanTunnel. O endpoint aceita um array de String Java serializado como corpo da requisição POST, sem autenticação. Pesquisadores da ZDI (Kentaro Kawane, GMO Cybersecurity by Ierae, e Bobby Gould) identificaram duas falhas distintas no mesmo método: uma deserialização de dados não confiáveis (o achado original reportado à ZDI) e uma injeção de comando (CWE-74) que a Cisco tratou inicialmente sob o mesmo CVE-2025-20281 antes de desdobrar parte da correção em CVE-2025-20337.

O primeiro elemento do array desserializado é passado como parâmetro IKE_ID para a função invokeStrongSwanShellScript, que monta e executa um comando via sudo chamando o script configureStrongSwan.sh com privilégios de root. O valor do IKE_ID, totalmente controlado pelo atacante, é concatenado na construção do comando sem sanitização.

A exploração inicial não é trivial porque a chamada exec() do Java 8 usa a classe StringTokenizer para dividir o comando em argumentos, e essa classe não respeita aspas nem backticks — ela simplesmente separa por espaços/tabs. Isso quebra tentativas ingênuas de injeção com espaços e aspas, porque o shell recebe o payload já fragmentado em múltiplos argumentos pelo Java antes mesmo de chegar ao bash. O atacante contorna isso substituindo espaços pela variável de ambiente ${IFS} do bash, forçando o Java a tratar o payload inteiro como um único token que, ao chegar no shell, é interpretado corretamente como comando único.

A execução inicial do comando injetado ocorre dentro de um container Docker (strongswan-container) e não diretamente no host — a ZDI documentou uma técnica adicional de escape de container para obter shell root na máquina hospedeira do ISE, elevando o impacto de comprometimento do container para comprometimento total do appliance.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
A vulnerability in a specific API of Cisco ISE and Cisco ISE-PIC could allow an unauthenticated, remote attacker to execute arbitrary code on the underlying operating system as root. The attacker does not require any valid credentials to exploit this vulnerability. This vulnerability is due to insufficient validation of user-supplied input. An attacker could exploit this vulnerability by submitting a crafted API request. A successful exploit could allow the attacker to obtain root privileges on an affected device.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.