Von der API-Security zum Secure API
Angesichts der nahezu vollständigen Durchdringung heutiger IT- und Services-Landschaften mit Aufrufen von Application-Programming-Interfaces (APIs) plädiert unser Autor dafür, die heute vielerorts üblichen, aber eher reaktiven Mechanismen für API-Sicherheit zu erweitern, um zukünftig wirklich sichere APIs – Secure APIs – zu gestalten.
Moderne Web-Applikationen – inklusive der Mobile-Apps auf unseren Smartphones – sind ohne Application-Programming-Interfaces (APIs) praktisch undenkbar. Software-Anwendungen nutzen diese APIs, um miteinander zu kommunizieren und Daten auszutauschen, beispielsweise in den Bereichen Social-Media-Integration, Payment-Gateways, Wetterdienste, Kartendienste und Geolokalisierung, Machine-Learning und Zugriff auf KI-Plattformen sowie beim Zugriff auf eine fast beliebige Anzahl von Clouddiensten, vor allem bei der Kommunikation (Communications-Platform as a Service, CPaaS). Hinzu kommen APIs auf fast allen IT-Systemen im Unternehmensumfeld sowie bei der Heimautomatisierung, zum Beispiel bei intelligenten Beleuchtungssystemen. Die weite Verbreitung und extensive Nutzung von APIs haben viele gute Gründe: Diese eröffnen schließlich weitreichende Möglichkeiten der Interaktion und Integration verschiedener Services und Anwendungen, Entwickler können komplexe Dienste und Funktionen (z. B. den SMS- oder WhatsApp-Nachrichtenversand) in modularer und wiederverwendbarer Form zur Verfügung stellen. Eine „API-First“-Software-Architektur – oder auch Microservices-Architektur – sorgt für eine klare Trennung zwischen unterschiedlichen Funktionsbereichen und ermöglicht dadurch eine erhebliche Verbesserung der Skalierbarkeit und Wartbarkeit von Webanwendungen. APIs spielen auch eine zentrale Rolle im Bereich der Interaktion mit Internet-of-Things-(IoT)- und mobilen Devices. Zudem tragen APIs wesentlich zu einer deutlich besseren User-Experience bei, da sie es Web- und Mobile-Apps ermöglichen, in Echtzeit mit Backend-Systemen im Hintergrund zu kommunizieren, ohne dass Seiten ständig neu geladen werden müssten (z. B. mit react.js oder ähnlichen Frameworks).
Top 10 der API-Security
Mit der weiten Verbreitung von APIs ergibt es sich nahezu zwangsläufig, dass diese auch bösartige Akteure auf den Plan rufen. Das Open Worldwide Application Security Project (OWASP) hat die wichtigsten API-Sicherheitsrisiken in seinen API-Security-Top-10 zusammengefasst:
Broken Object-Level-Authorization: Sicherheitslücken bei der Autorisierung auf Objektebene können Angreifern ermöglichen, auf Daten oder Funktionen zuzugreifen, für die sie keine Berechtigung haben.
Broken User-Authentication: Unzureichende Benutzerauthentifizierungsmethoden können Angreifern ermöglichen, Identitäten zu übernehmen oder unbefugten Zugriff zu erlangen.
Excessive Data-Exposure: APIs, die mehr Daten preisgeben, als für den Client notwendig ist, können das Risiko eines Datenlecks erhöhen.
Lack of Resources and Rate-Limiting: APIs, die keine angemessenen Beschränkungen für die Häufigkeit der Anfragen haben, können anfällig für Denial-of-Service-(DoS)-Angriffe oder Ressourcen-Erschöpfung sein.
Broken Function-Level-Authorization: Wenn Funktionen auf Serverebene nicht richtig autorisiert sind, können Angreifer Zugriff auf für sie nicht vorgesehene Funktionen erlangen.
Mass-Assignment: ist eine Schwachstelle, bei der Angreifer unbeabsichtigt Datenfelder in Objekten ändern können, indem sie API-Anfragen ausnutzen, die nicht ausreichend gefiltert werden.
Security-Misconfiguration: Unzureichend konfigurierte Sicherheitseinstellungen können zahlreiche Schwachstellen eröffnen, durch die Angreifer Zugang erhalten oder die Daten preisgeben können.
Injection: Angriffe wie SQL-Injection, Command-Injection oder andere Injection-Flaws, bei denen nichtvertrauenswürdige Daten an einen Interpreter gesendet werden, können zu unbefugtem Zugriff oder Datenverlust führen.
Improper Assets-Management: Unzureichendes Management von API-Versionen und -Implementierungen kann zu Sicherheitslücken führen – besonders wenn alte, nicht mehr unterstützte APIs weiterhin exponiert sind.
Insufficient Logging and Monitoring: Unzureichendes Protokollieren und Überwachen kann das Erkennen von Sicherheitsverletzungen verzögern oder verhindern, was Angreifern mehr Zeit gibt, unentdeckt zu bleiben. Um diese Angriffsvektoren zu schwächen, ist es entscheidend, APIs mit Blick auf Sicherheit zu entwerfen und zu implementieren sowie regelmäßig zu testen. Sicherheitsmaßnahmen wie starke Authentifizierung und Autorisierung, Validierung und Desinfizierung von Eingaben, sichere Datenübertragung und effektive Fehlerbehandlung sind dabei unerlässlich.
Was fehlt für Secure APIs?
Neben den grundlegenden Sicherheitsmaßnahmen gibt es weitere fortgeschrittene Strategien und Techniken, die implementiert werden können, um die Sicherheit von APIs erheblich zu verstärken – in Richtung Secure APIs:
Web-Application-Firewall (WAF): Eine WAF kann helfen, APIs vor verschiedenen Angriffen zu schützen, indem sie eingehenden Datenverkehr, der bösartige Anfragen enthalten könnte, filtert und blockiert.
API-Security-Gateways: Solche spezialisierten Gateways bieten zusätzliche Sicherheitsschichten und können dabei helfen, Bedrohungen zu identifizieren und zu blockieren, bevor diese die API-Endpoints erreichen.
Zero-Trust-(ZT)-Architecture: erfordert die Implementierung eines Zero-Trust-Sicherheitsmodells, das davon ausgeht, dass interne wie externe Netzwerke potenziell kompromittiert sein könnten. Dieses benötigt eine kontinuierliche Authentifizierung und Autorisierung für jeden Benutzer und jedes Gerät, das auf die API zugreifen möchte.
Content-Security-Policy (CSP): Durch die Implementierung einer CSP lässt sich verhindern, dass bösartiger Code auf Webseiten ausgeführt wird, was besonders gegen Cross-Site-Scripting-(XSS)-Angriffe nützlich ist. Netzwerksegmentierung: dient der Trennung von Netzwerksegmenten, in denen sich APIs befinden, von anderen Teilen eines Netzwerks, um laterale Bewegungen eines Angreifers zu begrenzen.
API-Schichtung: Eine Aufteilung der APIs in mehrere Schichten reduziert die Angriffsoberfläche und erhöht die Sicherheit durch Isolation von Funktionen.
Token-Management: bedeutet eine sorgfältige Verwaltung der Lebensdauer von Tokens, indem man eine angemessene Token-Rotation und -Ablaufstrategie implementiert, um so das Risiko eines Token-Missbrauchs zu verringern.
Dependence-Scanning: Regelmäßige Scans der Abhängigkeiten können dabei helfen, bekannte Schwachstellen in genutzten Bibliotheken zu identifizieren, die im Code verwendet werden, sodass sich diese gegen gepatchte Versionen ersetzen lassen. Dynamische und statische
Code-Analyse: Empfehlenswert ist sowohl die Verwendung von Werkzeugen zur statischen Code-Analyse, um Sicherheitsprobleme im Code zu identifizieren, bevor dieser in Produktion geht, sowie dynamische Analysetools einzusetzen, um das Laufzeitverhalten von Anwendungen zu überprüfen. API-Keys und -Tokens sollten in keinem Fall im Quellcode hinterlegt sein – Authentifizierung und Autorisierung müssen im Backend um- und durchgesetzt werden, nicht im User-Interface (UI).
Incident-Response-Plan: die Entwicklung eines detaillierten Aktionsplans mit dem Ziel, dass die relevanten Teams wissen, wie sie auf Sicherheitsvorfälle in diesem Zusammenhang reagieren müssen. Dieses Wissen sollte regelmäßig im Rahmen von Übungen überprüft werden. Regelmäßige Sicherheitsschulungen: Relevante Teams sollten mit regelmäßigen Schulungen über die neuesten Bedrohungen und Best Practices in der API-Sicherheit auf dem Laufenden gehalten werden.
Regelmäßige Sicherheitsschulungen: Relevante Teams sollten mit regelmäßigen Schulungen über die neuesten Bedrohungen und Best Practices in der API-Sicherheit auf dem Laufenden gehalten werden.