Henrik Dolle - Fotolia
7 bewährte Vorgehensweisen zum Testen der API-Sicherheit
APIs werden immer häufiger von Cyberangreifern missbraucht, um Daten zu stehlen oder zu manipulieren. Nutzen Sie unsere Security-Checkliste, um Ihre APIs vor Hackern zu schützen.
Application Programming Interfaces (APIs, Programmierschnittstellen) ermöglichen es, fremde Daten und Dienste einzubinden und aus der Ferne zu nutzen. Diese Fähigkeit zum Zugriff auf die Daten einer Organisation macht APIs aber auch für Hacker und andere Cyberangreifer ein attraktives Ziel. Unternehmen sollten daher ein größeres Augenmerk auf den Schutz ihrer APIs legen. Nur so können sie die damit verbundenen Ressourcen, Anwendungen und weiteren Assets vor gezielten Attacken schützen.
Für diese Aufgabe eignen sich besonders gut Sicherheitstests, sofern sie die APIs nicht beeinträchtigen. Bei den Tests muss zudem sichergestellt werden, dass die Vertraulichkeit, Integrität und Verfügbarkeit der Daten und Ressourcen bestehen bleibt, auf die eine API zugreifen kann.
Checkliste für API-Security-Tests: 7 Best Practices
Die folgenden bewährten Vorgehensweisen helfen Ihnen, ein gründliches Sicherheitsprogramm zum Testen von APIs zu erstellen, das alle erforderlichen Bereiche abdeckt.
1. Legen Sie fest, wer die Aufsicht über die Tests und die Sicherheit der APIs im Unternehmen übernimmt.
Meist sind in einem Unternehmen sehr viele Abteilungen am Lebenszyklus der verschiedenen APIs beteiligt. Erschwerend kommt hinzu, dass die meisten Projekte in ihrem Verlauf zahlreichen Änderungen und Anpassungen unterworfen sind. Es ist daher von großer Bedeutung, eine Person zu benennen, die alle Vorgänge rund um die APIs dokumentiert und dabei sicherstellt, dass die Tests sowohl abgeschlossen als auch dass ihre Ergebnisse in Maßnahmen umgesetzt werden.
2. Erstellen Sie ein Budget und einen Zeitrahmen für die geplanten Tests.
Das Durchführen von Sicherheitstests kostet Zeit und Geld. Diesen Punkt dürfen Unternehmen nicht vernachlässigen, wenn sie ein neues Projekt in Anlauf nehmen. Das Modellieren von Bedrohungen wird potenzielle Risiken für die APIs offenlegen, die in der Folge behoben werden müssen. Bedenken Sie auch, dass Sie ein Budget für das Fortführen und Aktualisieren der API-Tests benötigen, sobald das Projekt in Lauf gekommen ist.
3. Registrieren, klassifizieren und dokumentieren Sie den Zweck der APIs und wie sie funktionieren sollen.
Das Dokumentieren der Application Programming Interfaces und ihrer Einsatzzwecke ist der Schlüssel zum Erfolg. Auf der Basis dieser abgelegten Informationen lässt sich mit den Tests herausfinden, ob eine API im Rahmen des Erwarteten und mit den richtigen Daten genutzt wird oder ob dies nicht der Fall ist. Standards wie die OpenAPI Specification, AsyncAPI und GraphQL Introspection ermöglichen es Menschen und Maschinen, die Fähigkeiten der untersuchten APIs zu verstehen und zu bewerten. Viele für die Pflege von APIs genutzte Tools setzen auf die genannten Spezifikationen, um ihre Entwicklung neuer APIs zu beschleunigen.
4. Führen Sie die Tests frühzeitig durch und automatisieren Sie diese wenn immer möglich.
Man kann viel Zeit und Geld sparen, wenn potenzielle Sicherheitslücken schon früh im Entwicklungsprozess gefunden werden. Es gibt daher auf dem Markt zahlreiche API-Security-Tools, sowohl Open-Source als auch kommerziell, die in bereits bestehende Workflows oder in eine CI/CD-Pipeline (Continuous Integration, Continuous Delivery) integriert werden können. Zudem stehen mittlerweile auch spezielle Mocking-Tools zur Verfügung, die vorhandene Dienste nachbauen. Sie haben den Vorteil, dass für die Tests keine vollständigen Kopien der produktiven Systeme erstellt werden müssen.
Legen Sie zudem fest, wer die Tests durchführen wird. Sollen es die eigenen Entwickler, das Security-Team oder externe Pentester sein, da es intern niemanden mit den passenden Fähigkeiten gibt? Außerdem muss bestimmt werden, wann die Tests gemacht werden sollen. Im Idealfall sollte dies automatisch nach jedem neuen Build geschehen.
5. Definieren Sie die Art der durchzuführenden Tests.
Jede API sollte durch die folgenden Tests geprüft werden:
- Fehlerhafte Eingaben. Über eine API erfolgte Eingaben sollten so behandelt werden, als ob sie immer aus einer nicht vertrauenswürdigen Quelle stammen. Das bedeutet, dass sie gründlich bereinigt und validiert werden müssen. Fuzzing-Tools können zudem eingesetzt werden, um zufällige Daten an eine API zu senden. Auf diese Weise lässt sich herausfinden, wie und ob sie mit unerwarteten Daten umgeht und ob es dabei zu Abstürzen kommt.
- Injection-Angriffe. Nutzen Sie simulierte Injection-Angriffe, um sicherzustellen, dass Ihre API-Anfragen zurückweist, die Datenbanken im Backend manipulieren oder auf dem Server Befehle auf Betriebssystemebene ausführen könnten. Diese Attacken werden oft durch Angreifer genutzt, um an sensible Daten zu gelangen.
- Änderungen bei Parametern. Durch eine API übermittelte Parameter, wie zum Beispiel der Preis eines Produkts in einem Warenkorb können durch einen Angreifer relativ leicht manipuliert werden. Stellen Sie daher sicher, dass Ihre API die Parameter validiert und auf ihren Wahrheitsgehalt überprüft, bevor sie sie weiterverarbeitet.
- Ungeprüfte HTTP-Methoden. Senden Sie spezielle Anfragen an Ihre API, bei denen alle acht zur Verfügung stehenden HTTP-Methoden genutzt werden. Damit sorgen Sie dafür, dass häufig nicht benötigte Methoden wie zum Beispiel CONNECT, DELETE, PUT oder TRACE identifiziert und blockiert werden können. Diese Methoden sind ein Sicherheitsrisiko, wenn sie normal reagieren und keine Fehlermeldungen ausgeben. Wenn aber doch eine bestimmte von Ihnen genutzte Applikation eine der Methoden benötigt, dann begrenzen Sie sie am besten so, dass ihre Nutzung nur auf vertrauenswürdige Anwender beschränkt bleibt.
- Schwachstellen in den Geschäftsabläufen. Fehler im Design und der Implementation einer API ermöglichen es einem Angreifer unter Umständen, unerwartetes Verhalten zu provozieren. Also für Ergebnisse zu sorgen, die von den Entwicklern nicht eingeplant worden sind. Ein Beispiel wäre etwa der Abschluss einer Transaktion, ohne zunächst den vorgesehenen Bezahlprozess durchgeführt zu haben. Eine Suche mit automatisierten Tools nach dieser Art von Schwachstellen ist oft schwierig, weil sie meist eng mit der jeweiligen Applikation und ihren speziellen Funktionen zusammenhängen. Ein klares Design und eine sorgfältige Dokumentation der Datenflüsse bei allen Transaktionen und Workflows sowie der getroffenen Annahmen in jedem der Abschnitte eines Prozesses helfen dabei, diese Art von Attacken zu verhindern.
- Kontrollen für Authentifizierungen, Zugriffe und Verschlüsselungen. Sorgen Sie dafür, dass der Urheber einer Anfrage am Server authentifiziert wird und dass er autorisiert werden muss, um auf die angeforderten Ressourcen zuzugreifen. Das Implementieren von Identitäts- und Autorisierungsprotokollen wie OpenID Connect und OAuth ist ebenso wie das Management der zugehörigen Schlüssel und Token aber keine leichte Aufgabe. Es ist deswegen wichtig, ausreichend Zeit einzuplanen, um die Sicherheitskontrollen wirklich ausgiebig testen zu können.
- Übermäßige Belastungen. Eine Begrenzung der Anzahl von Anfragen an eine API in einem bestimmten Zeitraum ist hilfreich, um unerwünschte Verbindungen zu verhindern und um sich damit vor DDoS-Attacken (Distributed Denial of Service) zu schützen. Stellen Sie aber sicher, dass die gesetzten Limits die Performance nicht beeinträchtigen.
Nicht zuletzt sind auch Fehlermeldungen, Logeinträge und der Umgang mit Problemen wichtige Aspekte beim Testen, die nicht vernachlässigt werden sollten. Prüfen Sie deshalb eingehende Benachrichtigungen und Logs, um auch wirklich alle relevanten Informationen über Ihre Tests zu erhalten.
6. Beheben Sie fehlerhafte Tests und führen Sie sie erneut durch.
Die nach den Tests erstellten Berichte müssen an die richtigen Ansprechpersonen weitergeleitet werden, damit die darin erfassten Warnungen und Fehler behoben werden können. Danach sollten Sie die Tests wiederholen, um sicherzustellen, dass der überarbeitete Code das Problem auch wirklich gelöst hat.
7. Halten Sie sich über neue Sicherheitsrisiken auf dem Laufenden und aktualisieren Sie Ihre Dokumentationen.
Jeder, der an der Entwicklung und Nutzung von APIs beteiligt ist, sollte die neuesten Tricks und Kniffe der Cyberkriminellen kennen, die sie gegen Application Programming Interfaces in Stellung bringen. Dieses Wissen kann dann genutzt werden, um den verwendeten Code zu aktualisieren, neue Sicherheitskontrollen einzuführen und neue Tests zu entwickeln. Das Sicherheitsteam sollte daher alle Beteiligten regelmäßig über neue Bedrohungen und Best Practices informieren.
APIs gehören zu den am stärksten exponierten Komponenten in einem Netzwerk. Das führt dazu, dass sie auch besonders häufig attackiert werden. Aufgrund der zunehmenden Sicherheitsrisiken rund um APIs sollte die Durchführung von Tests deswegen im Mittelpunkt eines jeden Projekts stehen.