Sicherheitstests

TestmanagementDie Welt verändern, ein Bug nach dem anderen…

Stacks Image 1560759
Sicher ist, dass nichts sicher ist. Selbst das nicht.

Joachim Ringelnatz

Sicherheitstests

(nicht-funktionales Qualitätsmerkmal)
DDoS (Distributed Denial of Service)-Attacke: Hunderte von Zugriffen pro Sekunde auf die URL zum Download des Videoplayers VLC.

Sicherheit kostet Zeit und Geld. Sichere Software herzustellen ist keine Option, sondern zwingend erforderlich, um Werte zu schützen. Softwaretests sind vielschichtig und setzen entsprechendes Expertenwissen voraus.

Folgende Kriterien müssen u.a. überprüft und optimiert werden:
  • sichere Leitungen
  • verschlüsselte Protokolle
  • korrekte Firewalleinstellungen
  • aktuelle Rechteverwaltung
  • aktuelle Services
  • verschlüsselte Backups
  • richtige Fehlermeldungen
  • angepasste Datenbankrechte
  • sichere Hardware

Ein Penetrationstest ist ein umfassender Sicherheitstest der Computer oder ihrer Netzwerke, dies mit Mitteln und Methoden, die ein Angreifer anwenden würde, um unautorisiert in das System einzudringen (Penetration). Die Art der Sicherheitstests orientiert sich am Gefahrenpotential eines gefährdeten Systems, Netzwerks oder einer Anwendung.

Ziele von Penetrationstests sind:
  • die Identifikation von Schwachstellen
  • das Aufdecken potentieller Fehler, die sich aus der (fehlerhaften) Bedienung ergeben
  • die Erhöhung der Sicherheit auf technischer und organisatorischer Ebene und
  • die Bestätigung der IT-Sicherheit durch einen externen Dritten.
Das BSI empfiehlt beim Durchführen eines Penetrationstests folgenden Prozess:
  • Die Vorbereitungsphase dient zur gemeinsamen Zielsetzung und dem Testaufbau mit dem Kunden.
  • In der Informationsbeschaffungsphase versucht der Sicherheitsanalyst möglichst viele Informationen über das zu testende System zu erhalten.
  • Die gewonnenen Informationen werden anschließend einer Bewertung unterzogen.
  • Erst danach werden aktive Eindringungsversuche unternommen.
  • Anschließend werden die Ergebnisse gesammelt und in Form eines Berichts gebündelt. Dieser Bericht enthält auch Empfehlungen, wie mit eventuellen Sicherheitsproblemen umgegangen werden soll.
Begleitend zu allen fünf Phasen ist eine akribische Dokumentation der einzelnen Arbeitsschritte notwendig.

Die Grundwerte der IT-Sicherheit unterteilen sich wie folgt:
  • Vertraulichkeit
  • Integrität (Informationssicherheit)
  • Verfügbarkeit
Das Bundesamts für Sicherheit in der Informationstechnik (BSI) gibt eine Sammlung von IT-Grundschutzkatalogen heraus, die der Erkennung und Bekämpfung sicherheitsrelevanter Schwachstellen in IT-Umgebungen dienen. Die Sammlung dient Unternehmen und Behörden als Grundlage zum Erlangen einer Zertifizierung nach IT-Grundschutz. Durch die Zertifizierung zeigt eine Unternehmung, dass sie geeignete Maßnahmen zur Absicherung seiner IT-Systeme gegen IT-Sicherheitsbedrohungen unternommen hat.

