Ermittlung und Einstufung von Bedrohungen

Kategorien von Bedrohungen

Um Bedrohungen besser bestimmen zu können, hilft es sie nach Kategorien einzuordnen. Es sind dabei verschiedene Muster bzw. Klassifizierungen von Kategorien bekannt, von denen einige im Folgenden vorgestellt werden.

STRIDE

Eine der Klassifizierungen von Bedrohungen heißt STRIDE, was für die Anfangsbuchstaben der Kategorien steht. Die Kategorien orientieren sich an den Zielen eines Angreifers:

  • Spoofing
  • Tampering
  • Repudiation
  • Information Disclosure
  • Denial of Service
  • Elevation of Privilege

 

Typ Erklärung Security Control
Spoofing – (Verschleierung) Methode zur Verschleierung der eigenen Identität. Beispielsweise wird versucht den Account eines anderen Benutzers zu übernehmen und sich als er auszugeben, oder einfacher: die eigene Absenderangabe zu fälschen. Authentication
(Authentifizierung)
Tampering – (Verfälschung) Bösartige Veränderung/Modifikation von Daten, z.B. in einer Datenbank oder in einem Netzwerk Integrity
(Integrität)
Repudiation – (Leugbarkeit) Bösartige Operationen in einem System, das keine Möglichkeiten bietet, diese zu bemerken und zu protokollieren. Non-Repudiation
(Protokolle für die Nachweisbarkeit; Unleugbarkeit des Ursprungs)
Information disclosure – (Enthüllung von Geheimnissen) Lesen von Informationen für die keine Berechtigung besteht Confidentiality
(Geheimhaltung)
Denial of service – (Dienstverweigerung) Überlastung von Systemen, so dass diese für den normalen Betrieb nicht mehr zu Verfügung stehen Availability
(Verfügbarkeit)
Elevation of privilege – (Erhöhen der Privilegien) Erweitern von Zugriffsrechten, um unautorisierte Informationen zu erlangen oder um ein System zu kompromittieren. Authorization
(Autorisierung)

 

Bedrohungen können durch das STRIDE-Modell normalerweise einer dieser Kategorien zugeordnet werden. Dadurch ist eine Kategorisierung möglich, durch die die Bedrohungen strategisch bekämpft werden können, indem Standard-Strategien angewandt werden beispielsweise bei der Authentifizierung und der Autorisierung.

ASF

Eine weitere Klassifizierung von Bedrohungen wurde mit ASF (Application Security Frame) zusammengestellt.  ASF verwendet folgende Kategorien, um Sicherheits-Schwachstellen zu sortieren und organisieren.

  1. Eingabe-Validierung und Daten-Validierung
  2. Authentifizierung
  3. Autorisierung
  4. Konfigurations-Management
  5. Sensible Daten
  6. Session Management
  7. Kryptographie
  8. Exception Management
  9. Auditing und Logging

 

Mit Hilfe dieser 9 Kategorien lassen sich viele der Aktivitäten, Schwachstellen und Gegenmaßnahmen eingliedern, um in die Fülle der Themen eine Struktur zu bekommen.

Beschreibung der ASF-Kategorien

Kategorie Beschreibung
Eingabe-Validierung und Daten-Validierung Woher weiß man, dass die Eingabedaten, die die Anwendung entgegennimmt, valide und sicher sind? Eingabe-Validierung bezeichnet wie die Applikation Eingabedaten filtert, umwandelt oder ablehnt, bevor sie zur weiteren Verarbeitung verwendet werden. Im schlimmsten Fall können Eingabedaten Angriffsvektoren sein, die Schadcode ausführen. Eingabedaten betreffen die Entry-Points, Daten, die das System verlassen betreffen die Exit-Points. Auf diese müssen validiert werden, wenn den Datenquellen nicht vertraut werden kann.
Authentifizierung Wer sind sie? Authentifizierung ist der Prozess, wo eine Entität die Identität einer anderen Entität nachweist, üblicherweise durch Credentials wie Benutzername und Passwort.
Autorisierung Was dürfen sie? Autorisierung regelt, für welche Operationen und auf welche Daten ein Benutzer bzw. eine Entität in einer Applikation berechtigt ist.
Konfigurations-Management Wie wird die Anwendung betrieben und verwaltet? Das Konfigurations-Management beinhaltet welche Ressourcen zu verwenden sind und wie diese gesichert werden.
Sensible Daten Wie behandelt die Anwendung sensible Daten? Hier wird zugeordnet, wie sensible Daten geschützt werden, entweder im Speicher, oder bei der Übertragung oder beim Persistieren.
Session Management Wie geht die Anwendung mit den Benutzer-Sessions um und wie werden sie geschützt? Eine Session beinhaltet eine ganze Serie von Interaktionen zwischen einem Benutzer und der Web-Anwendung.
Kryptographie Wie werden Geheimnisse bewahrt und geschützt (Vertraulichkeit)? Wie wird sichergestellt, dass Daten nicht manipuliert werden (Integrität)? Sind die kryptographischen Algorithmen ausreichend sicher?
Exception Management Wie werden Fehler in der Anwendung behandelt? Wie viel soll preisgegeben werden? Werden benutzerfreundliche Meldungen dem Aufrufer angezeigt? Werden wertvolle Informationen dem Aufrufer übergeben? Bleibt die Anwendung in einem sicheren Zustand?
Auditing und Logging Wer hat wann was getan? Auditing und Logging behandelt wie die Applikation sicherheitsrelevante Aktionen speichert,

