Penetrationstests von API & Schnittstellen

API sind essentiell für die Kommunikation zwischen Anwendungen. Ein API-Pentest hilft Ihnen, Sicherheitslücken zu finden und die Daten Ihrer Kunden zu schützen.

API Penetrationstests sind eine spezialisierte Form von Web-Pentests. APIs sind oft gut dokumentiert, es stehen Spezifikationen zur Verfügung (OpenApi, Swagger, WSDL, etc.), die Angriffsoberfläche ist damit exakt definiert und bestimmte Prozessschritte eines Penetrationstests können übersprungen werden.

API Penetrationstests
Damian Strobel

Damian Strobel

Gründer und CEO

"Die Vergangenheit hat gezeigt, dass API ein attraktives Ziel für Angreifer sind. Immer wieder liest man von API, die komplett schutzlos im Internet zu finden sind und Massen an persönlichen Nutzerdaten ausspucken."

Penetrationstest einer API

Die Welt wird digitaler und Software kommuniziert zunehmend miteinander - das passiert mit Hilfe so genannter Anwendungsprogrammierschnittstellen (oder kurz APIs). API und Schnittstellen findet man auch zunehmend in modernen Websites und Web Apps sowie SPAs (Single Page Applications) - hierbei stellt man oft fest, dass Frontend und Backend strikt getrennt sind. Das Frontend ist irgendein angesagtes JS-Framework (AngularJS, ReactJS oder VueJS) und das Backend ist über eine API erreichbar. Die Entwickler müssen hier sicherstellen, dass Zugriffe auf die API nur von autorisierten Nutzern erfolgen können.

Ist ein API Pentest nicht eigentlich ein Web Pentest?

Im Grunde ist dem so. Eine API ist eine Schnittstelle, die in der Regel von irgendeiner Anwendung bereit gestellt wird - häufig handelt es sich um Webanwendungen. Logischerweise findet man sowohl beim API Pentest als auch beim Web Pentest ähnliche Sicherheitslücken bzw. Sicherheitslücken mit identischen Folgen für die IT-Sicherheit. Beim API-Pentest kümmert sich der Penetrationstest-Anbieter nicht um Frontend oder Webserver sondern legt den Fokus lediglich auf die Schnittstelle oder sogar nur Teile davon.

Ausgangspunkt eines API-Pentests

Bei einem API Pentest wird uns eigentlich immer die API-Dokumentation als Ausgangslage zur Verfügung gestellt. In 70% der Fälle haben wir es mit SwaggerUI oder OpenApi zu tun. Mit Hilfe dieser Spezifikation beschreiben Entwickler ihre API bzw. jede einzelne Route samt notwendiger sowie optionaler Paramter, wie diese übertragen werden müssen und welche HTTP-Antwort erwartet wird. GraphQL (mit aktivierter Introspection) ist ebenfalls ein klassischer und sehr interessanter Sonderfall von API. Seltener aber nicht weniger interessant sind APIs, bei denen die Kommunikation mittels XML-Format erfolgt - erwähnenswert sind hier WSDL-Dateien als Ausgangspunkt bzw. das SOAP-Protokoll. Allgemein ist es so, dass wir vor allem mit RESTful APIs zu tun haben. Trotzdem hatten wir in der Vergangenheit mit JSON RPC, gRPC und auch WebSocket APIs zu tun - letzteres ist mittlerweile fester Bestandteil diverser Frameworks.

Lassen Sie es nicht darauf ankommen und schützen Sie Ihre API vor Cyberangriffen.

Pentest Kosten: Faktor Dauer

Sparpotential bei API-Penetrationstests

Ähnlich wie bei Web-Penetrationstests sind wir flexibel bei der Gestaltung eines API-Penetrationstests, damit dieser ins Budget passt. Häufig haben wir es mit riesigen API zu tun, deren manuelle tiefe Prüfung für den Auftraggeber zu teuer ist. Hier ist eine gesunde Mischung aus automatisierten und manuellen Tests erfolgversprechend. Alles wird automatisiert geprüft, der Fokus für die manuellen Tests wird auf Routes gesetzt, die beispielsweise mit anderen Diensten interagieren, Prozesse ausführen, Nutzerdaten ausgeben/ändern oder Dateiuploads/downloads ermöglichen. Gerne schauen wir uns im Vorfeld die API an und geben unsere Empfehlung. Details gibt es im Artikel "Wie viel kostet ein Penetrationstest?".

Methodik bei API Pentests

Hacking ist ein kreativer Prozess. Wir arbeiten nicht nur stumpf die OWASP API Top 10 ab - diese sehen wir als absolute Priorität, aber nicht als alleinige. Wir schauen uns die API-Dokumentation an, überlegen uns, wie man Daten exfiltrieren könnte - welche Schritte man dazu unternehmen müsste und prüfen, ob das auch wirklich machbar ist. Ansonsten unterscheidet sich die Pentest-Methodik nicht wirklich von einem regulären Penetrationstests gegen ein IT-System. Wir besprechen den Scope, definieren Go/No-Go-Kriterien, starten anschließend mit dem Test und erstellen final einen Bericht.

Typische API-Sicherheitslücken

Es gibt diverse Arten von Sicherheitslücken, die in APIs gefunden werden können. Die Beispiele hier sind echte Beispiele aus vergangenen Penetrationstests. Hier finden Sie die häufigsten:

Unzureichende Zugriffsrechte

Immer wieder wird in solchen Tests ein Endpunkt gefunden, bei dem die Prüfung der Zugriffsberechtigung komplett vergessen wurde. Solche Fehler lassen sich gut automatisiert finden und später manuell analysieren.

