Deep Dive: Überlegungen zum neuen Produkt von Juniper: Cloud Workload Protection

Am 3. August 2021 hat Juniper ein Sicherheitsprodukt angekündigt, das ich eigentlich von diesem Unternehmen nicht erwartet hätte: Juniper Cloud Workload Protection.

  #Juniper Networks   #Network as a Service   #Deep Dive  
Remi Locherer

remi.locherer@umb.ch

Der Juniper Blogartikel [0] besagt, dass die Cloud Workload Protection Anwendungen vor den «OWASP Top 10» [1] Sicherheitsrisiken für Webanwendungen schützen kann. Um diese Risiken zu mindern, wird oft eine Web Application Firewall (WAF) eingesetzt. Im Datenblatt [2] wird auch erwähnt, dass das Produkt mit containerisierten Anwendungen funktioniert, und es werden verschiedene unterstützte Programmiersprachen und Laufzeiten aufgeführt. Zu meiner Überraschung sind die beliebten Sprachen Python und GO nicht in dieser Liste enthalten.

Eine weitere Eigenschaft, die dieses neue Produkt bieten soll, hat meine Aufmerksamkeit erregt: die Verhinderung von speicherbasierten Angriffen, einschliesslich solcher, die auf Pufferüberläufen und ROP-Techniken basieren. Während meiner Studienzeit habe ich mich mit einfachen Pufferüberläufen beschäftigt und glaube deshalb zu wissen, wie sie funktionieren. Vor ein paar Jahren lernte ich dann auch die ROP-Technik kennen. Todd Mortimer vom OpenBSD-Projekt härtete OpenBSD gegen diese Angriffstechnik und erklärte seine Arbeit in Vorträgen auf BSD-Konferenzen [3]. Er schrieb auch eine Abhandlung über seine Arbeit [4].

ROP steht für «Return Oriented Programming» was man auf Deutsch mit «rücksprungorientierte Programmierung» wiedergeben könnte [5]. Moderne Prozessoren und Betriebssysteme mit Unterstützung für das NX-Bit [6] können verhindern, dass ein Angreifer Code ausführt, den er eingeschleust hat. Das NX-Bit sorgt dafür, dass Speicherseiten, die beschreibbar sind, nicht ausgeführt werden können. Um dies zu umgehen, verwenden Angreifer Codefunktionen, die bereits im Speicher vorhanden sind. Dann ketten sie diese Funktionen (Gadgets genannt) aneinander - in der Regel mit dem Ziel, sich eine Shell zu verschaffen, mit der sie das System kontrollieren können. Damit dies funktioniert, muss ein Angreifer in der Lage sein, den Stack zu ändern und den Kontrollfluss des Programms zu manipulieren. Das Auffinden von Gadgets im Speicher ist nicht schwer, da gute Tools für diesen Zweck leicht zu finden sind. Die Verteidigungsmethode, die Todd Mortimer in OpenBSD angewendet hat, reduziert die Anzahl der Gadgets erheblich.

Vor diesem Hintergrund war ich gespannt zu erfahren, welche Methode Juniper verwendet, um ROP-basierte Angriffe zu stoppen. Aber ich wurde enttäuscht: Ich konnte keine technische Dokumentation auf Junipers Website finden. Es sieht so aus, als ob das Juniper Marketingteam schneller ist, als die Autoren der technischen Dokumentation.

Bei der weiteren Suche bin ich über einen Artikel auf packetpushers.net [7] gestossen. Das Juniper Cloud-Workload-Protection-Produkt ist eigentlich nicht von Juniper, sondern von deren Partner K2 Cyber Security [8]. Anscheinend hat Juniper die Integration von vSRX mit der K2-Lösung im März 2021 demonstriert [9]. Auch auf der K2-Website fand ich aber keine technische Dokumentation. Allerdings bietet K2 einige Whitepapers, Webinare und Videos an. Die meisten dieser Materialien können nur registrierte Benutzer anschauen. Die kurzen Einführungsvideos sind jedoch ohne Hindernisse zugänglich.