Schwachstellen katalogisiert durch ASF

Kategorie Schwachstellen
Eingabe-Validierung und Daten-Validierung
  • Verwendung unvalidierter Eingabedaten im HTML-Output-Stream
  • Verwendung unvalidierter Eingabedaten um SQL-Abfragen zu generieren
  • Vertrauen auf Client-seitige Validierung (diese darf nur der Usability dienen)
  • Verwenden von Dateinamen, URLs oder Benutzernamen zu Security-Entscheidungen
  • Verwenden nur von eigenen Applikations-Filtern für bösartigen Input
  • Suchen nach bösartigen Mustern in Eingabedaten
  • Vertrauen auf Gutartigkeit von Daten aus DBs, File Shares oder Netzwerkressourcen.
  • Unvollständige Validierung aller Eingaben aller Quellen, einschließlich Cookies, Requestparameter, Http-Header, DB- und Netzwerk-Quellen
Authentifizierung
  • Verwendung von schwachen Passwörtern
  • Speichern von Zugangsdaten im Klartext (in Konfigurationsdateien oder DB)
  • Senden von Zugangsdaten im Klartext übers Netzwerk
  • Erlauben von über-privilegierten Accounts
  • Erlauben von überlanger Session-Lebenszeit
  • Vermischen von Personalisierung mit Authentifizierung
Autorisierung
  • Vertrauen auf einen einzigen Torwächter
  • Versäumen System-Ressourcen vor Zugriff der Anwendung zu sperren
  • Versäumen den DB-Zugriff auf spezifische Stored-Procedures zu begrenzen
  • Verwenden von unpassender Separation von Privilegien
Konfigurations-Management
  • Verwenden von unsicheren Administrations-Schnittstellen
  • Verwenden unsicherer Konfigurations-Speicher
  • Speichern von Klartext-Konfigurationen
  • Zu viele Administratoren
  • Verwenden von über-privilegierten Accounts für System- und Service-Prozesse
Sensible Daten
  • Unnötiges Speichern von Geheimnissen
  • Speichern von Geheimnissen im Code
  • Speichern von Geheimnissen im Klartext
  • Verwenden von sensiblen Daten im Klartext übers Netzwerk
Session Management
  • Senden von Session-IDs über ungesicherte Kanäle
  • Erlauben von verlängerten Session-Lebenszyklen
  • Verwenden unsicherer Session-Status Speicher
  • Platzieren von Session-IDs in Query-Strings
Kryptographie
  • Verwenden von eigenen Kryptographie-Algorithmen
  • Verwenden der falschen Algorithmen oder zu kleiner Schlüssellänge
  • Verwenden ungeschützter Verschlüsselungs-Keys
  • Verwenden derselben Keys für eine lange Zeit
  • Unsicherer Schlüsselaustausch
Exception Management
  • Kein Verwenden von strukturiertem Exceptionhandling
  • Dem Client zu viele Informationen verraten
Auditing und Logging
  • Kein Audit zu missglückten Login-Versuchen
  • Kein sicheres Schreiben von Audit-Files ()
  • Kein Audit über alle Schichten der Architektur (Präsentation, Business-Logik, Datenzugriffsschicht)

Weiter zum 5. Teil