Eine Anwendungsprogrammierschnittstelle (API) ist ein Satz von Protokollen, die die Interaktion von Softwarekomponenten ermöglichen. Die zwischengeschaltete Schnittstelle wird in der Regel zur Rationalisierung der Entwicklung verwendet, indem sie Softwareteams die Wiederverwendung von Code ermöglicht. APIs abstrahieren auch Funktionen zwischen Systemen, indem sie Anwendungen von der Infrastruktur, auf der sie laufen, entkoppeln. Obwohl die Vorteile von APIs und ihre Einsatzmöglichkeiten in modernen Unternehmen immer weiter zunehmen, stellen die damit verbundenen Sicherheitsherausforderungen verschiedene Sicherheitsrisiken dar. Aus diesem Grund hat OWASP eine Top-Ten-Liste für API-Sicherheit erstellt.
Dieser Artikel befasst sich mit den verschiedenen Risiken, die mit API-Schwachstellen verbunden sind, und zeigt, welche Best Practices für die API-Sicherheit üblich sind, um robuste Sicherheitsmechanismen zu implementieren.
Was ist API Security?
Eine API stellt eine Reihe von Diensten dar, die es einem Programm ermöglichen, mit einem anderen externen oder internen Programm zu kommunizieren. Wenn wir über API-Sicherheit sprechen, beziehen wir uns in der Regel auf die Absicherung der Backend-Dienste einer Anwendung, einschließlich ihrer Datenbank, des Benutzerverwaltungssystems oder anderer Komponenten, die mit der Datenbank interagieren.
API-Sicherheit umfasst die Anwendung mehrerer Tools und Praktiken zum Schutz der Integrität eines Tech-Stacks. Eine solide abgesicherte API umfasst sowohl die APIs als auch die Prozesse eines Unternehmens. Dazu gehört auch, dass Hacker daran gehindert werden, auf sensible Daten zuzugreifen oder in Ihrem Namen schadhafte Aktionen durchzuführen. Leider sind APIs nicht nur ein wichtiger Bestandteil moderner Anwendungen, sondern auch ein häufiges Ziel von Angreifern, um auf vertrauliche Informationen zuzugreifen.
Bei der Verwendung von APIs ist es daher wichtig zu verstehen, wie Anwendungen von Drittanbietern Daten durch die Schnittstelle leiten. Da APIs zunehmend zu einem Angriffsvektor werden, helfen API-Sicherheitsmaßnahmen den Sicherheitsteams bei der Bewertung von Sicherheitsrisiken und der Erstellung eines umfassenden Plans zu deren Schutz.
Risiken von API-Schwachstellen
Da APIs öffentlich zugänglich sind, sind sie ein häufiges Ziel für den Diebstahl sensibler Informationen, einschließlich Anwendungslogik, Benutzeranmeldeinformationen, Kreditkartennummern usw. Darüber hinaus werden Schwachstellen in einem API-Endpunkt auch von Hackern ausgenutzt, um unbefugten Zugang zu einem System oder Netzwerk für andere Angriffsformen wie Cross-Site-Scripting und Code-Injektionen zu erhalten. Das Online Web Application Security Project (OWASP) gibt risikobasierte Empfehlungen zu den 10 wichtigsten Schwachstellen zur Sicherung von Web-API heraus. Dazu gehören:
Unzureichende Benutzerauthentifizierung – Die Basisauthentifizierung stellt bei APIs eine besondere Herausforderung dar, da die Multi-Faktor-Authentifizierung und die auf Anmeldeinformationen basierende Anmeldung bei API-Aufrufen oft als unpraktisch angesehen werden. Da APIs zur Authentifizierung von Clients auf in die Aufrufe eingebettete Sitzungs-Tokens angewiesen sind, ermöglichen APIs mit unzureichender Authentifizierung, wie z. B. eine fehlerhafte Implementierung von Zugriffstokens, Hackern die Annahme der Identität legitimer Benutzer. Andererseits ermöglichen langlebige Token dem Angreifer, das System auf unbestimmte Zeit zu kompromittieren.
- Defekte Autorisierung auf Objektebene – In APIs ist die Autorisierung auf Objektebene ein Kontrollmechanismus auf Code-Ebene, der zur Überprüfung des Objektzugriffs verwendet wird. Bei APIs mit Schwachstellen in der Autorisierung auf Objektebene kann ein externer Benutzer die ID seiner Ressource durch die ID der Ressource eines anderen Benutzers ersetzen. Dadurch können Angreifer auf die Ressource des angegebenen Benutzers zugreifen, was zu einem unbefugten Zugriff auf sensible Daten führt.
- Fehlende Ressourcen– und Ratenbegrenzung – Wenn die API die Anzahl und Häufigkeit der Anfragen eines bestimmten Clients nicht begrenzt, kann dieser zahlreiche Aufrufe pro Sekunde tätigen. Der API-Client kann auch den Zugriff auf mehrere Ressourcen und Datensätze auf einmal anfordern, wodurch der Anwendungsserver überlastet wird, um mehrere Anfragen sofort zu bedienen. Dies kann zu Denial-of-Service-Angriffen führen, da ein Client, der zu viele Anfragen auf einmal stellt, die Fähigkeit des Servers, Anfragen zu verarbeiten, beeinträchtigt. Das Fehlen einer Ratenbegrenzung ermutigt Hacker außerdem dazu, Brute-Force-Angriffe auf Authentifizierungsendpunkte durchzuführen.
- Massenzuweisung – Die Schwachstelle der Massenzuweisung tritt in APIs auf, die Benutzereingaben automatisch an Objekte oder Programmvariablen weiterleiten. Während diese Funktion die Code-Entwicklung vereinfacht, können einige Benutzer serverseitige Variablen initialisieren und überschreiben und so die Anwendung gefährden. Angreifer nutzen dies hauptsächlich aus, indem sie bei der Erstellung von Anfragen zusätzliche Objekteigenschaften erraten und angeben. Sie können auch die Dokumentation der Anwendung lesen oder schwache API-Endpunkte identifizieren, die es ihnen ermöglichen, serverseitige Objekte zu ändern.
- Sicherheitsfehlkonfigurationen – Mehrere Sicherheitsfehlkonfigurationen stellen eine Bedrohung für APIs dar. Dazu gehören:
- Ausführliche Fehlermeldungen – Einige APIs senden aussagekräftige Fehlermeldungen mit Stack Traces und Systeminformationen, damit der Benutzer weiß, wie die Anwendung unter der Haube funktioniert.
- Falsch konfigurierte HTTP-Header legen Sicherheitslücken offen, die Hacker nutzen können, um Daten zu exfiltrieren und raffiniertere Angriffe durchzuführen.
- Unnötige HTTP-Methoden und -Dienste – Wenn Administratoren es versäumen, unnötige Dienste zu schließen, können böswillige Angreifer gepostete Ressourcen mit verschiedenen HTTP-Methoden ändern.
- Unsichere Standardkonfigurationen – APIs stellen Verbindungen zu Abhängigkeiten von Drittanbietern her, von denen viele standardmäßig unsicher sind und eine verbesserte Sicherheitslage erfordern, um eine erweiterte Angriffsfläche zu bieten.
Whitepaper
API Schwachstellen Präventionsguide
Erfahren Sie, wie Sie API-Schwachstellen erkennen und verhindern können.
API-Sicherheit – Best Practices
Die folgenden bewährten Praktiken für die Web-API-Sicherheit können dazu beitragen, API-Angriffe zu entschärfen:
Verwendung von Drosselung und Ratenbegrenzung
Bei der Drosselung wird ein vorübergehender Zustand festgelegt, der es der API ermöglicht, jede Anfrage zu bewerten. Sie wird häufig als Anti-Spam-Maßnahme oder zur Verhinderung von Missbrauch oder Denial-of-Service-Angriffen eingesetzt. Bei der Implementierung der Drosselungsfunktion gibt es zwei Hauptüberlegungen: Wie viele Daten sollten pro Nutzer zugelassen werden, und wann sollte die Begrenzung durchgesetzt werden?
Andererseits hilft die Ratenbegrenzung bei der Verwaltung der REST-API-Sicherheit, indem DoS- und Brute-Force-Angriffe verhindert werden. In einigen APIs legen die Entwickler Softlimits fest, die es den Clients erlauben, die Anfragelimits für eine kurze Dauer zu überschreiten. Das Festlegen von Zeitlimits ist eine der einfachsten Best Practices für die API-Sicherheit, da sie sowohl synchrone als auch asynchrone Anfragen verarbeiten kann. Warteschlangenbibliotheken für Anfragen ermöglichen die Erstellung von APIs, die eine maximale Anzahl von Anfragen akzeptieren und den Rest in eine Warteschlange stellen. Jede Programmiersprache verfügt über ein Verzeichnis von Warteschlangenbibliotheken zur Implementierung von Anfragewarteschlangen.
Nach API-Schwachstellen scannen
Um die kontinuierliche Sicherheit von API-Diensten aufrechtzuerhalten, ist es unerlässlich, automatisches Scannen zu ermöglichen, Schwachstellen zu erkennen und sie in allen Phasen des Software-Lebenszyklus zu beseitigen. Automatisierte Scan-Tools erkennen selbstständig Sicherheitslücken, indem sie die Konfiguration der Anwendung mit einer Datenbank bekannter Schwachstellen vergleichen. Die Crashtest Security Suite bietet einen Schwachstellen-Scanner, der dabei hilft, einen kontinuierlichen Testprozess zu etablieren und das Sicherheitsrisiko zu eliminieren, durch Schwachstellen einer API gehackt zu werden. Darüber hinaus führt die Suite Benchmarks gegen die OWASP Top 10 durch und bietet so eine schnelle Sicherheitsbewertung für eine breite Palette von Anwendungen, APIs und JavaScripts. Wenn Sie mehr darüber erfahren möchten, wie Crashtest Security Sie bei der Abwehr von Cyberangriffen unterstützen kann, melden Sie sich für eine kostenlose 2-Wochen-Testversion an.
Verwenden Sie HTTPS/TLS für REST-APIs
HTTPS und Transport Layer Security (TLS) bieten ein sicheres Protokoll zur Übertragung verschlüsselter Daten zwischen Webbrowsern und Servern. Neben anderen Informationen hilft HTTPS auch dabei, Authentifizierungsdaten bei der Übertragung zu schützen. Als eine der wichtigsten Praktiken sollte jede API HTTPS für Integrität, Vertraulichkeit und Authentizität implementieren. Darüber hinaus sollten Sicherheitsteams die Verwendung von gegenseitig authentifizierten clientseitigen Zertifikaten in Betracht ziehen, die zusätzlichen Schutz für sensible Daten und Dienste bieten. Beim Aufbau einer sicheren REST-API sollten Entwickler die Umleitung von HTTP auf HTTPS vermeiden, da dies die Sicherheit des API-Clients beeinträchtigen kann. Es sollten auch angemessene Schritte unternommen werden, um CORS- (Cross-Origin Resource Sharing) und JSONP-Anfragen umzuleiten, da diese bei domänenübergreifenden Aufrufen grundsätzlich anfällig sind.
HTTP-Methoden einschränken
REST-APIs ermöglichen Webanwendungen, die verschiedene mögliche HTTP-Verb-Operationen ausführen. Daten über HTTP sind unverschlüsselt, so dass einige HTTP-Methoden abgefangen und durch Angriffsvektoren ausgenutzt werden können. Als empfohlene Best Practice sollten HTTP-Methoden (GET, PUT, DELETE, POST, usw.), die von Natur aus unsicher sind, verboten werden. Wenn ein vollständiges Verbot ihrer Verwendung nicht möglich ist, können Sicherheitsteams auch Richtlinien anwenden, um die Verwendung solcher Methoden mit einer strikten Zulassungsliste zu überprüfen, wobei alle Anfragen, die nicht der Liste entsprechen, abgelehnt werden sollten. Es wird auch empfohlen, Best Practices für die RESTful-API-Authentifizierung zu verwenden, um sicherzustellen, dass der anfordernde Client die angegebene HTTP-Methode für die Aktion, den Datensatz und die Ressourcensammlung verwenden kann.
Ausreichende Eingabevalidierung implementieren
Grundsätzlich sollte den vom API-Client bereitgestellten Daten nicht blind vertraut werden, da der Authentifizierungsserver am Ende ein bösartiges Skript von nicht autorisierten Benutzern oder Anwendungsdiensten ausführen könnte. Um dies zu vermeiden, sollten Sicherheitsteams sowohl auf der Client- als auch auf der Serverseite Mechanismen zur Eingabevalidierung implementieren, um ungesunde Eingaben zu verhindern. Während die clientseitige Validierung eine interaktive Anzeige von Fehlern und Hinweise auf akzeptable Eingaben beinhaltet, werden bei der serverseitigen Validierung zusätzlich die empfangenen Daten überprüft, um die verschiedenen Arten von XSS– und SQL-Injection-Angriffen zu vermeiden.
Verwendung eines API-Gateways
Ein API-Gateway entkoppelt die Client-Schnittstelle von der Sammlung der Backend-APIs und stellt eine zentrale Ressource für die konsistente Verfügbarkeit und Skalierbarkeit von API-Diensten bereit. Neben der Verwaltung verschiedener API-Dienste übernimmt die API-Verwaltungsplattform auch Standardfunktionen wie Telemetrie, Ratenbegrenzung und Benutzerauthentifizierung, um die Sicherheit zwischen internen Diensten zu gewährleisten. Das Gateway fungiert als Reverse-Proxy-Gatekeeper, der alle API-Aufrufe entgegennimmt, die für ihre Bearbeitung erforderlichen Ressourcen koordiniert und nach der Authentifizierung die entsprechenden Ergebnisse zurückgibt.