API – Das schwächste Glied in der Sicherheitskette?

Eine Anwendungsprogrammierschnittstelle (kurz API) ist so etwas wie das Bindegewebe skalierbarer Websites – unverzichtbar für das Funktionieren innerhalb der digitalen Welt. Aber wie beim physischen Pendant können Schwächen hier ernsthafte, manchmal sogar existenzielle Probleme verursachen. 

Mit Best Practices das „Bindegewebe“ einer Website stärken

Ein aktuelles Beispiel sind Datenlecks, die als Folge einer Fehlkonfiguration von Microsoft Power Apps-Portalen aufgetreten sind, und den öffentlichen Zugriff auf bestimmte Daten gestattet haben. Laut UpGuard, „handelte es sich um unterschiedliche Arten von Daten aus den verschiedenen Portalen, darunter z. B. personenbezogene Daten für die COVID-19 Kontaktverfolgung, COVID-19 Impftermine, Sozialversicherungsnummern von Stellenbewerbern, Mitarbeiter-IDs sowie Millionen von Namen und E-Mail-Adressen.

Mit diesem Problem stehen die Portalbetreiber nicht alleine da. Fehlkonfigurationen bei APIs und die damit verbundenen Angriffe kommen häufiger vor, als man denkt. So berichtete Salt Security Anfang des Jahres, dass von knapp 200 befragten Sicherheitsverantwortlichen 94 % im Jahr 2020 einen API-Sicherheitsvorfall in ihrem Unternehmen verzeichnen mussten. Auch böswilliger API Traffic hat in den letzten sechs Monaten um 348 % zugenommen. Dies ist ein deutlicher Hinweis darauf, worauf Angreifer ihr Augenmerk richten.

Ende 2019 schließlich  veröffentlichte die OWASP eine separate „OWASP API Security Top 10“, die sich ausschließlich mit API-basierten Schwachstellen befasst. APIs stellen eine  sozusagen gebrauchsfertige Methode bereit, um auf die von einem Unternehmen freigegebenen Daten zuzugreifen. Einige APIs sind öffentlich, während andere für die Nutzung innerhalb einer Anwendung gedacht sind. Unabhängig davon ist eine API für den direkten Zugriff auf Daten gedacht. Deshalb sollte sie immer explizit getestet werden, um sicherzustellen, dass sie keine unnötigen Daten zurückgibt oder dass es nicht möglich ist, die Autorisierung zu umgehen. BSIMM12 thematisiert die Aktivität ST2.6 Fuzz-Tests von APIs, aber nur ein geringer Prozentsatz (12 %) der Unternehmen setzt diese Aktivität auch um.

Whitepaper-Angebot: Digitalisierung im Mittelstand.
Google My Business: Warum sich der Eintrag lohnt
Anzeige: Whitepaper der DIGITAL-WEBER

Aber es gibt einige Best Practices, um APIs besser zu überwachen und zu schützen:  

Inventarisierung und Dokumentation: 

Ein bekanntes Sicherheitsklischee (und es ist ein Klischee, weil es wahr ist) lautet sinngemäß: „Man kann nicht schützen, wovon man nicht weiß, dass es existiert.“ Und genau das ist das Problem bei viel zu vielen APIs. Oftmals ist Code nicht formal so dokumentiert, dass er von Menschen oder Maschinen genutzt werden kann – und möglicherweise auch nicht getestet werden kann. 

Das kann und sollte man tun: 

  • Erstellen Sie ein Inventar der API-basierten Applikations-Assets
  • Priorisieren Sie diese nach Risikostufe 
  • Finden Sie API-Endpunkte für diese Assets
  • Nutzen Sie automatisierte Bereitstellungen, um Ihr API-Inventar zu pflegen
  • Automatisieren Sie die Problemerkennung über entsprechende Sicherheitstools und -dienste

Identity- und Access Management (IAM) 

IAM ist eine gängige Sicherheitspraxis. Bei APIs sollten man sich darauf konzentrieren, wie die Benutzer sich bei der API authentifizieren und wie die API die einzelnen Benutzer an verschiedenen Stellen autorisiert. Im übertragenen Sinne funktioniert Authentifizierung wie der Ausweis bei der Sicherheitskontrolle am Flughafen, während die Autorisierung das Äquivalent zur Bordkarte am Gate ist. Für beides existieren verschiedenste Möglichkeiten. Wichtig ist es, dem Benutzer durch das System zu folgen. Bei der Auslegung aller Funktionen in der App muss man ihre Aufgaben bei der Authentifizierung oder Autorisierung des Benutzers kennen.

Vertrauen in die Daten

