Immer wieder wird in den Medien von Sicherheitslücken in Softwareanwendungen berichtet, die es Angreifern ermöglichen, sensible Informationen abzufangen, zu manipulieren oder ganze Systeme außer Betrieb zu setzen. Für die Betroffenen entsteht dabei oft nicht nur ein finanzieller Schaden, sondern Angreifer sind in der Lage auf sensible (Kunden-)Daten zuzugreifen, was zu einem großen Reputationsschaden führt.

Längst sind Angriffe auf Schutzziele wie Vertraulichkeit, Integrität oder Verfügbarkeit keine Seltenheit mehr. Auch Cloud Anwendungen sind betroffen. Im Rahmen des Sicherheitstestprozesses können mögliche Sicherheitsrisiken bereits bei der Testplanung identifiziert werden, um Probleme frühzeitig zu erkennen und zu beheben.

Cloudbleed - ein Beispiel aus der Praxis 

Ein Beispiel für eine solche Sicherheitslücke ist Cloudbleed. Dabei handelt es sich, ähnlich wie bei Heartbleed1, um einen Sicherheitsfehler, der zu einem Buffer Overflow (Pufferüberlauf) führt, welcher es einem Angreifer ermöglicht, über das Ende eines Puffers hinaus Informationen aus dem Speicher des betroffenen Servers auszulesen. Cloudbleed wurde im Februar 2017 entdeckt und betraf Reverse-Proxys des amerikanischen Unternehmens für Webinfrastruktur Cloudflare2. Es konnten u.a. private Informationen wie HTTP-Cookies, Authentifizierungstokens und andere sensible Daten ausgelesen werden. Zum Teil handelte es sich dabei um Daten, die im Cache von Suchmaschinen gespeichert waren.

Die Fragen, die sich in diesem Zusammenhang stellen, sind:

  • Hätte dies verhindert werden können?
  • Hätte der Buffer Overflow Fehler schon frühzeitig, zum Beispiel im Rahmen des Testprozesses, erkannt werden können?

 Vom Testprozess zum Sicherheitstestprozess

Um Schwachstellen gezielt zu identifizieren, Risiken zu ermitteln und die Wirksamkeit von bereits bestehenden Schutzmaßnahmen nachzuweisen, können Sicherheitstests eingesetzt werden. Die in diesem Zusammenhang eingesetzten Testverfahren sollten dabei über den gesamten Testprozess hinweg berücksichtigt werden. So können nicht nur potenzielle Sicherheitslücken frühzeitig erkannt und geschlossen werden, sondern Sicherheitsaspekte gezielt bei der Planung, dem Entwurf und der Durchführung von Testaktivitäten berücksichtigt werden.

Der fundamentale Testprozess (nach ISTQB®) gibt einen Überblick darüber, welche Phasen im Rahmen des Testprozesses durchlaufen werden:

  • Testplanung
  • Testüberwachung und -steuerung
  • Testanalyse
  • Testentwurf
  • Testrealisierung
  • Testdurchführung
  • Testabschluss

Wie kann „Sicherheit“ nun in diesen Phasen des Testprozesses gezielt berücksichtigt werden? Welche Aktivitäten sind notwendig, um „Sicherheit“ in den Testprozess zu integrieren?

Testplanung und -steuerung

Im Rahmen der Testplanung muss der Umfang für die durchzuführenden Sicherheitstests festgelegt werden, sowie klare zu erreichende Sicherheitsziele definiert werden. Grundlage dafür ist eine Analyse der bestehenden Sicherheitsrisiken für die zu entwickelnde Software. Dabei kann es sich z.B. um potenziell vorhandene Schwachstellen handeln. Auf diese Weise können Komponenten der Software, die ein hohes Sicherheitsrisiko aufweisen, intensiver getestet werden, um diesem Risiko gezielt zu begegnen. Auch wird in der Testplanung festgelegt, welche Ressourcen speziell für den Sicherheitstest zur Verfügung stehen und es werden Schätzungen und Zeitpläne für die Testdurchführung erstellt. Im Rahmen der Testüberwachung und -steuerung kann auf die in der Testplanung festgelegten Kenngrößen zurückgegriffen werden, um zu überprüfen, ob die gesteckten Sicherheitsziele erreicht wurden und ggf. Korrekturmaßnahmen erforderlich sind.

Testanalyse und -entwurf

In der Phase der Testanalyse wird klassischerweise die Testbasis analysiert, um konkrete Testbedingungen zu identifizieren. Aus diesen werden dann im Rahmen des Testentwurfs Testfälle abgeleitet. Ergänzend sollten als Basis für die Ableitung von Sicherheitstests Sicherheitsrisikobewertungen, Sicherheitsanforderungen und Sicherheitsrichtlinien in der Testanalyse herangezogen werden. Auf Basis von Testzielen, Sicherheitsrisiken, Sicherheitsstandards oder bereits bekannten Schwachstellen können so wichtige Erkenntnisse über konkrete Sicherheitsgefährdungen gewonnen werden. Hinsichtlich dieser identifizierten Sicherheitsbedingungen können dann konkrete Sicherheitstestfälle abgeleitet werden.

Testrealisierung und -durchführung

