BLOG

Warum ML für eine effektive API-Sicherheit unverzichtbar ist

F5 Miniaturansicht
F5
Veröffentlicht am 26. August 2020

Im letzten Jahrzehnt hat das Streben nach schnelleren Entwicklungszyklen, hoher Verfügbarkeit, selektiver Skalierung nach Bedarf und Entkopplung im Allgemeinen technologieorientierte Unternehmen zur Microservices-Architektur geführt. Dies führte dazu, dass viele sichere Funktionsaufrufe in monolithischer Software zu API-Aufrufen zwischen Mikrodiensten über unsichere Netzwerke wurden. Das heißt, dieser Übergang löste zwar viele betriebliche und geschäftliche Herausforderungen, brachte aber auch einige neue Sicherheitsherausforderungen mit sich.

Die Sicherheitslage wird durch die Verbreitung von Open-Source-Software, Containerisierung und Infrastructure-as-Code (IaC) verschärft. Da das Onboarding oder Ändern eines Microservices eine 15-minütige Aufgabe sein kann, haben Sicherheitsteams möglicherweise nicht rechtzeitig die Gelegenheit, die Sicherheit der Microservices richtig zu analysieren. Die Einführung einer umfassenden Sicherheitsbewertung als Gating-Phase in Bereitstellungspipelines stößt beim DevOps-Team fast immer auf negative Resonanz. Selbst wenn es gelingen sollte, die Bereitstellung effizient zu steuern, können viele Sicherheitsprobleme – insbesondere Laufzeitangriffe – zum Zeitpunkt der Bereitstellung nicht erkannt werden.

Sicherheit ist nicht mehr dasselbe

Während Entwickler und DevOps-Teams gute Gründe haben, die Umstellung auf Microservices positiv zu begrüßen, haben Sicherheitsteams zunehmend Mühe, mit der wachsenden Zahl von APIs, den sich ändernden API-Definitionen und -Verhaltensweisen, dem Mangel an API-Dokumentation (insbesondere bei Open-Source-Komponenten), den unterschiedlichen Protokollen und Payload-Strukturen Schritt zu halten. Da mittlerweile viele interne Funktionsaufrufe zwischen Modulen zu API-Aufrufen zwischen Mikrodiensten geworden sind, ist die Angriffsfläche explodiert und die Verwaltung der Sicherheit wurde sehr schnell zu einer überwältigenden Herausforderung.

Selbst in einer Microservices-Umgebung mittleren Maßstabs ist das Definieren und Pflegen einer Liste mit normalem und akzeptablem Verhalten für jeden API-Endpunkt vor der Bereitstellung oder Aktualisierung eines Microservices äußerst schwierig, wenn nicht gar unmöglich. Hierzu gehört auch die Pflege einer Autorisierungsrichtlinie für jeden API-Endpunkt. Das Hinzufügen neuer Microservices, das Entfernen veralteter Microservices und saisonbedingte Schwankungen im Datenverkehr sind die vorhersehbaren Gründe dafür, dass sich die Definition von „normal und akzeptabel“ ständig ändert. Es gibt auch weniger vorhersehbare Gründe wie zeitweise Netzwerkausfälle, DDoS-Angriffe, Upstream-Ausfälle und Sicherheitslücken, die ebenfalls eine große Rolle spielen können.

Angesichts aller Faktoren, die für eine angemessene Sicherheit berücksichtigt werden müssen, müssen große Mengen an Daten nahezu in Echtzeit erfasst, korreliert, verarbeitet und ausgewertet werden, um sinnvolle und zeitnahe Sicherheitsentscheidungen treffen zu können. Diese Anforderung macht herkömmliche Lösungen und Kontrollen unzureichend. Glücklicherweise bieten die Fortschritte im maschinellen Lernen (ML) und die Reife der Lernmodelle im letzten Jahrzehnt eine sehr leistungsfähige Plattform, um diese neuen Sicherheitsherausforderungen zu bewältigen.

ML zur Rettung!

Die Leistungsfähigkeit von ML ermöglicht es uns, die Art und Weise zu überdenken, wie wir Sicherheitskontrollen definieren, verfeinern und implementieren. Dadurch können wir mit der dynamischen Natur der API-Interaktionen umgehen und dennoch eine effektive API-Sicherheit gewährleisten. Wir werden nun die drei wichtigsten Schritte zur Erreichung einer umfassenden und effektiven ML-basierten Lösung besprechen.

1. Lassen Sie ML den Umfang ermitteln... füttern Sie es nicht

