Was ist API-Sicherheit?

Ein großer Teil des modernen Internets funktioniert auf der Grundlage von APIs. Bei der API-Sicherheit geht es um den Schutz von APIs vor Angriffen und Datenschutzverletzungen.

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Gängige API-Sicherheitsbedrohungen verstehen
  • API-Authentifizierung und -Autorisierung erläutern
  • Techniken für die Sicherheit von APIs beschreiben

Link zum Artikel kopieren

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.

Bei der API-Sicherheit geht es darum, APIs vor Angriffen zu schützen. Genauso 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 funktionieren nur über APIs, und APIs stellen ein zusätzliches Risiko für eine Anwendung dar, da 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 Mitarbeiter des Unternehmens. Ähnlich verhält es sich mit einer API, die es Außenstehenden ermöglicht, ein Programm zu nutzen, was ein größeres Risiko für die Infrastruktur des API-Dienstes bedeutet.

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:

  1. 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.
  2. 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:

  1. Schemavalidierung
  2. 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 mit Hilfe des OAuth-Protokolls ein Authentifizierungs-Token von einem vertrauenswürdigen Authentifizierungsserver erhalten. Um die API zu nutzen, meldet sich ein Nutzer bei einem Drittanbieterdienst an, anstatt sich direkt bei der API anzumelden. Wie die Methode mit Benutzernamen und dem 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

Mehr über API Shield erfahren.