So habe ich mich auf der K2-Website für die 30-tägige Testversion registriert und nach ein paar Tagen und einigen E-Mails Zugang erhalten. Ich bekam ein Konto auf der webbasierten Manageranwendung von K2. Dort fand ich auch eine Installationsanleitung. Ich entschied mich für die VM/Node-Variante, die Docker benötigt, um den Agenten in einem Container auszuführen.

Network as a Service

Sehen Sie, wie wir Unternehmen mit unseren Netzwerkberatungsdiensten helfen.


Um die Software zu testen, habe ich eine Ubuntu-VM installiert. Eigentlich wollte ich den K2-Agenten mit NextCloud ausprobieren, das ich per Snap in der Ubuntu-VM installierte. Da ich nicht herausfinden konnte, wie der K2-Agent-Installer mit einer snap-basierten Installation funktioniert, änderte ich meinen Plan und installierte die PHP-basierte Anwendung Baikal [10] mit nginx und php-fpm. Der PHP Language Agent ändert dann die php.ini, um Erweiterungen von K2 einzubinden. Danach sendet der K2-Agent Telemetriedaten an den cloudbasierten K2-Manager. Dort ist nun sichtbar, dass der Prozess «/usr/sbin/php-fpm7.4» geschützt ist.

Neben PHP gibt es auch sprachspezifische Agenten für Java, Node.js und Ruby. Wie bereits erwähnt, war ich überrascht, dass keine Agenten für beliebte Sprachen wie Python oder Go verfügbar sind. Aber mir wurde gesagt, dass bald mehr Programmiersprachen unterstützt werden sollen.

Das Installationsskript hat mir nicht besonders gut gefallen. Ich hätte mir eine ordentliche Dokumentation gewünscht, die erklärt, dass die K2-PHP-Erweiterung geladen werden muss, und wie sie mit dem Agenten, der im Docker-Container läuft, kommuniziert. Damit sollte es auch möglich sein, die Snap-basierte NextCloud-Installation zu schützen.

Mit diesem Wissen würde ich das Produkt aus zwei nichttechnischen Gründen nicht empfehlen:

  1. Die technische Dokumentation ist auf der Website von K2 sehr spärlich und ich konnte sie auf juniper.net gar nicht finden. (Geprüft Ende August 2021).
  2. Die Bedingungen des kostenlosen Testprogramms verbieten das Testen oder Reverse-Engineering um Einschränkungen oder Schwachstellen des Produkts zu finden (Screenshot abgerufen am 13. August).

Der letzte Punkt ist das genaue Gegenteil eines Bug-Bounty-Programms und passt nicht zu einer Sicherheitssoftware. Ausserdem möchte ich wissen, wie sich das Produkt auf die Leistung meiner Anwendung auswirkt. Um Leistungseinschränkungen zu ermitteln, muss es möglich sein, angemessene und gründliche Tests durchzuführen.

Ich hoffe, dass diese Probleme in Zukunft beseitigt werden, da der Problembereich, den K2 anspricht, sehr interessant ist und viele Anwendungen von derartigem Schutz profitieren könnten.

Hier noch zwei weitere Gedanken, die mir zu diesem Thema einfallen:

  • Warum hat Juniper K2 nicht gekauft, wenn sie von der Qualität dieses Produkts überzeugt sind?
  • Warum hat Juniper keinen besseren Namen gefunden. «Cloud Workload Protection» wirkt sehr sperrig und lässt sich nicht gut in Gesprächen verwenden. Aber das ist wohl nur eine Frage des persönlichen Geschmacks.

 

[0] https://blogs.juniper.net/en-us/security/connecting-and-protecting-applications-within-a-zero-trust-data-center-architecture-with-juniper-cloud-workload-protection

[1] https://owasp.org/www-project-top-ten/

[2] https://www.juniper.net/content/dam/www/assets/datasheets/us/en/security/cloud-workload-protection.pdf

[3] https://www.youtube.com/watch?v=ZvSSHtRv5Mg

[4] https://www.openbsd.org/papers/asiabsdcon2019-rop-paper.pdf

[5] https://en.wikipedia.org/wiki/Return-oriented_programming

[6] https://en.wikipedia.org/wiki/NX_bit

[7] https://packetpushers.net/new-juniper-software-aims-to-protect-applications-against-exploitable-vulnerabilities/

[8] https://www.k2io.com/

[9] [10] https://sabre.io/baikal/