OWASP (Open Web Application Security Project) hat die häufigsten 10 Sicherheits-Risiken und deren Bedeutung publiziert. Wir geben sie hiermit auszugsweise wieder.
Angriffsziel
Erläuterungen
Injection/
A1 Injection
Bei einer SQL-Injection sendet der Angreifer Verbindungsanfragen an den Webserver, wobei die Anfrage-Parameter mit SQL-Steuerzeichen versehen sind. Fängt die Webanwendung diese Steuerzeichen nicht ab, sondern sendet sie als Teil einer SQL-Abfrage an die Datenbank, kann der Angreifer entweder für ihn auf herkömmlichem Weg nicht zugängliche Daten auslesen oder Daten verändern.
Authentifizierung und Session Managed/
A2 Broken Authentication and Session Management
Login-Daten sowie generierte Passwörter sind nicht über das Internet zu versenden, sondern dem Nutzer die Möglichkeit zu geben, ein Passwort zu generieren.
Passwörter sollten qualitativ hochwertig sein.
Session-IDs sollten gewechselt werden, beispielsweise nach der Änderung der Zugriffsrechte, um Session-Fixation-Angriffe zu verhindern.
Cross-Site Scripting/
A3 Cross-Site Scripting (XSS)
Hinter der Bezeichnung Cross-Site Scripting (XSS) verbergen sich grundsätzlich verschiedene Angriffe. Beim clientseitigen XSS schleust der Angreifer HTML-Steuerzeichen und Code einer clientseitigen Skriptsprache, wie z. B. JavaScript, in eine Webseite ein, die in dem Webbrowser des Opfers ausgeführt wird.
Dieser Angriff nutzt dabei Sicherheitslücken bei der lokalen Ausführung der Skripte aus oder leitet eine Cross-Site Request Forgery ein.
Lücken bei der Konfiguration sind zu schießen, insbesondere bei dem Vorhandensein nicht privilegierter und privilegierte Seiten. Die Zugriffsrechte sind zu überprüfen und die IDs nicht im Klartext zu übertragen.
Vermeiden Sie Fehlkonfigurationen, z.B. durch die Verwendung von Standard-Installationen, bei denen mehr Dienste und Rechte bereitgestellt werden als benötigt werden. "Härten" Sie das System durch Abschalten nicht benötigter Dienste.
Seiten, die nicht direkt verlinkt sind, sind nicht bereitzustellen.
Trotz verschlüsselter Übertragungswege sind Passwörter umfassend zu verschlüsseln. Werden hierzu Hash-Algorithmen verwendet, so sind sie noch zu "salzen". Dabei wird an das verschlüsselte Passwort noch eine Zeichenkette angehängt.
Cross-Site-Request-Forgery setzen eine bestehende Session zwischen dem Benutzer und der Webanwendung voraus. Dabei versucht der Angreifer über verschiedene Techniken (ggf. XSS) den Benutzer oder über ein clientseitiges Script auch direkt den Browser zum Aufruf einer manipulierten URL zu bewegen. Anders als beim Session-Hijacking erlangt der Angreifer selbst aber keine Kenntnis von der Session-ID, da der Angriff ausschließlich im Browser des Benutzers stattfindet.
Das HTTP-Protokoll ist möglichst gegen das sichere HTTPS-Protokoll auszutauschen. Dabei ist darauf zu achten, dass insbesondere die Session-ID nie dem Angreifer in die Hände gespielt wird. Dies ist insbesondere bei dem Einsatz von beiden Protokollen zu beachten.
Auch ist die Verwendung von gültigen Zertifikaten sicherzustellen.
Automatisierte Weiterleitungen von Benutzern sind gängige Praxis bei vielen Websites. Diese Links können von Dritten leicht missbraucht werden. Deshalb sollten möglichst nur relative Links oder andere Techniken zum Einsatz kommen (ID-Werte, Bezeichner in Links), die den Redirect gegen Manipulation absichern.
Injection/
A1 Injection
Bei einer SQL-Injection sendet der Angreifer Verbindungsanfragen an den Webserver, wobei die Anfrage-Parameter mit SQL-Steuerzeichen versehen sind. Fängt die Webanwendung diese Steuerzeichen nicht ab, sondern sendet sie als Teil einer SQL-Abfrage an die Datenbank, kann der Angreifer entweder für ihn auf herkömmlichem Weg nicht zugängliche Daten auslesen oder Daten verändern.
Authentifizierung und Session Managed/
A2 Broken Authentication and Session Management
Login-Daten sowie generierte Passwörter sind nicht über das Internet zu versenden, sondern dem Nutzer die Möglichkeit zu geben, ein Passwort zu generieren.
Passwörter sollten qualitativ hochwertig sein.
Session-IDs sollten gewechselt werden, beispielsweise nach der Änderung der Zugriffsrechte, um Session-Fixation-Angriffe zu verhindern.
Cross-Site Scripting/
A3 Cross-Site Scripting (XSS)
Hinter der Bezeichnung Cross-Site Scripting (XSS) verbergen sich grundsätzlich verschiedene Angriffe. Beim clientseitigen XSS schleust der Angreifer HTML-Steuerzeichen und Code einer clientseitigen Skriptsprache, wie z. B. JavaScript, in eine Webseite ein, die in dem Webbrowser des Opfers ausgeführt wird.
Dieser Angriff nutzt dabei Sicherheitslücken bei der lokalen Ausführung der Skripte aus oder leitet eine Cross-Site Request Forgery ein.
Lücken bei der Konfiguration sind zu schießen, insbesondere bei dem Vorhandensein nicht privilegierter und privilegierte Seiten. Die Zugriffsrechte sind zu überprüfen und die IDs nicht im Klartext zu übertragen.
Vermeiden Sie Fehlkonfigurationen, z.B. durch die Verwendung von Standard-Installationen, bei denen mehr Dienste und Rechte bereitgestellt werden als benötigt werden. "Härten" Sie das System durch Abschalten nicht benötigter Dienste.
Seiten, die nicht direkt verlinkt sind, sind nicht bereitzustellen.
Trotz verschlüsselter Übertragungswege sind Passwörter umfassend zu verschlüsseln. Werden hierzu Hash-Algorithmen verwendet, so sind sie noch zu "salzen". Dabei wird an das verschlüsselte Passwort noch eine Zeichenkette angehängt.
Cross-Site-Request-Forgery setzen eine bestehende Session zwischen dem Benutzer und der Webanwendung voraus. Dabei versucht der Angreifer über verschiedene Techniken (ggf. XSS) den Benutzer oder über ein clientseitiges Script auch direkt den Browser zum Aufruf einer manipulierten URL zu bewegen. Anders als beim Session-Hijacking erlangt der Angreifer selbst aber keine Kenntnis von der Session-ID, da der Angriff ausschließlich im Browser des Benutzers stattfindet.
Das HTTP-Protokoll ist möglichst gegen das sichere HTTPS-Protokoll auszutauschen. Dabei ist darauf zu achten, dass insbesondere die Session-ID nie dem Angreifer in die Hände gespielt wird. Dies ist insbesondere bei dem Einsatz von beiden Protokollen zu beachten.
Auch ist die Verwendung von gültigen Zertifikaten sicherzustellen.
Automatisierte Weiterleitungen von Benutzern sind gängige Praxis bei vielen Websites. Diese Links können von Dritten leicht missbraucht werden. Deshalb sollten möglichst nur relative Links oder andere Techniken zum Einsatz kommen (ID-Werte, Bezeichner in Links), die den Redirect gegen Manipulation absichern.
Warten Sie nicht bis etwas passiert!
Stellen Sie sicher, dass alle wichtigen Sicherheitstests durchgeführt werden.
Wir unterstützen Sie dabei.
U
Sicherheitstests
© 2016 Holger Mayer Consulting HMC2