Wie bereits erwähnt, ist es für Entwickler oder Sicherheitsteams aufgrund der dynamischen Natur und der schieren Menge von APIs nicht praktikabel, API-Definitionen sinnvoll zu definieren und an Systeme weiterzugeben, die die API-Endpunkte sichern. Bei ML-basierten Modellen ist es möglich, einige Offline-Trainingsdaten einzugeben und das System API-Aufrufe basierend auf dem API-Endpunkt (sagen wir dem URL-Pfad im Fall von HTTP), dem Anrufer, der Nutzlast usw. autonom erkennen, identifizieren, klassifizieren, berücksichtigen und zulassen/ablehnen zu lassen. Beispielsweise erfolgt die API-Erkennung mithilfe eines ML-basierten URL-Diagramms und die Komponentenklassifizierung kann mithilfe von Deep Learning erfolgen. Dadurch kann das System mit der Zeit den Umfang und die Art der API-Kommunikation aufbauen, erweitern und erlernen.

Ein gut kalibriertes System zur Ermittlung des Umfangs kann innerhalb von Stunden tage- oder sogar wochenlange menschliche Anstrengungen für jede aktualisierte Bereitstellung ersetzen.

2. Lernen, anpassen, wiederholen

Dies ist der Kern jeder ML-basierten Sicherheitslösung. Gute Lösungen ermöglichen es Sicherheitskontrollen, das Verhalten des Systems zu beobachten, Verhaltensprofile zu erstellen und das aktuelle Modell (das auf Grundlage früherer Beobachtungen erstellt wurde) anzupassen. Dabei handelt es sich um einen kontinuierlichen Prozess und eine sauber implementierte Lösung ermöglicht eine sinnvolle und zeitnahe Anwendung der Kontrollen. Wenn beispielsweise frühere Profile gezeigt haben, dass eine bestimmte Abfolge von API-Aufrufen ein normaler Ablauf ist, kann ein aktualisierter Application , der einige zusätzliche Aufrufe im Ablauf implementiert, innerhalb weniger Stunden erlernt und dem Profil hinzugefügt werden.

Hier ist das Argument für ML-basierte Lösungen sehr leicht zu verstehen, da die Verhaltensprofilierung und -kalibrierung so in Echtzeit erfolgt, wie es praktisch möglich ist.

mlsecurity1
Abbildung 1. ML-basiertes Profiling

3. Erkennen

Die ersten beiden Schritte ermöglichen es uns, zu lernen und auf dem Laufenden zu bleiben, was als „normales und akzeptables“ Verhalten im System angesehen werden sollte. Der letzte Schritt besteht darin, die Verhaltensmuster zu erkennen und zu benennen, die außerhalb dieses Bereichs liegen. Wenn das System beispielsweise nach dem Erlernen des normalen Verhaltens von Hunderten von Benutzern eine plötzliche Flut von Anmelde- oder Datendownloadversuchen eines bestimmten Benutzers oder mehrere Benutzer feststellt, die innerhalb kurzer Zeit von derselben Netzwerkadresse aus versuchen, sich anzumelden, können diese Verhaltensweisen schnell als Anomalien erkannt werden. Die API-Anomalieerkennung kann mithilfe von sequentiellem, unüberwachtem Deep Learning erfolgen.

Hierbei ist zu beachten, dass die Feedback-Verzögerung ein sehr kritischer Teil des gesamten Lernzyklus ist, um zu verhindern, dass böswillige Akteure ihr Verhalten anpassen und „unter dem Radar bleiben“.

Abbildung 2 zeigt eine Sequenz von API-Aufrufen, die als normal eingestuft und vom System akzeptiert wird.

mlsecurity2
Abbildung 2: Normale Abfolge von API-Aufrufen

Abbildung 3 zeigt anomale Sequenzen von API-Aufrufen, die vom System erkannt und gekennzeichnet würden.

mlsicherheit3
Abbildung 3: Anomale Abfolge von API-Aufrufen

Hierbei ist zu beachten, dass die Feedback-Verzögerung ein sehr kritischer Teil des gesamten Lernzyklus ist, um zu verhindern, dass böswillige Akteure ihr Verhalten anpassen und „unter dem Radar bleiben“.

Sobald diese Lösungen implementiert sind und Ergebnisse liefern, können sie genutzt werden, um vorhandene Kontrollen wie Web Application Firewalls (WAFs) für HTTP-basierten Datenverkehr zu verbessern.

Einpacken

ML ist leistungsstark und ML-basierte Lösungen sind schnell zu einem wesentlichen Bestandteil der Gesamtsicherheit in auf Microservices basierenden Umgebungen geworden. Bei Volterra haben wir sehr früh erkannt, dass wir ML für unsere internen Abläufe brauchen und es auch als Schlüsselfunktion für unsere Kunden bereitstellen, damit diese effektiv, sicher und effizient auf moderne Applications umsteigen können.