IDOR

Oft reicht ein einfaches Ändern einer Nutzer ID beim HTTP Request, um auf fremde Daten zuzugreifen. Hierbei handelt es sich um eine IDOR-Schwachstelle (Insecure Direct Object Reference).

Cross Site Scripting (XSS)

Auch XSS findet man bei API-Pentests. Das besondere hier ist oft, dass diese im Context eines JS Frameworks ausgegeben werden und die Identifikation manchmal etwas komplexer ist.

Server side request forgery

Der Angreifer kann den Server dazu bringen, Anfragen an andere Server zu senden. Das kann dazu führen, dass der Server interne Informationen preisgibt oder sogar Anfragen an interne Dienste sendet. Solche Funktionen sollten, wenn sie benötigt werden, strickt isoliert werden.

SQL Injections

Der Klassiker - irgendein Parameter wird vom ORM doch nicht so ganz validiert und schon kann ein Angreifer auf die Datenbank zugreifen. Je nach Datenbanksystem kann das schnell zur kompletten Übernahme des Webservers führen. Hier ist besondere Vorsicht geboten.

Undokumentierte Routes

Auch das ist etwas, was wir häufig finden. Entwickler haben eine Route erstellt, diese aber nicht in der Dokumentation aufgeführt. Das ist ein gefundenes Fressen für Angreifer, die so vielleicht auf Funktionen zugreifen können, die eigentlich nicht für sie gedacht sind.

Veraltete Komponenten

Auch hier gibt es Parallelen zum Web-Pentest. Veraltete Komponenten sind ein Einfallstor für Angreifer. Der Klassiker hier ist eine alte Software, die intern Daten nach PDF exportiert oder intern URLs crawled.

Unerwartetes Verhalten führt zu XXE

Die Mehrheit von APIs nutzt JSON zur Kommunikation. Hierbei kann es zu unerwartetem Verhalten kommen, wenn man beispielsweise die Applikation dazu zwinge eine XML entgegen zu nehmen.

Dateiverarbeitung ohne Prüfung

Upload/Download/Verarbeitung von Dateien sieht man fast immer in Webanwendungen. Die Daten werden an die API geschickt und dort nicht korrekt geprüft. Das Ergebnis kann vielfältig sein - im negativen Sinne.

Wir finden in jeder API Schwachstellen - die Frage ist nur, wie schwerwiegend diese sind.

Einige Unternehmen, denen wir bisher helfen konnten

Grab
PayPal
BMW
Goldman Sachs
Starbucks
ATT
TikTok
Hilton

Weitere Fragen samt Antworten zum Thema
"API Penetrationstest"

Wie sollte sich mein Team vorbereiten, bevor wir den API Penetrationstest starten?

Aus Tester-Perspektive wollen wir soviel wie möglich über Ihre API wissen. Dokumentationen, speziell so etwas, wie die SwaggerAPI-json, wsdl oder ähnliches helfen uns dabei, die API besser zu verstehen. Auch Informationen über die genutzten Technologien und Frameworks sind hilfreich, um die Effektivität des Tests zu steigern.

Was sind typische Sicherheitslücken, die bei einem API Penetrationstest aufgedeckt werden?

API Penetrationstests setzen den Fokus auf die klassischen Web-Sicherheitslücken. Wir sehen immer wieder SQL-Injections, IDOR und Code Injections. Im Grunde ist aber alles möglich - je nachdem, was Sinn und Zweck der API ist.

Wie lange dauert ein durchschnittlicher API Penetrationstest?

Die Dauer eines API-Tests hängt von der Anzahl an Endpunkten, Parametern und allgemein der Komplexität der API ab. Die meisten Tests können innerhalb 1 Woche abgeschlossen werden. 2-3 Wochen wären aber auch nicht unüblich.

Kann ein API Penetrationstest meine laufenden Dienste beeinträchtigten?

Im Normalfall nicht, da wir größtenteils in einer isolierten Testumgebung oder zu vorher festgelegten Zeitfenstern mit niedriger Auslastung arbeiten, um Unterbrechungen zu vermeiden. Wir kommunizieren eng mit Ihrem IT-Team, um Down-Times etc. zu verhindern. Vorbereitung auf so einen API-Pentest ist jedoch immer ratsam.

Welche Tools und Techniken werden häufig bei Sicherheitsprüfungen von APIs verwendet?

Im Fall von API-Pentests ist das Tooling hauptsächlich Burp Suite in einer Kombination mit eigenen Software-Paketen, die beispielweise darauf abzielen den Import von Definitions-Dateien zu erleichtern. Allgemein ist ein API Pentest aber immer ein manueller Pentest, bei dem sich ein Mensch jede Route und alle Parameter anschaut.

Erhalten wir einen Bericht nach dem Abschluss des Sicherheitschecks der API?

Selbstverständlich - ein finaler Bericht ist der Abschluss eines Pentest-Projekts. Dieser enthält alle gefundenen Schwachstellen, deren Risikoeinschätzung und Empfehlungen zur Behebung. Wir stehen Ihnen auch nach dem Test für Fragen zur Verfügung.

Wie oft sollte ein Sicherheitstest für APIs durchgeführt werden?

Klare Empfehlung: So oft, wie es Sinn macht - beispielsweise bei Launch, Relaunch, signifikanten Änderungen im Code, Serverumzügen oder Änderungen in der API-Struktur. Die meisten Kunden testen ihre API ein Mal pro Jahr. Wir empfehlen hierfür eher so etwas, wie Pentest as a Service, um punktuell eingreifen zu können.

Kontaktieren Sie DSecured

API Pentest anfragen