Wie man APIs sichert - 10 bewährte Praktiken zum Befolgen
Anwendungsprogrammierschnittstellen (APIs) sind eine Grundlage für die moderne Softwareentwicklung. Sie vereinfachen den Entwicklungsprozess, indem sie Programmierern eine Fülle von Funktionen und Interoperabilität bieten, die sie bei der Entwicklung ihrer Produkte nutzen können. Sie sparen Zeit und Ressourcen, da die Notwendigkeit entfällt, vorhandene Funktionen von Grund auf neu zu entwickeln.
Im Laufe der Jahre haben böswillige Akteure jedoch viele Möglichkeiten gefunden, über APIs auf Websites, Server und andere Infrastrukturen zuzugreifen und Daten zu stehlen. Ein falsch implementierter, falsch konfigurierter oder vergessener API-Endpunkt kann Ihre gesamte Infrastruktur anfällig für Cyberangriffe machen. Viele APIs verwalten sensible Daten, einschließlich personenbezogener Daten (PII) und Informationen über geistiges Eigentum (IP), was sie zu besonders lukrativen Zielen für Angreifer machen kann.
Kein Unternehmen ist gegen API-Bedrohungen immun. Selbst Branchenriesen wie Google, Instagram, Clubhouse und British Airways haben API-Verletzungen erlebt. Da es bei API-Verletzungen um viel Geld geht, müssen Unternehmen unbedingt lernen, wie sie APIs sichern können. Sehen wir uns die häufigsten Risiken an und wie man APIs davor schützen kann.
Was sind die häufigsten API-Risiken?
Zu den Risiken im Zusammenhang mit APIs gehören Datenschutzverletzungen, bei denen sensible Benutzerdaten preisgegeben werden, sowie unbefugter Zugriff, der je nach den von den verletzten Systemen kontrollierten Daten zu einer Vielzahl von negativen Ergebnissen führen kann. APIs, die sensible Daten verwalten, sind eher Ziel von Angriffen. Es gibt mehrere Möglichkeiten für Angreifer, eine API auszunutzen, einige der häufigsten sind:
1. Broken Object Level Authorization (BOLA) Ausnutzung
Bei der Autorisierung auf Objektebene handelt es sich um einen Kontrollmechanismus, der in APIs implementiert wird, um sicherzustellen, dass Benutzer nur auf Objekte zugreifen können, für die sie berechtigt sind. Es gibt eine Vielzahl von Möglichkeiten, den Zugriff zu kontrollieren, darunter Sitzungs-Tokens, Sitzungsschlüssel, sogar zeitbasierte Parameter und darüber hinausgehende dynamische Kontrollen für komplexe Umgebungen.
Jede API, deren Endpunkte eine Objekt-ID erhalten und eine Aktion mit dem Objekt durchführen, sollte eine Autorisierung auf Objektebene implementieren. Wenn die Autorisierung auf Objektebene gebrochen ist, können Angreifer die ID eines Objekts, das innerhalb der API-Anforderung an den Endpunkt gesendet wird, manipulieren, um Zugriff auf sensible Daten zu erhalten, auf die sie keinen Zugriff haben sollten.
2. Denial of Service und andere Bot-Attacken
Denial-of-Service-Angriffe (DoS-Angriffe) treten auf, wenn ein Angreifer den normalen Datenverkehr zu einem Server oder Netzwerk unterbricht oder zu unterbrechen versucht, indem er einen massiven Zustrom von Anfragen erzeugt, der die Ressourcen des Servers unweigerlich überfordert. Bei verteilten DoS-Angriffen (DDoS) verwenden die Angreifer eine große Anzahl - möglicherweise Millionen - kompromittierter Geräte, die oft über eine Vielzahl von Standorten verteilt sind, um Anfragen an das Ziel zu leiten. Diese kompromittierten Geräte werden Bots genannt, und die Verbindung zwischen mehreren Bots wird als Botnet bezeichnet.
Bei einem DDoS-Angriff sendet jeder Bot eine Anfrage an die Serveradresse, wie es ein normaler Systembenutzer tun würde. Da diese Anfragen jedoch gleichzeitig eingehen und oft auf ein Ziel gerichtet sind, überfordern sie die Serverressourcen des Ziels, wodurch der Dienst, die Website oder das Netzwerk ungewöhnlich langsam und in einigen Fällen sogar nicht mehr verfügbar sind.
Neben langsamen Verbindungsgeschwindigkeiten können auch die folgenden Anzeichen darauf hindeuten, dass Ihre Website möglicherweise einem DDoS-Angriff ausgesetzt ist:
- Große Mengen an Datenverkehr, die von einer IP-Adresse oder mehreren IP-Adressen innerhalb eines Bereichs stammen
- Große Mengen an Datenverkehr von Unternehmen mit ähnlichen Profilmerkmalen, wie z. B. Webbrowser-Versionen, Gerätetypen und vielleicht, aber nicht immer, ähnliche geografische Gebiete
- Eine noch nie dagewesene Flut von Anfragen an eine Seite oder einen Endpunkt
- Verdächtige Anstiege des Verkehrsaufkommens in bestimmten Zeitabständen oder zu ungeraden Tageszeiten, insbesondere an Feiertagen und Wochenenden
DDoS-Angriffe gefährden zwar nicht Ihre Daten, können aber Ihre Plattform für Ihre Benutzer unbrauchbar machen, was oft zu kostspieligen Ausfallzeiten und Umsatzeinbußen führt. Die häufigsten DDoS-Angriffe sind Angriffe auf der Anwendungsebene, Protokollangriffe und volumetrische Angriffe auf Websites oder API-Endpunkte.
Es ist wichtig zu wissen, dass Angriffe durch bösartige Bots mehr Formen annehmen als je zuvor. Bei einem Angriff, bei dem Anmeldedaten gestohlen werden, kommt es beispielsweise zu einer Flut von Anfragen eines Bots, der automatisch eine Datenbank mit bekannten Anmeldeinformationen durchforstet, um zu sehen, ob er Zugang erhalten kann. Wir beobachten auch, dass Angreifer lernen und ihr Verhalten weiterentwickeln, um sowohl herkömmliche, einfache Erkennungsregeln zu umgehen als auch die Abwehr abzulenken, z. B. durch einen DDoS-Angriff auf eine bestimmte Website, um das Sicherheitsteam zu beschäftigen, während sie an anderer Stelle eine andere Schwachstelle ausnutzen, die im Lärm untergeht.
3. Paginierungsangriffe
Unter Paginierung versteht man die Aufteilung von Informationen auf verschiedene Seiten. Es ist üblich, dass APIs den Benutzern eine Liste von Entitäten zur Verfügung stellen. Der Client filtert und paginiert in der Regel durch diese Liste und gibt eine begrenzte Anzahl von Entitäten zurück - nur die erforderlichen Bits. Bei einem Paginierungsangriff umgeht der Angreifer diese Beschränkungen, um eine große Anzahl der darin gespeicherten sensiblen Informationen preiszugeben.
4. Unsichere API-Schlüsselgenerierung
Die meisten Entwickler verwenden API-Schlüssel, um APIs zu sichern. Ein API-Schlüssel ist eine eindeutige Kennung, mit der die API im Falle eines Verstoßes verfolgt und geschützt werden kann. Mithilfe eines API-Schlüssels können Systemmanager verdächtiges Verhalten erkennen und den Zugriff auf den Benutzer sperren. Mit diesem Wissen können Angreifer auf raffinierte Weise API-Schlüssel generieren und sie dann für DDoS-Angriffe verwenden, indem sie beispielsweise kompromittierte Geräte als Angriffsquellen nutzen.
5. Falsche Serversicherheit
Die Serversicherheit umfasst die Maßnahmen, die zum Schutz der auf einem Server gespeicherten Daten getroffen werden. Eine der wirksamsten Methoden zur Sicherung eines Servers ist die Verwendung von Server-Sicherheitszertifikaten wie Secure Sockets Layer (SSL) und Transport Layer Security (TLS). Diese Protokolle verschlüsseln sensible Daten, indem sie sie verschlüsseln. Wenn die von einem Server gespeicherten oder gesendeten Informationen nicht ordnungsgemäß gesichert sind, können sich Angreifer Zugang zu API-Schlüsseln verschaffen und einen DOS-Angriff durchführen.
6. Injektionsangriffe
API-Verletzungen entstehen häufig durch Injektionsangriffe. Eine Injektion liegt vor, wenn ein Angreifer eine API mit bösartigem Code oder Befehlen füttert. Sobald diese Informationen im System sind, können sie dazu beitragen, einen DoS-Angriff zu orchestrieren oder den Server zu übernehmen, der die API hostet. Eine Injektion erfolgt in der Regel, wenn die vom Client bereitgestellten Daten nicht gefiltert, validiert und bereinigt werden.
Bewährte Praktiken für die Sicherung von APIs
Die Sicherung von APIs gewährleistet die Integrität Ihrer Website und Ihrer Server. Die Art der von der API verwalteten Daten bestimmt in der Regel die zu ergreifenden Sicherheitsmaßnahmen. Im Folgenden finden Sie bewährte Verfahren zum Schutz von APIs.
1. Bestandsaufnahme-APIs
Ihre Organisation könnte über zahlreiche öffentlich freigegebene APIs verfügen. Es ist nicht möglich, die APIs zu sichern, wenn Sie nicht wissen, wie viele es gibt. Es ist immer eine gute Praxis, alle Ihre APIs zu inventarisieren und einen Plan für ihre Verwaltung aufzustellen. Andernfalls kann es zu Sicherheitslücken in Ihrer Infrastruktur kommen.
2. Robuste API-Zugangskontrolle einsetzen
Die Kontrolle der Authentifizierung und Autorisierung ist eine der besten Möglichkeiten, den Zugang zu einer API zu kontrollieren. Es gibt zwar viele Möglichkeiten, eine API zu authentifizieren, aber die am meisten empfohlene ist OAuth. OAuth ist ein Token-basiertes Authentifizierungs-Framework, das es Diensten von Drittanbietern ermöglicht, auf Informationen zuzugreifen, ohne die Anmeldedaten des Benutzers preiszugeben.
Um mehr Kontrolle zu haben, sollten Sie die Token so konfigurieren, dass sie nach einem bestimmten Zeitraum ablaufen, z. B. nach 24 Stunden. Auf diese Weise muss die API den Benutzer neu authentifizieren, und im Falle eines Einbruchs haben die Angreifer nur ein begrenztes Fenster zu Ihren Ressourcen.
3. Einsatz einer Web Application Firewall (WAF)
Eine Web Application Firewall ist ein Vermittler zwischen dem Internet und dem Server. WAFs gibt es in vielen Varianten, die von preiswerten, einfachen Schutzmaßnahmen bis hin zu robustem, unternehmensgerechtem Schutz reichen. Wirklich moderne WAFs, die als Webanwendungs- und API-Schutzplattformen bekannt sind, bieten Schutz durch Inline-Blockierung für Ihren gesamten Layer-7-Datenverkehr über Webanwendungen und APIs in jeder Infrastruktur, einschließlich Cloud und vor Ort.
WAFs sollten sofortigen Schutz vor Angriffen bieten, indem sie bösartigen Datenverkehr filtern, überwachen, erkennen und automatisch blockieren, damit er den Server nicht erreicht. WAFs sind auch im Falle eines DDoS-Angriffs sehr nützlich, da sie es Ihnen ermöglichen, die Richtlinien umgehend zu ändern, falls Sie eine Ratenbegrenzung einsetzen müssen. Sie sollten auch in der Lage sein, die verdächtige Nutzung einer API zu erkennen, zu verfolgen und zu blockieren.
Beachten Sie bei der Auswahl einer WAF sorgfältig die folgenden Punkte:
- Vor welchen Bedrohungen wird uns das schützen?
- Kann ich dies im vollständigen Blockierungsmodus ausführen? Führen Sie unbedingt einen Proof-of-Concept durch.
- Wie hoch ist der Aufwand für die Wartung durch Bereitstellung, Updates und benutzerdefinierte Regelungen?
- Ist die Plattform als verwalteter Dienst verfügbar, ist der Support zuverlässig?
- Kann dies den gesamten erforderlichen Datenverkehr über Anwendungen und APIs hinweg schützen?
4. Ratenbegrenzung verwenden
Die Ratenbegrenzung verweigert nachfolgende Informationsanfragen, die einen bestimmten Schwellenwert überschreiten. Durch die Begrenzung der Methode und Häufigkeit von API-Aufrufen können Sie einen übermäßigen Datenverkehr verhindern und Ihre Website vor DDoS-Angriffen schützen.
5. Identifizierung von Schwachstellen
Um APIs besser zu schützen, sollten Entwickler wie ein Angreifer denken und verstehen, welche Teile des API-Lebenszyklus anfällig für Angriffe sind. Außerdem sollten sie die API so strukturieren, dass sie Angriffe erkennen und vereiteln können.
6. API-Sicherheit priorisieren
Unternehmen sollten ihre APIs wie Software-Artefakte behandeln. Das bedeutet Planung, Bedrohungsmodellierung, Entwicklung, Test, Sicherung und Bereitstellung wie bei einer Anwendung.
7. TLS-Verschlüsselung
Sie sollten alle von einem Server gespeicherten und verwalteten Daten verschlüsseln, unabhängig davon, ob sie sich im Ruhezustand befinden oder übertragen werden. Daten im Ruhezustand werden häufig mit symmetrischer Verschlüsselung verschlüsselt, während die Daten bei der Übertragung mit TLS, dem Nachfolger des inzwischen veralteten SSL, verschlüsselt werden. TLS stellt sicher, dass Angreifer die Daten nicht einsehen oder verfälschen können und dass die Kommunikation nur von echten Websites kommt.
8. Einsatz eines Null-Vertrauens-Privilegienmodells
Traditionell hatten Netze eine Begrenzung mit Elementen innerhalb und außerhalb. Die Elemente innerhalb des Perimeters waren "vertrauenswürdig", während die Elemente außerhalb nicht vertrauenswürdig waren. Dieser Aufbau schützt das Netzwerk zwar vor externen Bedrohungen, macht es aber anfällig für Insider-Angriffe.
Um dies zu verhindern, müssen alle Benutzer und Anwendungen authentifiziert und autorisiert werden. Einfacher ausgedrückt, verwenden Sie Zero-Trust-APIs. Da die Anfälligkeit einer API mit dem Grad des Zugriffs anderer Parteien korrespondiert, sollte die API außerdem die geringstmöglichen Privilegien bieten, die ein Benutzer oder Dienst benötigt, um seine Aufgaben zu erfüllen.
9. Geben Sie nicht mehr Informationen als nötig preis
Stellen Sie immer sicher, dass eine API nur die Informationen zurückgibt, die zur Erfüllung der Funktionen des Clients erforderlich sind, und den Rest am Endpunkt herausfiltert. Einige APIs überlassen die Datenfilterung der Benutzeroberfläche, was dazu führt, dass mehr Informationen als nötig offengelegt werden. Überlegen Sie außerdem, wie Sie Ihre API-Nutzung vereinfachen können, um Angriffsvektoren einzuschränken.
10. Validierung der vom Kunden stammenden Daten
Validieren, filtern und bereinigen Sie immer Eingaben von einem Endpunkt, bevor Sie sie an einen anderen Endpunkt weiterleiten. Dies kann Ihre Website oder Infrastruktur vor Angriffen wie SQL-Injection schützen.