
Analyse der Schwachstelle CVE-2019-9745.
Kreativität steht im Mittelpunkt des Penetrationstests, was unsere Arbeit interessant hält. Eine Falle ist jedoch die Tendenz, Angriffsszenarien zu 'überkonstruieren' und sich ausschließlich auf Bugs (Fehlerzustände) zu konzentrieren. Fehler (unbeabsichtigtes Verhalten) können jedoch ebenfalls vorhanden sein und ebenso verheerende Auswirkungen haben. Dieser Artikel liefert eine Fallstudie, um die Bedeutung des Pentestings für solche Fehler zu demonstrieren. Gleichzeitig plädiert er für die Anwendung eines SDLC-Prozesses (Secure Development Lifecycle).
Der Artikel ist Teil der RD (verantwortungsvolle Offenlegung) der Schwachstelle CVE-2019-9745 und wurde in enger Zusammenarbeit mit dem Hersteller CloudCTI verfasst. Er gibt einen Überblick auf hoher Ebene über die Schwachstelle, bevor er in die technischen Details eintaucht. Nach der Demonstration der Ausnutzung der Schwachstelle folgt eine Schlussfolgerung mit den gewonnenen Erkenntnissen.
Das CloudCTI Recognition Configuration Tool, das wir während eines unserer Penetrationstests untersucht haben, dient dazu, Informationen aus CRM-Software (Customer Relationship Management) abzurufen. Dies versorgt das Callcenter-Personal während Kundenanrufen mit relevanten Informationen. Es wurden mehrere Probleme identifiziert, die miteinander verknüpft werden können, um das lokale System vollständig zu kompromittieren. Der Hersteller betont, dass dies weder Systeme anderer Kunden noch die eigenen Systeme betrifft.
Wie bei vielen Sicherheitsschwachstellen liegt ein wichtiges Problem in der Validierung von Daten, die außerhalb des eigenen Einflussbereichs entstehen. Ebenso wichtig ist die Erkenntnis, dass Systeme und Software in feindlichen Umgebungen betrieben werden. Zeit und Erfahrung haben uns gelehrt, dass Abhören eine Bedrohung im Internet darstellt. Gleiches gilt jedoch auch für andere Kommunikationskanäle, selbst innerhalb eines Systems. Dies war maßgeblich an der Entdeckung der Schwachstelle beteiligt.
Eine Ursachenanalyse der aufgetretenen Probleme zeigt die Bedeutung von Praktiken wie TM (Bedrohungsmodellierung). TM hilft dabei, Risiken in den frühen Phasen von Design und Entwicklung zu identifizieren. Dies kann zur Minderung nicht akzeptabler Risiken oder zu Neugestaltung/Neuimplementierung führen. Obwohl der Leser ermutigt wird, eine eigene Analyse durchzuführen, werden die Gegenmaßnahmen des Herstellers als Referenz beschrieben.
Die Software des Herstellers besteht aus vier Anwendungen, die zusammenarbeiten. Die erste Anwendung ist die grafische Benutzeroberfläche (GUI). Diese ermöglicht es dem Benutzer, den Abruf von Informationen aus mehreren CRM-Softwarepaketen zu starten:
Die GUI delegiert den Informationsabruf an einen Dienst (die zweite Anwendung), indem sie eine Nachricht sendet. Die ersten Sicherheitsprobleme zeigen sich hier: Nicht nur kann jeder auf dem System die Nachrichten zwischen der GUI und dem Dienst beobachten, um deren Format und Inhalt zu ermitteln (was die Vertraulichkeit beeinträchtigt), sondern auch eigene Nachrichten senden (was die Autorisierung beeinträchtigt). Darüber hinaus wird die Quelle der Nachrichten an den Dienst nicht verifiziert (was die Nichtabstreitbarkeit beeinträchtigt). In der STRIDE-Bedrohungsmodellierung bedeutet dies, dass das System anfällig für Informationsoffenlegung und Manipulation ist. Tatsächlich waren die aus diesen Nachrichten gewonnenen Informationen maßgeblich an der Entdeckung der Schwachstelle beteiligt.
Die dritte Anwendung ist einer von vielen spezialisierten Importeuren. Der Dienst lagert den Informationsabruf für ein bestimmtes CRM-Paket an einen bestimmten Importeur aus. Die von der GUI gesendete Nachricht enthält spezifische Anweisungen für diesen Importeur. Betrachtet man den Exquise-CRM-Importeur, stellt sich heraus, dass der Informationsabruf weiter an eine externe (vierte) Anwendung delegiert wird. Bei der Untersuchung der internen Logik des Importeurs wurde entdeckt, dass die externe Anwendung in der Nachricht zwischen GUI und Dienst angegeben werden konnte. Das Problem, das sich hier zeigt, ist, dass die externe Anwendung ausgeführt wird, ohne ihre Identität zu verifizieren (was die Nichtabstreitbarkeit beeinträchtigt).
Durch die Verkettung dieser Probleme konnten wir Nachrichten abhören, um deren Format zu ermitteln, und eine Nachricht senden, in der wir unsere eigene bösartige externe Anwendung angeben. Diese externe Anwendung wird mit den gleichen Rechten wie der Importeur/Dienst ausgeführt. Da diese Rechte die höchsten im System möglichen sind, wird vollständige Kontrolle erlangt und das System ist kompromittiert.
Der Hersteller entschärft diese Probleme, indem er die Nachrichten verschlüsselt (was das Vertraulichkeitsproblem entschärft) und dabei eindeutige gemeinsame Geheimnisse verwendet (was das Autorisierungsproblem entschärft), auf die nur die authentifizierten Systembenutzer zugreifen können, die sie besitzen (was das erste Nichtabstreitbarkeitsproblem entschärft). Schließlich wird die externe Anwendung kryptografisch signiert (was das zweite Nichtabstreitbarkeitsproblem entschärft). Die Kombination dieser Maßnahmen entschärft die Schwachstelle erfolgreich.
Wenn die GUI-Anwendung CloudCTI Recognition Configuration Tool (C:\Program Files (x86)\CloudCTI Recognition Configuration Tool\CloudCTI Recognition Configuration Tool.exe) installiert ist, wird sie mit Process Explorer untersucht. Dabei zeigt sich, dass ein Begleitdienst (Recognition Update Client Service) installiert und mit NT AUTHORITY\SYSTEM-Rechten ausgeführt wird:
Bei der Untersuchung der Dienstprogrammdatei (C:\Program Files (x86)\CloudCTI Recognition Configuration Tool\RUCS\RecognitionUpdateClientServiceService.exe) wird deutlich, dass sie mit der Programmiersprache .NET entwickelt wurde. Diese kann mit dnSpy dekompiliert werden, um Einblick in ihre interne Logik zu erhalten, die im Folgenden detailliert beschrieben wird.