Denken Sie darüber nach, wie APIs Daten validieren, die sie vom Datenverbraucher bekommen, und ob sie möglicherweise fehlerhaft sind. Wenn ja, wie werden die Fehler beseitigt? Genau wie bei Webanwendungen müssen APIs eine Inputvalidierung durchführen. Wenn Sie mit APIs kommunizieren, kann ein Angreifer versuchen, die Art und Weise, wie Sie die Daten senden, zu manipulieren. Die API muss also wissen, wie sie mit fehlerhaften Daten umgehen soll. Aber die Art und Weise, wie die Validierung durchgeführt wird, könnte auch ein wenig anders ablaufen  – so dass nicht nur die Werte der Parameter überprüft werden, sondern auch das Schema, in dem die Daten übermittelt werden.

Kryptographie

Es sollte selbstverständlich sein….Auf jeden Fall ist es unerlässlich, die Daten bei der Speicherung und Übertragung zu schützen und bei Bedarf zu verschlüsseln. Außerdem werden häufig JSON Web Token für AuthN/AuthZ verwendet, die sind aber kryptografisch signiert, was von der API validiert werden muss. 

API

Konfiguration

Wenn Sie Ihre API in einer Cloud-Umgebung oder über Container bereitstellen, gewährleisten Sie, dass diese sicher konfiguriert sind, um den Aufwand, den Sie schon in die API-Sicherheit gesteckt haben, nicht zu untergraben oder ganz zunichte zu machen.

Tatsächlich ist API-Fehlkonfiguration als API7:2019 auf der OWASP API Top 10 gelistet. Dazu zählen nicht gepatchte Systeme, ungeschützte Dateien und Verzeichnisse, nicht gehärtete Images, fehlendes, veraltetes oder falsch konfiguriertes TLS, exponierte Speicher- oder Server-Management-Panels, fehlende CORS-Richtlinien oder Sicherheits-Header, Fehlermeldungen mit Stack Traces und unnötig aktivierte Funktionen.

Es ist zudem so gut wie sicher, dass Sie Open-Source-Software verwenden – der Open Source Security and Risk Analysis Report 2021 dokumentiert, dass 98 % aller Codebasen Open-Source-Komponenten enthalten und dabei durchschnittlich 75 % des zugrunde liegenden Codes ausmachen. 

Konzentrieren Sie sich auf die Sicherheit dieser Komponenten. Verwenden Sie am besten ein Tool zur Software Composition Analysis (SCA), um bekannte Schwachstellen zu finden und potenzielle Lizenzkonflikte aufzudecken. 

Aktive Überwachung/Alarmierung 

Dabei sollten Sie sich auf die folgenden Bereiche konzentrieren:

  • Untersuchung des Content: Führen Sie einen Scan der Anwendungsschicht durch, um zu sehen, ob jemand eine SQL-Injection versucht. Achten Sie darauf, wie genau Sie den über Ihre API eingehenden Datenverkehr untersuchen und was Sie mit diesem Datenverkehr machen. 
  • Bot-/Angriffserkennung: Stellen Sie sicher, dass Kontrollen etabliert oder in Ihre APIs integriert sind, um sich vor bekannten Angriffstechniken und überwiegend automatisierten Angriffen durch Bots zu schützen.
  • Datendrosselung: Legen Sie fest, wie Sie die API-Nutzung begrenzen und was Sie tun wollen, wenn Limits überschritten werden.
  • Protokollierung: Entwickeln Sie ein taktisches Verfahren zur Überwachung. Sie sollten Protokolle überwachen und aussagekräftige Alarme bekommen können, und die Ihnen genau das liefern, was Sie tatsächlich brauchen. 
  • Nachverfolgung: Die Möglichkeit, negative Ergebnisse oder Aktivitäten bis zu ihrer Quelle – einem Entwicklungsteam oder einer Anwendung – zurückzuverfolgen, ist besonders wertvoll. Wenn Ihnen diese Daten fehlen, haben Sie kaum Aussicht auf Erfolg. 

Fazit

Auch wenn sie aktuell noch nicht so weit sind, APIs einzusetzen, sei es in eigenentwickelten Anwendungen oder zugekauften, früher oder später wird es dazu kommen. Eine API einzusetzen, ist nun mal der gängige Weg, um die Kommunikation zwischen zwei Anwendungen zu ermöglichen. 

Deshalb sollten Sie sicherstellen, dass sie diese Technologie nicht einfach nur benutzen. Sie sollten ein tiefgreifendes Verständnis dafür entwickeln, wie sie benutzt wird, wer sie benutzt und welche Zugriffsberechtigungen dafür benötigt werden. Andernfalls kann die Technologie sehr schnell ziemlich teure Probleme verursachen. Auch hier greifen die Richtlinien der Datenschutz-Grundverordnung und die damit verbundenen Strafen – wie sattsam bekannt, kann eine Datenschutzverletzung Strafen in Höhe von bis 20 Millionen Euro oder 4 % des weltweit erzielten Unternehmensumsatzes nach sich ziehen. Man sollte seine APIs also tunlichst im Blick behalten. 

Der Beitrag wurde ursprünglich hier veröffentlicht …