← volver
CVE-2025-20281criticalbajo ataqueCWE-74

Cisco ISE API Unauthenticated Remote Code Execution Vulnerability

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 10epss 97%
de la publicación al arma2 días
Publicada en NVD25 jun
1ª PoC+2d
CISA KEV+33d
probabilidad de explotación
97%top 1% de las CVE
explotación observada
CISA + VulnCheck
7 exploit(s) público(s)
Acción exigida por CISAplazo 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.

Resumen

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.

Detalle 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.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
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 evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.