Im Rahmen der Testrealisierung und -durchführung werden die konzeptuell erstellten Testfälle in manuellen oder automatisierten Tests umgesetzt. Dabei ist es gerade bei Sicherheitstests sinnvoll, eine Vielzahl von Perspektiven zu berücksichtigen:

  • Welche Gefährdungen ergeben sich durch interne Benutzer?
  • Wie können externe oder böswillige Benutzer meinem System Schaden zufügen oder sensible Informationen abgreifen?

Es müssen Sicherheitstestfälle, Testszenarien, Testskripte oder andere Testspezifikationen erstellt werden, die genau diesen Herausforderungen begegnen. Dabei können funktionale Sicherheitstests auf Basis definierter Sicherheitsspezifikationen oder funktionale Sicherheits- und Penetrationstests dank der Kenntnisse und Intuition des Testers durchgeführt werden. Die Testfälle, Testskripte und Dokumentation über die operative Durchführung er Tests sollte nachhaltig und zentral erfolgen, z.B. in einem Testmanagementwerkzeug.

Testabschluss

Nachdem die Sicherheitstests erfolgreich durchgeführt wurden, müssen die Testendekriterien bewertet und ein Abschlussbericht erstellt werden. Dazu müssen die Ergebnisse des Sicherheitstests evaluiert werden, um konkrete Schwachstellen angesichts der Testergebnisse zu identifizieren. Auch sollte die Sicherheitsrisikostufe auf Basis der durchgeführten Tests evaluiert werden und Zwischen- bzw. Abschlussergebnisse an relevante Stakeholder (z.B. die Geschäftsführung) übermittelt werden. Um die Testaktivitäten abzuschließen, sollten weiterhin sämtliche Testmittel und Testergebnisse archiviert werden, damit sie verfügbar sind, wenn sie für spätere Sicherheitstests benötigt werden.

Fazit

Können Sicherheitslücken, wie im Beispiel von Cloudbleed, also gezielt vermieden bzw. behoben werden? – Wir wissen, dass das möglich ist!

Im Rahmen des Sicherheitstestprozesses werden mögliche Sicherheitsrisiken bereits bei der Testplanung identifiziert. Dies kann z.B. auf Basis historischer Daten (d.h. bereits aufgetretener Sicherheitslücken) geschehen. In unserem Beispiel hätte also ein möglicher Pufferüberlauf, basierend auf der bereits existierenden Schwachstelle Heartbleed, als mögliches Sicherheitsrisiko erkannt werden können.

Im Rahmen der Testanalyse und des -entwurfs hätten dann gezielte Sicherheitstests und Maßnahmen entworfen werden können, um dem Risiko des Pufferüberlaufs begegnen zu können. So hätten zum Beispiel Codereviews mit einem Fokus auf sicherer Speicherverwaltung eingesetzt werden können, um Probleme frühzeitig zu erkennen und zu beheben.

Unsere Empfehlung: Berücksichtigen Sie daher von Anfang an sicherheitsrelevante Aspekte in der Gestaltung Ihres Testprozesses, um Sicherheitslücken von Anfang an zu vermeiden oder diese zumindest gezielt frühzeitig zu erkennen.

Neuen Kommentar schreiben

Ihre E-Mail Adresse wird nicht veröffentlicht.

NEUESTE BEITRÄGE

Lasst uns in die Snowflake abtauchen | Umzug eines DWH auf eine Snowflake - Teil 5
09.09.2022

Lasst uns in die Snowflake abtauchen | Umzug eines DWH auf eine Snowflake - Teil 5

Christian Hagen

In den ersten Teilen der Blogreihe haben wir beschrieben, wie du DataStage Jobs von (beispielweise) Oracle auf Snowflake umstellen kannst. In diesem Teil wollen wir uns auf Besonderheiten und Probleme stürzen, die bei einem Schwenk von Oracle zu Snowflake auftreten können und die sich als „Schätzchen“ in den Jobs und manuellem SQL verstecken können.

Data Engineering
ITGAIN UX UI
08.09.2022

Wie wir deinen Benutzer glücklich machen können

Lea Brauner

„UI is the sadle, the stirrups and the reins. UX is the feeling you get being able to ride the horse“, hat Dain Miller, ein Web Developer, einmal gesagt. In anderen Worten heißt das, dass man zwar ein User Interface braucht, um ein Programm oder eine Software zu bedienen, das aber noch nicht heißt, dass es mit diesem User Interface auch Spaß macht, die Software zu bedienen. Denn beim User Interface, der Benutzeroberfläche, handelt es sich lediglich um die Schnittstelle zwischen dem Benutzer und der Maschine, die ihn zum Ziel navigiert. Über die Optik oder Benutzbarkeit sagt das jedoch noch nichts aus.

Applications
Lasttests mit Shift-Left-Verschiebung
31.08.2022

Lasttests mit Shift-Left-Verschiebung

Sören Schmock

Lasttests gehören gemäß ISTQB® zu den nicht funktionalen Tests, mit denen Zeitverhalten, Ressourcenverbrauch, Stabilität und Skalierbarkeit einer Software oder Webseite (im folgenden „Anwendung“ genannt) überprüft werden. Der Lasttest wird durch Testspezialisten durchgeführt, um unter anderem zu bestimmen, ob die Anwendung einer erwarteten oder für die Zukunft geplanten Anzahl von Benutzern in der Performance (z. B. Anzeigegeschwindigkeit) noch Rechnung trägt. Schließlich möchte niemand auf die lange Rückmeldung einer Anwendung warten müssen.

Expertise