End-to-End-Sicherheit für APIs: Von der Entwicklung bis zur Einstellung
Akamai hat im Juni 2024 Noname Security übernommen. Dieser archivierte Blogbeitrag wurde ursprünglich am 5. Oktober 2022 veröffentlicht.
Der angemessene Schutz von Anwendungsprogrammierschnittstellen (Application Programming Interface, API) ist ein Prozess, der weit über die Sicherheit an sich hinausgeht. Es geht auch um betriebliche und architektonische IT-Probleme, die das Sicherheitsniveau beeinflussen. Damit die API-Sicherheit erfolgreich ist, muss sie als End-to-End-Prozess betrachtet werden, der den gesamten Software-Lebenszyklus abdeckt. Sie beginnt mit der Entwicklung, setzt sich jedoch über die gesamte Laufzeit bis zur Produkteinstellung fort.
Einige alte Annahmen hinterfragen
Die API-Sicherheit zwingt uns dazu, einige alte Annahmen in Frage zu stellen. Man könnte beispielsweise davon ausgehen, dass die Softwareentwicklung mit der Bereitstellung des Codes in der Produktion endet. Das stimmt so jedoch nicht mehr. Die Softwareentwicklung überdauert inzwischen den eigentlichen Schreibprozess des Codes.
Entwicklung ist ein kontinuierlicher Prozess, der vom Konzept der kontinuierlichen Integration und kontinuierlichen Bereitstellung (CI/CD) verkörpert wird. Gleichzeitig liegt die Softwareeinführung bei DevOps, das die zuvor aufeinander folgenden Schritte der Softwareentwicklung (Software Development, Dev) und der Bereitstellung dieser Software in Produkten durch den IT-Betrieb (IT Operations, Ops) vereint.
Heute bereitet sich das DevOps-Team, sobald ein Code-Teilstück in die Produktion geht, fleißig auf die Bereitstellung einer neuen Anwendungsversion vor. Diese nächste Bereitstellung könnte schon eine Stunde später erfolgen. Mit DevOps ist Dev also auch Ops, so scheint es. Die operative Seite des Prozesses ist nicht mehr von der Entwicklungsseite zu unterscheiden. Die Anwendungssicherheit muss daher die verbundenen Phasen von Entwicklung und Betrieb umfassen.
Darüber hinaus ist moderne Software mehr als nur Code. Es handelt sich auch um eine Reihe von Verbindungen zwischen Komponenten wie Mikroservices, APIs, Code-Bibliotheken usw. Um die Sicherheit von APIs zu gewährleisten, müssen Sie wissen, wie diese Verbindungen funktionieren, wo sie sich befinden und wie sie von Cyberkriminelle ausgenutzt werden können. Diese Anforderung geht über gängige Sicherheitspraktiken hinaus und umfasst operative Aufgaben wie das Erstellen von API-Bestandslisten und die Überwachung des API-Traffics.
API-Sicherheit muss den gesamten Softwareentwicklungszyklus umfassen – und darüber hinaus gehen
Die API-Sicherheit muss in der Entwicklungsphase einer Anwendung, über die gesamte Laufzeit und darüber hinaus aktiv sein – während des gesamten Softwareentwicklungslebenszyklus (Software Development Lifecycle, SDLC). Bereits in der Entwicklung können Entwickler Anwendungen anweisen, über API-Aufrufe API-Funktionen offenzulegen oder APIs erstellen, die Funktionen und Daten der Anwendung anderen Softwareanwendungen zugänglich machen. Beide Arten der API-Nutzung stellen ein Risiko dar.
API-Sicherheitsrisiken treten aus verschiedenen Gründen auf, viele haben jedoch mit Problemen bei der API-Konfiguration zu tun, die sich auf die Nutzerauthentifizierung und -autorisierung auswirken. Eine falsch konfigurierte API kann einem unbekannten Nutzer Zugriff auf sensible Daten ermöglichen. Alternativ kann ein Konfigurationsfehler dazu führen, dass ein Nutzer Daten über das zulässige Maß hinaus erhält. Andere Konfigurationsprobleme können dazu führen, dass ein Angreifer die API mit Aufrufen überlasten und einen DoS-Angriff (Denial of Service) durchführen kann.
In der Entwicklung
API-Sicherheitstests können derartige API-Risiken in der Entwicklungsphase verhindern. Die Tests müssen speziell auf APIs zugeschnitten sein, da allgemeine Anwendungstests keine Probleme wie API-Fehlkonfigurationen erfassen. Stattdessen muss eine dedizierte API-Sicherheitstestlösung API-Schwachstellen identifizieren und deren Behebung erleichtern, bevor die Software bereitgestellt wird.
Damit das funktioniert, müssen API-Sicherheitstests bereits früh im Entwicklungsprozess durchgeführt werden, was als „Shift Left“-Ansatz bezeichnet wird. Die Testlösung muss auch in die CI/CD-Pipeline integriert werden. Andernfalls ist die Behebung von Sicherheitsproblemen für die Mitglieder des DevOps-Teams zu umständlich.
Während der Laufzeit
Während der Laufzeit bedeutet API-Sicherheit, dass Bedrohungen in Echtzeit blockiert werden. Dies erfordert eine Überwachung der API-Sicherheit. Eine API-Sicherheitslösung muss den API-Traffic stets im Blick behalten und Administratoren benachrichtigen, wenn sie ungewöhnliches Verhalten oder Angriffssignaturen bemerkt. Die Lösung könnte alternativ noch einen Schritt weitergehen, indem sie eine betroffene API automatisch blockiert, wenn sie eine Bedrohung erkennt.
APIs müssen inventarisiert werden
API-Laufzeitsicherheit ist relativ unkompliziert. Sie funktioniert jedoch nur, wenn die API-Sicherheitslösung weiß, wo sich alle APIs befinden. Um sicher zu sein, müssen APIs einer API-Sicherheitsverwaltung unterliegen, die auch eine API-Erkennung umfasst. Es ist unmöglich, eine API zu verteidigen, die für die Sicherheitslösung unsichtbar ist – deshalb müssen APIs inventarisiert werden. API-Erkennung ist auch deshalb notwendig, da API-Gateways und Web Application Firewalls (WAFs) keine automatische Inventarisierung aller APIs in einer Umgebung ermöglichen, auch wenn viele glauben, dass dies der Fall ist.
Rogues, Zombies und Shadows
Der Prozess der API-Entdeckung führt unweigerlich dazu, dass IT-Administratoren überrascht sind, festzustellen, dass ihre Umgebungen viele „Rogue“-, „Zombie“- und „Shadow“-APIs enthalten.
- Eine Rogue-API ist eine API, die im Laufe der Zeit irgendwie verloren gegangen ist. Es kann sich um eine alte Version einer API handeln, die nie außer Betrieb genommen wurde, oder um eine API, die in einer kommerziellen Softwarepaket offengelegt wird, von der niemand etwas wusste.
- Eine Zombie-API ist eine funktionierende API, die Sie einfach nicht auf dem Radar haben.
- Eine Shadow-API entsteht, wenn eine Person einfach beschließt, APIs zu entwickeln, ohne die IT-Abteilung davon zu unterrichten.
Alle drei Arten unerkannter APIs führen zu Risiken. Sicherheitsrichtlinien können nicht auf sie angewendet werden, da sie nicht sichtbar sind. Wenn sie nicht gemäß der Sicherheitsprinzipien konfiguriert sind – und sie sind fast immer falsch konfiguriert oder erhalten keine Patches –, ermöglichen sie Angreifern unzulässigen Zugriff.
Es kann schwierig sein, zu wissen, was mit bisher unbekannten APIs zu tun ist. Wenn sie weiterhin betrieben werden sollen, müssen sie in Übereinstimmung mit den Richtlinien gebracht werden, die sich auf Konfiguration, Authentifizierung und dergleichen beziehen. Die Abschaltung einer kürzlich entdeckten API mag die beste Wahl sein, aber auch das kann zu Problemen führen.
Wenn beispielsweise eine frühere Version einer API noch verwendet wird, obwohl sie durch bereits durch eine neuere Version ersetzt wurde, könnte das Ausschalten dazu führen, dass Anwendungen nicht mehr funktionieren. Deshalb fällt die Entscheidung oft schwer, eine API außer Betrieb zu nehmen. Administratoren benötigen Tools, die die nötigen Informationen bereitstellen, damit sie die richtige Entscheidung treffen können.
Die richtigen Tools
Für erfolgreiche End-to-End-API-Sicherheit sind die richtigen Tools erforderlich. Eine effektive End-to-End-API-Sicherheitslösung kann API-Sicherheitstests, API-Laufzeitsicherheit sowie API-Sicherheitsverwaltung und -Inventarisierung verarbeiten. Es ist wichtig, bereits vorhandene Tools kritisch zu betrachten, da die meisten WAFs und API-Gateways nicht die nötigen Bereiche Entwicklung, Tests, Laufzeitüberwachung und Bestandsverwaltung abdecken.
Die API-Sicherheitslösung sollte im Idealfall auch so funktionieren, dass sie sich nicht auf die Netzwerk- oder API-Performance auswirkt. Beispielsweise können die API-Sicherheitslösungen von Akamai eine Kopie des Netzwerktraffics überwachen. Sie können API-Aufrufe in diesem kopierten Traffic erkennen und dabei unbekannte APIs und Sicherheitsbedrohungen identifizieren.
Die API-Sicherheit muss alle Phasen des Lebenszyklus einer API abdecken – von der Entwicklung über die Laufzeit bis hin zur Einstellung. Bei der Sicherheit geht es teilweise um Prozesse, die eigentlich nichts direkt mit Sicherheit zu tun haben, wie etwa die API-Bestandsaufnahme. Da unbekannte APIs Risiken verursachen, werden ihre Anwendungen durch ihre Identifizierung sicherer. Es handelt sich dabei um eine End-to-End-Lösung. Je umfassender die API-Sicherheitsmaßnahmen sind, desto sicherer wird die gesamte Umgebung.