Was ist API-Sicherheit?
Eine Anwendungsprogrammierschnittstelle (API) ist ein Weg für eine Software, mit einer anderen Software zu interagieren. Wenn ein Programm oder eine Anwendung eine API besitzt, können externe Clients Dienste von ihr anfordern.
API-Sicherheit ist der Prozess, mit dem APIs vor Angriffen geschützt werden. So wie Anwendungen, Netzwerke und Server angegriffen werden können, können auch APIs einer Reihe verschiedener Bedrohungen zum Opfer fallen.
API-Sicherheit ist eine Kernkomponente der Sicherheit von Webanwendungen. Die meisten modernen Webanwendungen sind auf APIs angewiesen, um zu funktionieren, und APIs stellen ein zusätzliches Risiko für eine Anwendung dar, indem sie Außenstehenden den Zugriff ermöglichen. Vergleichen Sie dies mit einem Unternehmen, das sein Büro für die Öffentlichkeit zugänglich macht: Wenn mehr Personen das Gebäude betreten, darunter einige Unbekannte, erhöht sich das Risiko für die Mitarbeitende des Unternehmens. Ähnlich ermöglicht eine API Außenstehenden die Nutzung eines Programms, was ein erhöhtes Risiko für die Infrastruktur des API-Dienstes darstellt.
Was sind häufige API-Sicherheitsrisiken?
- Ausnutzen von Sicherheitslücken: Ein Exploit einer Sicherheitslücke liegt vor, wenn ein Angreifer speziell gestaltete Daten an ein Ziel sendet (Daten, die eine Schwachstelle in der Konstruktion des Ziels ausnutzen). Diese als „Sicherheitslücken“ bezeichneten Schwachstellen können dem Angreifer verschiedene Formen des unerwünschten Zugriffs auf eine API oder die entsprechende Anwendung ermöglichen. Das Open Web Application Security Project (OWASP) führt eine Liste der 10 wichtigsten Sicherheitslücken in APIs, wie z. B. SQL-Injection, falsche Sicherheitskonfiguration und andere. Wenn ein Exploit auf eine Sicherheitslücke abzielt, die zuvor unbekannt war, spricht man von einer Zero-Day-Bedrohung – solche Bedrohungen lassen sich nur sehr schwer anhalten.
- Authentifizierungsbasierte Angriffe: Clients müssen sich authentifizieren, bevor sie API-Anfragen stellen können, damit der API-Server keine Anfragen von unbekannten oder illegitimen Quellen akzeptiert. Dafür gibt es mehrere Möglichkeiten, aber jede davon ist kompromittierbar. Ein Angreifer könnte zum Beispiel die Anmeldedaten eines legitimen Clients erhalten, einen API-Schlüssel stehlen oder ein Authentifizierungs-Token abfangen und verwenden.
- Fehler bei der Autorisierung: Die Autorisierung bestimmt die Zugriffsebene jedes Nutzers. Wenn die Autorisierung nicht sorgfältig verwaltet wird, kann ein API-Client auf Daten zugreifen, die ihm nicht zur Verfügung stehen sollten, was das Risiko einer Datenschutzverletzung erhöht.
- DoS- und DDoS-Angriffe: Zu viele an eine API gerichtete Anfragen können den Dienst für andere Kunden verlangsamen oder stoppen. Manche Angreifer richten absichtlich eine Flut von Anfragen an eine API, um einen Denial-of-Service (DoS)- oder Distributed-Denial-of-Service-Angriff (DDoS) durchzuführen.
API-Sicherheitsstrategien helfen, diese und andere Risiken zu bekämpfen.
Starke Authentifizierungs- und Autorisierungsmaßnahmen sorgen dafür, dass Daten nicht nach außen dringen und nur autorisierte Clients API-Anfragen stellen. DDoS-Schutz und Durchsatzbegrenzung können DDoS-Angriffe abwehren. Schemavalidierung und der Einsatz einer Web Application Firewall (WAF) können die Ausnutzung von Sicherheitslücken verhindern.
Wie helfen Durchsatzbegrenzung und DDoS-Abwehr beim Schutz von APIs?
Durchsatzbegrenzung legt eine Obergrenze fest, wie oft jemand eine Aktion innerhalb eines bestimmten Zeitraums wiederholen kann. Wenn ein API-Client die Anzahl der zulässigen Anfragen überschreitet, wird die Durchsatzbegrenzung weitere Anfragen von ihm verwerfen oder für eine gewisse Zeit blockieren.
DDoS-Abwehr hilft, DoS- und DDoS-Angriffe anzuhalten. Bei einem DDoS-Angriff versucht ein Angreifer, eine API mit vielen Anfragen in kurzer Zeit zu überwältigen. Oft kommen diese Anfragen von mehreren verschiedenen Quellen.
Durchsatzbegrenzung und DDoS-Abwehr sind für APIs aus mehreren Gründen wichtig:
- Anhalten von DoS- und DDoS-Angriffen. Durch das Blockieren oder Verwerfen der zusätzlichen Anfragen schützen Durchsatzbegrenzung und DDoS-Abwehr die API vor Überlastung. Die Durchsatzbegrenzung allein kann Low-and-Slow-Angriffe nicht anhalten, aber die DDoS-Abwehr kann den zusätzlichen Traffic trotzdem bekämpfen.
- Abgesehen von absichtlichen Angriffen können einige Kunden eine API einfach zu stark in Anspruch nehmen. Das kostet den API-Dienst Rechenleistung und kann den Dienst für andere Kunden verlangsamen. Durchsatzbegrenzung hilft dabei, eine Überlastung des API-Servers zu verhindern.
Wie kann man die Ausnutzung von Sicherheitslücken verhindern?
Wer die Sicherheitslücke ausnutzen will, muss die böswilligen API-Anfragen so strukturieren, dass die API auf eine Weise reagiert, die von ihren Architekten nicht beabsichtigt war. API-Entwickler können solche böswilligen Anfragen auf verschiedene Weise blockieren. Zwei der wichtigsten sind:
- Schemavalidierung
- WAF-Regeln
Schemavalidierung
Das Schema einer API beschreibt das erwartete Verhalten einer API: die Art der Anfragen, die sie erhalten sollte, und die Art der Antworten, die sie geben sollte. Ungültige Anfragen, die nicht mit dem Schema übereinstimmen, können zu unerwarteten Verhaltensweisen der API führen, was möglicherweise ein Datenleck zur Folge hat. Die Schemaüberprüfung identifiziert ungültige Anfragen und Antworten. Durch das Blockieren ungültiger Antworten können API-Entwickler einige Arten von Angriffen vermeiden und Datenlecks verhindern.
Regeln der Web Application Firewall (WAF)
Eine WAF funktioniert wie eine herkömmliche Firewall, indem sie einige Netzwerkanfragen und -antworten blockiert und andere durchlässt. Sie tut dies auf der Grundlage einer Reihe von Regeln: Wenn eine Anfrage oder eine Antwort gegen eine Regel verstößt oder einer Regel entspricht, wird sie blockiert. Eine WAF wird vor einer API oder einer Webanwendung eingesetzt und überwacht den HTTP-Traffic.
Sie können WAF-Regeln einrichten, die Anfrage- und Antwortmuster blockieren, die auf eine Sicherheitslücke abzielen. WAF-Regeln können auch Anfragen von bestimmten IP-Adressen blockieren, was hilft, Bot-Angriffe und andere Angreifer anzuhalten.
Warum sind Authentifizierung und Autorisierung so wichtig für die API-Sicherheit?
Die Authentifizierung stellt sicher, dass API-Anfragen von einer legitimen Quelle stammen. Die Autorisierung teilt dem API-Server mit, ob der anfragende Client berechtigt ist, die angeforderten Daten zu erhalten.
Angenommen, Alice erstellt eine API und Bob entwickelt eine Webanwendung, die die API von Alice verwendet. Wenn Bobs Anwendung eine API-Anfrage an die API von Alice sendet, fügt er der Anfrage ein Label mit der Aufschrift „Das kommt von Bob“ hinzu. Dadurch wird Bobs Anfrage authentifiziert, sodass der API-Server von Alice weiß, dass er die Anfrage als legitim behandeln muss.
Der API-Server von Alice überprüft auch, welche Berechtigungen Bob hat. Wenn Bobs Anfrage sich auf Daten bezieht, die in der API von Alice mit dem Label „Bob kann das sehen“ versehen sind, erfüllt der Server die Anfrage. In der API von Alice kann es jedoch einen Datenbereich geben, der mit dem Label "nicht für Bob" gekennzeichnet ist, und der Server sollte eine Anfrage für diese Daten nicht erfüllen, wenn Bob der Anfragende ist. Aus diesem Grund ist die Autorisierung so wichtig.
(In Wirklichkeit würde Bob API-Anfragen mit einem Schlüssel oder einer anderen Form der Authentifizierung versehen, nicht nur mit einem Label, auf dem steht „Das ist von Bob“).
Es gibt mehrere Authentifizierungsmethoden für APIs. Die gängigsten sind:
1. API-Schlüssel
Dem Kunden wird ein Schlüssel zugewiesen – eine eindeutige Zeichenfolge, die nur er und der API-Dienst kennen. Der Schlüssel wird an jede API-Anfrage angehängt. Der API-Server sucht nach dem Schlüssel, wenn er eine API-Anfrage erhält, um sicherzustellen, dass sie von einem authentifizierten Client stammt.
Der Nachteil dieser Authentifizierungsmethode ist, dass ein Angreifer, wenn der Schlüssel gestohlen wird, sich damit als legitimer Client ausgeben und dann eine Vielzahl von Angriffen durchführen kann. Es ist wichtig, Anfragen und Antworten an und von einer API mit einem Verschlüsselungsprotokoll wie Transport Layer Security (TLS) zu verschlüsseln – auf diese Weise wird der Schlüssel auf seinem Weg durch das Internet nicht im Klartext offengelegt.
2. Benutzername und Passwort
API-Anfragen können die üblichen Anmeldedaten für Benutzernamen und Kennwort zur Authentifizierung über eine Methode namens HTTP-Authentifizierung verwenden. Bei der HTTP-Authentifizierung werden ein Benutzername und ein Passwort verschlüsselt und dem HTTP-Header für alle API-Anfragen hinzugefügt. Der Server kann diese Anmeldedaten mit den Anmeldedaten der zugelassenen Clients abgleichen, um die Anfragen zu authentifizieren.
Dieser Ansatz bringt alle Herausforderungen mit sich, die normalerweise mit Passwörtern verbunden sind: Passwörter können verloren gehen, geleaked, gestohlen, erraten oder an nicht vertrauenswürdige Parteien weitergegeben werden. Außerdem sind Passwörter unter anderem Gegenstand von Credential Stuffing und Brute-Force-Angriffen.
3. OAuth-Token
Anstatt eine Authentifizierung direkt vom Client zu verlangen, kann ein API-Server ein Authentifizierungs-Token von einem vertrauenswürdigen Authentifizierungsserver über das OAuth-Protokoll erhalten. Um die API zu nutzen, meldet sich ein Nutzender bei einem Drittanbieterdienst an, anstatt sich direkt bei der API anzumelden. Wie die Methode mit Benutzernamen und Kennwort ist auch diese Authentifizierung anfällig für Credential Stuffing und andere Angriffe.
4. Gegenseitiges TLS (Mutual TLS, mTLS)
TLS ist das Verschlüsselungsprotokoll, das beim Laden von Webseiten eine verschlüsselte, authentifizierte Verbindung zwischen Client und Server herstellt. TLS kann auch beide Enden einer API-Verbindung verifizieren und authentifizieren.
Bei mutual TLS (mTLS) verfügen sowohl der Client als auch der Server über ein TLS-Zertifikat. Sie authentifizieren sich gegenseitig mit diesen Zertifikaten und stellen so sicher, dass beide die sind, die sie vorgeben zu sein, ohne sich auf Passwörter oder andere Authentifizierungsmethoden verlassen zu müssen.
Die Implementierung von mTLS kann jedoch eine Herausforderung darstellen: Alle API-Endpunkte und -Clients benötigen legitime TLS-Zertifikate, deren Durchsetzung und Pflege schwierig sein kann.
Was ist API Shield?
Cloudflare API Shield bietet mehrere API-Sicherheitsmerkmale von einem Dashboard aus, um vor den üblichen API-Sicherheitsrisiken zu schützen. API Shield umfasst:
- mTLS für API-Endpunkt-Authentifizierung
- Schemaüberprüfung, die ein positives Sicherheitsmodell verwendet, um nur Anfragen zuzulassen, die dem Schema der API entsprechen
- Data Loss Prevention (DLP), das den von einer API ausgehenden Traffic auf sensible Daten überprüft
- Durchsatzbegrenzung und DDoS-Abwehr, um sicherzustellen, dass APIs nicht überlastet werden
Erfahren Sie mehr über API Shield oder API-Sicherheitslösungen.
FAQs
Was ist API-Sicherheit?
API-Sicherheit ist der Prozess, mit dem APIs vor Angriffen und Datenschutzverletzungen geschützt werden. Es wird sichergestellt, dass nur autorisierte Benutzer über die API auf bestimmte Dienste und Daten zugreifen können, und die APIs bleiben auch bei Angriffen funktionsfähig, die darauf abzielen, sie zu überlasten oder offline zu schalten. Rate Limiting, DDoS-Abwehr, WAF-Regeln, Schemavalidierung und robuste Authentifizierungspraktiken können alle zum Schutz von APIs beitragen.
Warum sind Authentifizierung und Autorisierung wichtig für die API-Sicherheit?
Die Authentifizierung überprüft die Identität von API-Nutzern, und die Autorisierung bestimmt, auf welche Daten oder Dienste diese Nutzer zugreifen können. Zusammen helfen sie, unbefugten Datenzugriff zu verhindern.
Was sind häufige API-Sicherheitsrisiken?
Zu den häufigen API-Sicherheitsrisiken zählen die Ausnutzung von Schwachstellen, Angriffe auf Basis von Authentifizierung, Autorisierungsfehler und Denial-of-Service (DoS/DDoS)-Angriffe, die den API-Dienst für legitime Nutzer unterbrechen können.
Wie schützen Rate Limiting und DDoS-Abwehr APIs?
Rate Limiting schränkt ein, wie oft jemand eine API in einem bestimmten Zeitraum verwenden kann, während DDoS-Abwehr hilft, große Mengen böswilliger Anfragen zu absorbieren oder zu blockieren. Beide helfen dabei, APIs für autorisierte Benutzer verfügbar zu halten.
Wie können Schemavalidierung und eine Web Application Firewall (WAF) die Sicherheit von APIs verbessern?
Die Schemavalidierung blockiert Anfragen, die nicht dem erwarteten Format der API entsprechen. Dadurch ist es weniger wahrscheinlich, dass sich eine API als Reaktion auf Benutzeranfragen unerwartet verhält. Eine WAF verwendet Regeln, um bösartige oder verdächtige API-Aufrufe zu blockieren, bevor sie die API erreichen.
Welche gängigen Authentifizierungsmethoden gibt es für APIs?
APIs verwenden API-Schlüssel, Kombinationen aus Benutzername und Passwort, OAuth-Tokens oder gegenseitiges TLS (mutual TLS, mTLS), um ihre Nutzer zu verifizieren.
Was ist OWASP API Security und warum ist sie wichtig?
Die OWASP API Security Top 10-Liste bietet Sicherheitsrichtlinien und eine Liste häufiger API-Schwachstellen, die API-Entwicklern helfen, die kritischsten Sicherheitsrisiken zu verstehen und zu beheben.
Warum sind Verschlüsselungsprotokolle wie TLS wichtig für die API-Sicherheit?
Verschlüsselungsprotokolle wie Transport Layer Security (TLS) schützen API-Daten während der Übertragung und verhindern, dass Angreifer Anmeldedaten oder sensible Informationen entwenden. Dies ist besonders wichtig, wenn die API API-Schlüssel zur Authentifizierung ausgibt – wenn ein Schlüssel während der Übertragung nicht verschlüsselt wird, können Angreifer ihn kopieren und für den Zugriff auf vertrauliche Daten verwenden. Zusätzlich wird manchmal mutual TLS (mTLS) zur Authentifizierung verwendet, um Angreifer daran zu hindern, sich als legitime Benutzer auszugeben.
Was sind Zero-Day-Bedrohungen im Kontext der API-Sicherheit?
Zero-Day-Bedrohungen sind Angriffe, die bisher unbekannte Schwachstellen in APIs ausnutzen. Zero-Day-Bedrohungen sind besonders schwer zu erkennen und zu stoppen.