Archiv der Kategorie: IT Sicherheit u. Cybersecurity

Wie funktionieren Buffer Overflows und/oder Heap Overflows?

Intention

Vor einer aktuell kritischen Sicherheitslücke von älteren Microsoft Server Versionen, Windows 11 und Windows 10 wird in einem aktuellen Artikel auf heise.de gewarnt.

Diese offen gelegten Schwachstellen / Sicherheitslücken werden in einer öffentlichen Online-Datenbank aufgelistet:

Konkret handelt es sich dabei um die Ausnutzung von Heap-Overflows für das Einschleusen von Schadcode / schädlichem Code. In diesem Artikel möchte ich darauf eingehen, wie solche Heap-Overflows funktionieren, indem ich die Fragen beantworte, die sich mir vorher gestellt hatten.

Was ist der „Heap“, der überlaufen kann?

Zunächst ist eine Abgrenzung darüber nötig, was ein Heap eigentlich ist. In der Informatik gibt es zwei verschiedene Konzepte, die beide als „Heap“ bezeichnet werden:

  1. Heap im Speicher-Management: Dies bezieht sich auf den Bereich des Speichers, der für dynamische Speicherzuweisungen verwendet wird. Wenn Sie malloc() oder ähnliche Funktionen verwenden, wird der Speicher aus diesem Heap zugewiesen. Ein Heap Overflow tritt auf, wenn mehr Daten in einen Speicherbereich geschrieben werden, als dafür vorgesehen ist, was zu einer Beschädigung des Speichers führen kann.
  2. Heap als Datenstruktur: Wir haben in „Algorithmen und Datenstrukturen“ ebenfalls über Heaps gesprochen. Dies ist eine spezielle Baumstruktur, die bestimmte Eigenschaften erfüllt. Zum Beispiel ist ein Max-Heap ein binärer Baum, bei dem jeder Elternknoten größer oder gleich seinen Kindknoten ist. Diese Art von Heap wird häufig in Algorithmen wie Heapsort oder für Prioritätswarteschlangen verwendet.

Im Nachfolgenden beziehen wir uns auf Definition 1, da der Heap im dynamisch anforderbaren Speicherbereich liegt. Der Prozess kann also von diesem Bereich neuen Speicher für sich anfordern. Der Heap des Prozessspeichers beschränkt sich bei modernen Betriebssystemen auf den ausgeführten Prozess, was bedeutet dass ein Prozess nicht auf den Prozessspeichers eines anderen Prozesses zugreifen kann. Bei früheren Betriebssystemen wie beispielsweise MS DOS war dies noch nicht der Fall, da man hier z.B. direkt in den Bildwiederholspeicher Pixel in einer Farbe durch Speichermanipulation setzen konnte.

Ist die in Definition 1 genannte Beschädigung physisch?

Nein, die Beschädigung bei einem Heap Overflow ist nicht physisch. Sie betrifft den Speicherbereich des Computers und führt zu einer logischen Beschädigung der Daten. Das bedeutet, dass die Daten im Speicher durcheinandergebracht oder überschrieben werden, was zu Programmabstürzen, unerwartetem Verhalten oder Sicherheitslücken führen kann. Physische Hardware wird dabei nicht beschädigt.

Gibt es ein Beispiel, wie ein Heap Overflow zu einer Sicherheitslücke führen kann?

Stellen wir uns vor, ein Programm verwendet die Funktion malloc(), um Speicher für Benutzereingaben zu reservieren, überprüft jedoch nicht, ob die Eingabe die Größe des zugewiesenen Speichers überschreitet. Ein Angreifer könnte dann eine übermäßig große Eingabe senden, die mehr Speicherplatz benötigt, als zugewiesen wurde. Dies führt dazu, dass benachbarte Speicherbereiche überschrieben werden.

Ein konkretes Beispiel ist der Heap Overflow Angriff auf den Microsoft Internet Explorer im Jahr 2014. Angreifer nutzten eine Schwachstelle aus, bei der sie durch gezielte Manipulation des Heaps die Kontrolle über den Programmfluss erlangen konnten. Sie überschrieben kritische Datenstrukturen im Speicher und führten so schädlichen Code aus

Solche Angriffe können schwerwiegende Folgen haben, einschließlich Datenverlust, unbefugtem Zugriff auf Systeme und der Ausführung von Schadsoftware.

Wie liegen diese Kontrollstrukturen im Speicher vor?

Kontrollstrukturen wie Schleifen, Bedingungen und Funktionsaufrufe werden im Speicher durch den Programmcode und die zugehörigen Datenstrukturen repräsentiert. Hier ist eine kurze Übersicht, wie sie im Speicher organisiert sind:

  1. Programmcode: Der eigentliche Code der Kontrollstrukturen wird im Textsegment des Speichers abgelegt. Dies umfasst die Anweisungen, die der Prozessor ausführt.
  2. Stack: Der Stack-Speicher wird verwendet, um lokale Variablen, Funktionsaufrufe und Rücksprungadressen zu speichern. Wenn eine Funktion aufgerufen wird, werden die Parameter und die Rücksprungadresse auf den Stack gelegt. Bei Schleifen und Bedingungen werden die aktuellen Zustände und Variablen ebenfalls auf dem Stack verwaltet.
  3. Heap: Dynamisch zugewiesene Speicherbereiche, die durch Funktionen wie malloc() angefordert werden, befinden sich im Heap. Kontrollstrukturen selbst nutzen den Heap nicht direkt, aber die Daten, die sie verarbeiten, können dort gespeichert sein.

Ein Beispiel für eine Sicherheitslücke durch einen Heap Overflow ist, wenn ein Angreifer den Heap so manipuliert, dass er die Kontrollstrukturen im Speicher überschreibt. Dadurch kann der Angreifer den Programmfluss ändern und schädlichen Code ausführen

Gibt es ein Beispiel, was eine Kontrollstruktur im Heap abspeichern könnte, was dazu führt dass sie manipuliert wird?

Ja, ein Beispiel für eine Kontrollstruktur, die im Heap gespeichert wird und manipuliert werden kann, sind Zeiger auf Funktionszeiger innerhalb von Datenstrukturen. Hier ist ein konkretes Szenario:

Stellen wir uns vor, ein Programm verwendet eine Datenstruktur, die einen Funktionszeiger enthält. Dieser Funktionszeiger zeigt auf eine Routine, die aufgerufen wird, wenn bestimmte Bedingungen erfüllt sind. Wenn ein Heap Overflow auftritt, kann ein Angreifer den Funktionszeiger überschreiben und ihn auf eine schädliche Routine umleiten.

Ein Beispiel für einen solchen Angriff ist der Heap Overflow Angriff auf den iOS-Kernel. In diesem Fall wurde der Heap so manipuliert, dass ein überlaufener Speicherbereich mit einem kritischen Datenobjekt kollidierte. Der Angreifer konnte dadurch den Funktionszeiger innerhalb des Datenobjekts überschreiben und die Kontrolle über den Programmfluss übernehmen.

In dem beschriebenen Szenario hat der Angreifer den Funktionszeiger im Heap-Speicherbereich überschrieben. Der Heap wird für dynamische Speicherzuweisungen verwendet, und in diesem Fall wurde ein Funktionszeiger innerhalb einer Datenstruktur im Heap manipuliert. Durch den Heap Overflow konnte der Angreifer den Funktionszeiger so ändern, dass er auf schädlichen Code zeigt, anstatt auf die ursprünglich vorgesehene Funktion.

Wo lag der schädliche Code, auf den der Funktionszeiger umgeschrieben wurde?

Der schädliche Code, auf den der Funktionszeiger umgeschrieben wurde, kann sich an verschiedenen Stellen im Speicher befinden. Häufig wird er jedoch im Heap oder im Textsegment des Speichers platziert.

Hier sind die beiden häufigsten Szenarien:

  1. Heap: Der Angreifer kann den schädlichen Code direkt im Heap platzieren, indem er eine übermäßige Eingabe sendet, die den Heap überläuft und den Funktionszeiger überschreibt. Der Funktionszeiger wird dann auf den schädlichen Code im Heap umgeleitet.
  2. Textsegment: In einigen Fällen kann der Angreifer den Funktionszeiger so manipulieren, dass er auf bereits vorhandenen schädlichen Code im Textsegment zeigt. Dies kann durch das Einfügen von Shellcode in den Speicher erreicht werden, der dann durch den manipulierten Funktionszeiger ausgeführt wird

Kann man sich auf seinem Rechner den Heap anzeigen lassen?

Es ist möglich, den Heap-Speicherinhalt auf seinem Rechner anzuzeigen, allerdings erfordert dies spezielle Tools und Kenntnisse. Hier sind einige Methoden, wie der Heap-Speicher untersucht werden kann:

  1. Debugger: Mit Debuggern wie GDB (GNU Debugger) oder WinDbg (Windows Debugger) kann man den Speicher eines laufenden Programms untersuchen. Diese Tools ermöglichen es dir, den Heap-Speicher zu durchsuchen und zu analysieren.
  2. Heap-Profiler: Tools wie Valgrind (insbesondere das Modul Massif) oder Visual Studio Profiler können verwendet werden, um den Heap-Speicher zu profilieren und Speicherlecks sowie Speicherüberläufe zu identifizieren.
  3. Speicher-Dump-Analyse: Mit einem Speicher-Dump (Abbild des Speichers) eines laufenden Programms erstellen und diesen mit Tools wie WinDbg oder GDB analysieren. Dies ermöglicht, den Zustand des Heaps zu einem bestimmten Zeitpunkt zu untersuchen.

Hier ist ein einfaches Beispiel, wie man mit GDB den Heap-Speicher eines Programms untersuchen kannst:

gdb ./das_programm
(gdb) run
(gdb) info proc mappings
(gdb) x/20xw 0xheap_start_address

In diesem Beispiel ersetzt man./das_programm durch den Namen des Programms und 0xheap_start_address durch die Startadresse des Heaps, die aus den Speicherzuordnungen kommt.

Wie findet man eine Benutzereingabe, die zu einem Heap Overflow führt?

Das Finden einer Benutzereingabe, die zu einem Heap Overflow führt, ist eine komplexe Aufgabe und erfordert ein tiefes Verständnis des Zielprogramms sowie der Art und Weise, wie es Speicher verwaltet. Hier sind einige Schritte, die oft verwendet werden:

  1. Quellcode-Analyse: Durchsuche den Quellcode des Programms nach Stellen, an denen dynamischer Speicher zugewiesen wird (z.B. durch malloc()calloc()realloc()). Achte besonders auf Funktionen, die Benutzereingaben verarbeiten.
  2. Fuzzing: Verwende Fuzzing-Tools, um das Programm mit zufälligen oder speziell gestalteten Eingaben zu testen. Fuzzing kann helfen, Schwachstellen zu finden, indem es das Programm mit einer Vielzahl von Eingaben bombardiert und nach Abstürzen oder ungewöhnlichem Verhalten sucht. Beispiele für Fuzzing-Tools sind AFL (American Fuzzy Lop) und LibFuzzer.
  3. Manuelle Tests: Erstelle manuell Eingaben, die die Grenzen der Puffer überschreiten könnten. Dies kann durch das Senden von sehr langen Zeichenketten oder durch das Einfügen spezieller Zeichenfolgen geschehen, die das Programm möglicherweise nicht korrekt verarbeitet.
  4. Debugging: Verwende Debugger wie GDB oder WinDbg, um das Programm während der Ausführung zu überwachen. Setze Breakpoints an kritischen Stellen und beobachte, wie das Programm auf verschiedene Eingaben reagiert. Achte auf Speicherüberläufe und überprüfe, ob der Heap beschädigt wird.
  5. Speicheranalyse-Tools: Nutze Tools wie Valgrind oder AddressSanitizer, um Speicherprobleme zu erkennen. Diese Tools können helfen, Speicherlecks, Überläufe und andere Speicherprobleme zu identifizieren.

Hier ist ein einfaches Beispiel für Fuzzing mit AFL:

# Installiere AFL
sudo apt-get install afl

# Instrumentiere das Zielprogramm
afl-gcc -o zielprogramm zielprogramm.c

# Führe AFL aus
afl-fuzz -i input_dir -o output_dir ./zielprogramm

Gibt es ein Beispielcode in C oder C++, wie man einen Heap Overflow verursachen kann?

Dieser Code sollte nur zu Lernzwecken dienen und nicht in einer produktiven Umgebung verwendet werden, da er Sicherheitsrisiken birgt.

Hier ist ein Beispielcode:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void vulnerable_function(const char *input) {
    // Allokiere einen Puffer von 10 Bytes auf dem Heap
    char *buffer = (char *)malloc(10 * sizeof(char));
    if (buffer == NULL) {
        fprintf(stderr, "Speicherzuweisung fehlgeschlagen\n");
        exit(1);
    }

    // Kopiere die Eingabe in den Puffer ohne Größenüberprüfung
    strcpy(buffer, input);

    // Ausgabe des Puffers
    printf("Pufferinhalt: %s\n", buffer);

    // Freigabe des Puffers
    free(buffer);
}

int main(int argc, char *argv[]) {
    if (argc < 2) {
        fprintf(stderr, "Verwendung: %s <Eingabe>\n", argv[0]);
        return 1;
    }

    // Aufruf der anfälligen Funktion mit Benutzereingabe
    vulnerable_function(argv[1]);

    return 0;
}

In diesem Beispiel wird ein Puffer von 10 Bytes auf dem Heap allokiert. Die Funktion strcpy kopiert die Benutzereingabe in diesen Puffer, ohne die Größe der Eingabe zu überprüfen. Wenn die Eingabe länger als 10 Bytes ist, wird der Puffer überlaufen, was zu einem Heap Overflow führt.

Mann kann dieses Programm kompilieren und ausführen, um das Verhalten zu beobachten:

gcc -o heap_overflow_example heap_overflow_example.c
./heap_overflow_example "Dies ist eine sehr lange Eingabe, die den Puffer überläuft"

Dies wird zu einem Heap Overflow führen und möglicherweise das Programm zum Absturz bringen oder unerwartetes Verhalten verursachen.

Kann dieses Programm auch Speicherbereiche anderer Programme überschreiben und diese manipulieren?

Nein, dieses Programm kann nicht direkt Speicherbereiche anderer Programme überschreiben und manipulieren. In modernen Betriebssystemen gibt es Schutzmechanismen, die verhindern, dass ein Programm auf den Speicherbereich eines anderen Programms zugreift. Diese Schutzmechanismen umfassen:

  1. Speicherschutz: Betriebssysteme wie Windows, Linux und macOS verwenden Speicherschutzmechanismen, um sicherzustellen, dass jedes Programm nur auf seinen eigenen Speicherbereich zugreifen kann. Versuche, auf den Speicherbereich eines anderen Programms zuzugreifen, führen zu einer Speicherzugriffsverletzung (Segmentation Fault) und dem Absturz des Programms.
  2. Adressraum-Layout-Randomisierung (ASLR): ASLR ist eine Sicherheitsfunktion, die die Speicheradressen von Programmcode, Daten und Bibliotheken zufällig anordnet. Dies erschwert es Angreifern, vorherzusagen, wo sich bestimmte Speicherbereiche befinden, und macht Exploits schwieriger.
  3. Benutzer- und Kernel-Modus: Betriebssysteme trennen den Speicher in Benutzer- und Kernel-Modus. Programme laufen im Benutzermodus und haben keinen direkten Zugriff auf den Kernel-Speicherbereich, was die Sicherheit weiter erhöht.

Ein Heap Overflow innerhalb eines Programms kann jedoch dazu führen, dass das Programm selbst abstürzt oder unerwartetes Verhalten zeigt. In einem Szenario, in dem ein Angreifer den Heap Overflow ausnutzt, könnte der Angreifer schädlichen Code innerhalb des betroffenen Programms ausführen, aber nicht direkt andere Programme beeinflussen.

ISO 27001: Interne Audits planen und durchführen

Ein internes Audit wird durchgeführt, um die Wirksamkeit, Konformität und Effektivität eines Managementsystems zu bewerten.

Vorbereitung: Erstellen Sie ein Audit-Programm

Ein Auditprogramm ist ein systematischer Ansatz zur Planung, Organisation und Durchführung von Audits in einer Organisation. Es handelt sich um einen Rahmen oder einen Leitfaden, der festlegt, wie interne oder externe Audits durchgeführt werden.

Das Auditprogramm der Organisation sollte in der Regel im Voraus bekannt gegeben werden. Dies ermöglicht den betroffenen Mitarbeitern und Abteilungen, sich auf das Audit vorzubereiten und die erforderlichen Informationen und Dokumente bereitzustellen.

Die genaue Zeitspanne, in der das Auditprogramm angekündigt wird, kann je nach Organisation und Art des Audits variieren. In der Regel wird das Auditprogramm jedoch einige Wochen oder sogar Monate im Voraus angekündigt, um ausreichend Zeit für die Vorbereitung zu gewährleisten.

Die Ankündigung des Auditprogramms sollte die folgenden Informationen enthalten:

  1. Datum und Zeitraum des Audits: Geben Sie den genauen Zeitpunkt oder den Zeitraum an, in dem das Audit stattfinden wird. Dies ermöglicht den betroffenen Mitarbeitern, ihre Verfügbarkeit entsprechend zu planen.
  2. Auditbereich und -ziel: Beschreiben Sie den Bereich des Managementsystems, der auditiert wird, sowie das Ziel des Audits. Dies hilft den betroffenen Mitarbeitern, sich auf die relevanten Prozesse, Verfahren und Dokumente vorzubereiten.
  3. Kontaktpersonen: Nennen Sie die Auditoren und die Kontaktpersonen, an die sich die Mitarbeiter wenden können, wenn sie Fragen oder Bedenken haben oder weitere Informationen benötigen.
  4. Vorbereitungshinweise: Geben Sie Anleitungen und Hinweise zur Vorbereitung auf das Audit. Dies kann beispielsweise die Bereitstellung von Dokumenten, Aufzeichnungen oder Zugang zu bestimmten Räumlichkeiten umfassen.

Die frühzeitige Bekanntgabe des Auditprogramms ermöglicht es der Organisation, einen reibungslosen Ablauf des Audits zu gewährleisten und den betroffenen Mitarbeitern die Möglichkeit zu geben, sich angemessen vorzubereiten. Es fördert auch die Transparenz und Offenheit im Auditprozess.

Schritte für die Durchführung eines internen Audits

Hier sind die grundlegenden Schritte, die bei der Durchführung eines internen Audits üblicherweise befolgt werden:

  1. Vorbereitung:
    • Festlegung des Auditumfangs und -ziels: Definieren Sie den Bereich des Managementsystems, der geprüft werden soll, sowie das Ziel des Audits.
    • Auditplanung: Erstellen Sie einen detaillierten Auditplan, der den Zeitplan, die Auditmethoden, die zu prüfenden Dokumente und Verfahren sowie die zugewiesenen Auditoren enthält.
    • Auswahl des Auditteams: Benennen Sie erfahrene und qualifizierte interne Auditoren, die unabhängig und objektiv das Audit durchführen.
  2. Durchführung des Audits:
    • Eröffnungsbesprechung: Beginnen Sie das Audit mit einer Eröffnungsbesprechung, um den Zweck des Audits zu erläutern, den Ablauf zu erläutern und Erwartungen zu klären.
    • Datenerhebung: Sammeln Sie Informationen durch Beobachtungen, Interviews mit Mitarbeitern, Überprüfung von Dokumenten und Aufzeichnungen sowie ggf. technische Prüfungen.
    • Bewertung und Analyse: Bewerten Sie die erhobenen Daten, um die Konformität mit den Anforderungen des Managementsystems zu beurteilen und potenzielle Schwachstellen oder Verbesserungsmöglichkeiten zu identifizieren.
    • Dokumentation: Halten Sie Ihre Feststellungen, Abweichungen, Empfehlungen und Verbesserungspotenziale in Auditberichten oder Checklisten fest.
  3. Kommunikation der Ergebnisse:
    • Abschlussbesprechung: Halten Sie eine Abschlussbesprechung ab, um die Ergebnisse des Audits mit dem geprüften Personal zu teilen und eventuelle Missverständnisse zu klären.
    • Auditbericht: Erstellen Sie einen schriftlichen Auditbericht, der die Ergebnisse des Audits, die identifizierten Abweichungen und Verbesserungsvorschläge enthält.
    • Follow-up: Überwachen Sie die Umsetzung von Korrekturmaßnahmen und überprüfen Sie bei Bedarf die Wirksamkeit der getroffenen Maßnahmen.
  4. Nachverfolgung:
    • Überwachung und Überprüfung: Überwachen Sie die Umsetzung von Korrekturmaßnahmen und überprüfen Sie deren Wirksamkeit im Laufe der Zeit.
    • Planung weiterer Audits: Basierend auf den Ergebnissen und Erkenntnissen des internen Audits planen Sie weitere Audits, um die kontinuierliche Verbesserung des Managementsystems sicherzustellen.

Die genaue Vorgehensweise kann je nach Organisation und Art des Managementsystems variieren. Wichtig ist jedoch, dass das interne Audit unabhängig, objektiv und systematisch durchgeführt wird, um die Konformität mit den Anforderungen festzustellen und Verbesserungspotenziale zu identifizieren.

Was steht in einem Audit-Programm nach ISO 27007?

Die Norm ISO/IEC 27007:2020 „Information technology – Security techniques – Guidelines for information security management systems auditing“ enthält Leitlinien für das Auditieren von Informationssicherheitsmanagementsystemen (ISMS). Ein Audit-Programm nach ISO 27007 umfasst typischerweise die folgenden Informationen:

  1. Zielsetzung: Das Audit-Programm sollte seine Ziele klar definieren. Diese können beispielsweise die Bewertung der Konformität mit den Anforderungen der ISO/IEC 27001-Norm, die Identifizierung von Schwachstellen oder die Überprüfung der Effektivität des ISMS sein.
  2. Auditbereich und Umfang: Das Audit-Programm legt den Bereich oder die Bereiche des ISMS fest, die auditiert werden sollen. Es definiert den Umfang des Audits, einschließlich der Standorte, Prozesse, Abteilungen oder Systeme, die einbezogen werden sollen.
  3. Auditverfahren und -methoden: Das Audit-Programm beschreibt die spezifischen Verfahren und Methoden, die während des Audits angewendet werden sollen. Dies kann beispielsweise die Durchführung von Interviews, Überprüfung von Dokumenten und Aufzeichnungen, Beobachtung von Prozessen oder technische Prüfungen umfassen.
  4. Audit-Ressourcen: Das Audit-Programm legt die erforderlichen Ressourcen für das Audit fest, einschließlich des Audit-Teams, der Zeitpläne, des Budgets und der technischen Hilfsmittel.
  5. Zeitplan: Das Audit-Programm enthält einen Zeitplan für die Durchführung des Audits. Es legt fest, wann das Audit beginnt und endet, sowie die geplanten Aktivitäten und Meilensteine während des Auditprozesses.
  6. Audit-Ergebnisse und Berichterstattung: Das Audit-Programm beschreibt die Erwartungen und Anforderungen an die Dokumentation der Audit-Ergebnisse. Dies umfasst die Erstellung von Auditberichten, in denen die Feststellungen, Empfehlungen, Verbesserungspotenziale und ggf. Nichtkonformitäten festgehalten werden.
  7. Nachverfolgung und Überprüfung: Das Audit-Programm kann auch Maßnahmen zur Nachverfolgung und Überprüfung der umgesetzten Korrekturmaßnahmen enthalten, um sicherzustellen, dass festgestellte Abweichungen behoben werden und das ISMS kontinuierlich verbessert wird.

Das Audit-Programm nach ISO/IEC 27007 dient als Leitfaden für die Planung und Durchführung von ISMS-Audits. Es stellt sicher, dass das Audit effektiv und systematisch durchgeführt wird, um die Informationssicherheit zu bewerten und die Compliance mit den Anforderungen der ISO/IEC 27001-Norm sicherzustellen.

ISO 27001: Definition der Informationssicherheitspolitik in der IS-Leitlinie (IS policy / ISMS Politik / ISMS policy)

Die Informationssicherheitspolitik (IS-Politik) wird in der Regel in einem Dokument dokumentiert, das als Informationssicherheitsrichtlinie bezeichnet wird. Diese Richtlinie stellt eine schriftliche Erklärung der Absichten und Grundsätze der Organisation in Bezug auf Informationssicherheit dar.

Die genaue Dokumentationsweise kann von Organisation zu Organisation variieren, aber im Allgemeinen enthält die Informationssicherheitsrichtlinie folgende Informationen:

  1. Zielsetzung: Die Richtlinie sollte das übergeordnete Ziel der Informationssicherheit in der Organisation klar definieren. Dies kann beispielsweise die Vertraulichkeit, Integrität und Verfügbarkeit von Informationen sowie den Schutz vor unbefugtem Zugriff, Datenverlust oder sonstigen Bedrohungen umfassen.
  2. Verantwortlichkeiten: Die Richtlinie sollte die Verantwortlichkeiten und Zuständigkeiten für die Informationssicherheit innerhalb der Organisation festlegen. Dies umfasst beispielsweise die Zuweisung eines Informationssicherheitsbeauftragten und die Festlegung der Verantwortlichkeiten der Führungskräfte, der Mitarbeiter und anderer beteiligter Parteien.
  3. Anwendungsbereich: Die Richtlinie sollte den Anwendungsbereich der Informationssicherheit klar definieren. Dies umfasst die betroffenen Geschäftsprozesse, Abteilungen, Systeme und Standorte.
  4. Richtlinien und Maßnahmen: Die Richtlinie sollte allgemeine Grundsätze und Leitlinien für die Informationssicherheit festlegen. Dies können beispielsweise Vorgaben zur Passwortrichtlinie, zur Zugriffskontrolle, zur Datensicherung, zur Risikobewertung oder zur Awareness-Schulung sein.
  5. Kommunikation und Schulung: Die Richtlinie sollte Anforderungen und Verfahren zur Kommunikation und Schulung in Bezug auf Informationssicherheit festlegen. Dies kann die Sensibilisierung der Mitarbeiter für Sicherheitsrisiken, Schulungen zur sicheren Nutzung von IT-Systemen oder die Meldung von Sicherheitsvorfällen umfassen.

Die Informationssicherheitsrichtlinie sollte in der gesamten Organisation bekannt gemacht und kommuniziert werden. Sie dient als Referenz und Leitfaden für alle Mitarbeiter, um die Informationssicherheit in ihren täglichen Aktivitäten zu berücksichtigen und umzusetzen.

Textreferenzen in der ISO 27007 auf ISO 19011:2018

Referenzen der ISO 27007

ReferenzThema
ISO 19011:2018 siehe DIN EN ISO 19011:2018-10Leitfaden zur Auditierung von Managementsystemen
ISO 31000:2018 siehe DIN ISO 31000:2018-10Risikomanagement – Leitlinien
ISO/IEC 17021-1:2015 siehe DIN EN ISO/IEC 17021-1:2015-11Konformitätsbewertung –
Anforderungen an Stellen, die Managementsysteme auditieren und zertifizieren
ISO/IEC 17024 siehe DIN EN ISO/IEC 17024Konformitätsbewertung — Allgemeine Anforderungen an Stellen, die Personen
zertifizieren
ISO/IEC 27000:2018 siehe DIN EN ISO/IEC 27000:2020-06Glossar, Informationssicherheits-managementsysteme — Überblick und Terminologie
ISO/IEC 27001:2013 siehe DIN EN ISO/IEC 27001:2017-06Informationssicherheits-managementsysteme –
Anforderungen
ISO/IEC 27002 siehe DIN EN ISO/IEC 27002Informationssicherheits-
maßnahmen
ISO/IEC 27006:2015 siehe DIN EN ISO/IEC 27006:2021-05Anforderungen an
Institutionen, die Audits und Zertifizierungen von Informationssicherheits-Managementsystemen anbieten
Die ISO 27007 referenziert Texte dieser Normen

ISO 27007 Kapitel 4 Grundsätze der Auditierung: „Es gelten die Grundsätze der Auditierung nach ISO 19011:2018, Abschnitt 4“

ISO 19011 Abschnitt 4 : Grundsätze der Auditierung / Auditprinzipien

  • Integrität: die Grundlage der Professionalität.
  • Sachliche Darstellung: die Pflicht, wahrheitsgemäß und genau zu berichten.
  • Angemessene berufliche Sorgfalt: Anwendung von Sorgfalt und Urteilsvermögen beim Auditieren.
  • Vertraulichkeit: Sicherheit von Informationen.
  • Unabhängigkeit: die Grundlage für die Unparteilichkeit des Audits sowie für die Objektivität der Auditschlussfolgerungen.
  • Faktengestützter Ansatz: die rationale Methode, um zu zuverlässigen und nachvollziehbaren Auditschlussfolgerungen in einem systematischen Auditprozess zu gelangen.
  • Risikobasierter Ansatz

Die „Grundsätze der Auditierung“ nach ISO 19011:2018, Abschnitt 4, sind wie folgt:

  1. Integrität: Der Auditor soll objektiv und unparteiisch handeln und seine Arbeit auf eine ehrliche und vertrauenswürdige Weise ausführen.
  2. Vertraulichkeit: Der Auditor soll die Vertraulichkeit der Informationen wahren, die ihm während der Auditierung zur Verfügung gestellt werden.
  3. Kompetenz: Der Auditor soll über das notwendige Wissen, die Fähigkeiten und Erfahrungen verfügen, um die Auditierung sachgerecht durchzuführen.
  4. Verantwortungsbewusstsein: Der Auditor soll seine Verantwortung im Rahmen der Auditierung anerkennen und seine Pflichten entsprechend erfüllen.
  5. Unabhängigkeit: Der Auditor soll frei von Interessenkonflikten sein und nicht in einer Weise handeln, die seine Unabhängigkeit beeinträchtigt.
  6. Aufrechterhaltung der Professionalität: Der Auditor soll sein Verhalten und seine Arbeitsweise so gestalten, dass er die Integrität, die Vertraulichkeit und die Objektivität der Auditierung aufrechterhält.
  7. Durchführung von evidenzbasierten Auditierungen: Der Auditor soll seine Entscheidungen auf einer sorgfältigen Analyse und Bewertung von Beweismitteln gründen und sicherstellen, dass diese in angemessener Weise gesammelt und bewertet wurden.
  8. Risikobasiertes Vorgehen: Der Auditor soll bei der Planung und Durchführung der Auditierung das Risiko berücksichtigen und geeignete Maßnahmen ergreifen, um das Risiko zu minimieren.
  9. Anwendbarkeit: Der Auditor soll die Anwendbarkeit der Auditierung auf die spezifischen Anforderungen des Auditsystems und der zu auditierenden Organisation sicherstellen.

Zitat: ISO 19011:2018, Abschnitt 4 „Auditprinzipien“

Die Anleitung in den Abschnitten 5 bis 7 basiert auf
den folgenden sieben Prinzipien:

a) Integrität: die Grundlage der Professionalität
Auditoren sowie die Person(en), die ein Auditprogramm steuert (steuern), sollte(n):
— ihre Arbeit moralisch vertretbar, mit Ehrlichkeit und Verantwortung ausführen;
— nur Audittätigkeiten durchführen, bezüglich derer sie Kompetenz besitzen;
— ihre Arbeit unparteiisch ausführen, d. h.
sachlich und in ihren Handlungen frei von
Voreingenommenheit bleiben;
— sensibel gegenüber jeglichen Einflüssen
auf ihr Urteilsvermögen sein, die während
der Durchführung eines Audits ausgeübt
werden können.

b) Sachliche Darstellung: die Pflicht, wahrheitsgemäß und genau zu berichten
Auditfeststellungen, Auditschlussfolgerungen und Auditberichte sollten die Audittätigkeiten wahrheitsgemäß und genau widerspiegeln.
Signifikante, während des Audits festgestellte Hindernisse und ungelöste Meinungsverschiedenheiten zwischen dem Auditteam und der auditierten Organisation sollten berichtet
werden. Die Kommunikation sollte wahrheitsgetreu, genau, objektiv, zeitgerecht, klar und vollständig sein.

c) Angemessene berufliche Sorgfalt: Anwendung von Sorgfalt und Urteilsvermögen beim Auditieren
Auditoren sollten entsprechend der Bedeutung der Aufgabe, die sie ausführen, und dem Vertrauen, welches der Auditauftraggeber sowie andere interessierte Parteien in sie setzen, Sorgfalt walten lassen. Ein wichtiger Faktor bei der Ausführung ihrer Arbeit mit
angemessener beruflicher Sorgfalt ist die Fähigkeit, in allen Auditsituationen begründete Urteile zu fällen.

d) Vertraulichkeit: Sicherheit von Informationen
Auditoren sollten bei der Verwendung und dem Schutz von Informationen, die sie im Verlaufe ihrer Aufgaben erworben haben, umsichtig sein. Auditinformationen sollten nicht unangemessen zur persönlichen Bereicherung des Auditors oder des Auditauftraggebers oder in einer Weise verwendet werden, die nachteilig für die berechtigten Interessen der auditierten Organisation ist. Dieses Konzept schließt den ordnungsgemäßen Umgang mit sensiblen oder vertraulichen Informationen ein.

e) Unabhängigkeit: die Grundlage für die Unparteilichkeit des Audits sowie für die Objektivität der Auditschlussfolgerungen
Wo immer möglich, sollten Auditoren unabhängig von der Tätigkeit sein, die auditiert wird, und sie sollten in allen Fällen frei von Voreingenommenheit und Interessenkonflikten handeln. Bei internen Audits sollten Auditoren unabhängig von der auditierten Funktion sein, sofern dies in der Praxis umsetzbar ist.
Die Auditoren sollten während des gesamten Auditprozesses Objektivität aufrechterhalten, um sicherzustellen, dass sich die
Auditfeststellungen und -schlussfolgerungen nur auf die Auditnachweise stützen.
Bei kleineren Organisationen kann es sein, dass die internen Auditoren nicht komplett unabhängig von der Tätigkeit sind, die auditiert wird; es sollten aber alle Anstrengungen unternommen werden, um Voreingenommenheit zu beseitigen und Objektivität zu fördern.

f) Faktengestützter Ansatz: die rationale Methode, um zu zuverlässigen und nachvollziehbaren Auditschlussfolgerungen in einem systematischen Auditprozess zu gelangen

Auditnachweise sollten verifizierbar sein. Üblicherweise sollten sie auf Stichproben aus den verfügbaren Informationen beruhen, da
ein Audit während eines festgelegten Zeitraums und mit begrenzten Ressourcen durchgeführt wird. Die Stichprobenahme sollte angemessen erfolgen, da dies eng mit dem Vertrauen verbunden ist, das in die Auditschlussfolgerungen gesetzt werden kann

g) Risikobasierter Ansatz: ein Auditansatz, der
Risiken und Chancen berücksichtigt

Der risikobasierte Ansatz sollte die Planung, Durchführung und Berichterstattung von Audits maßgeblich beeinflussen, um sicherzustellen, dass die Audits auf die für den Auditauftraggeber und für die Erreichung der Ziele des Auditprogramms relevanten Themen ausgerichtet sind.

Zitat aus der ISO 19011:2018, Abschnitt 4

ISO 27007 Kapitel 5.1 Allgemeines: „Es gilt der Leitfaden nach ISO 19011:2018, 5.1“


Das Kapitel 5.1 der ISO 19011:2018 beschäftigt sich mit der Vorbereitung von Audits und gibt Anleitung zur Planung und Durchführung von Audits.

Konkret werden in diesem Kapitel folgende Aspekte behandelt:

  1. Festlegung des Auditziels und des Auditumfangs: Es wird empfohlen, dass die Auditplanung auf die spezifischen Bedürfnisse und Ziele der auditierten Organisation abgestimmt wird. Hierzu gehört auch die Festlegung des Auditumfangs und der Auditkriterien.
  2. Auswahl des Auditteams: Die Auswahl des Auditteams sollte auf der Basis von Kompetenzen und Erfahrungen erfolgen und sicherstellen, dass das Team über ausreichende Fähigkeiten und Kenntnisse verfügt, um das Audit durchzuführen.
  3. Erstellung eines Auditplans: Der Auditplan sollte alle relevanten Aspekte des Audits abdecken, einschließlich des Auditumfangs, des Zeitplans, der Ressourcen und des Kommunikationsplans mit der auditierten Organisation.
  4. Identifizierung von Risiken und Chancen: Es ist wichtig, potenzielle Risiken und Chancen im Zusammenhang mit dem Audit zu identifizieren und zu berücksichtigen, um sicherzustellen, dass das Audit effektiv und effizient durchgeführt werden kann.
  5. Vorbereitung der Auditdokumentation: Die Auditdokumentation sollte im Vorfeld des Audits erstellt werden und alle relevanten Informationen für das Auditteam enthalten, einschließlich der Auditkriterien, der Checklisten und der Verfahren für die Datenerfassung.

Dieses Kapitel betont die Wichtigkeit einer sorgfältigen Planung und Vorbereitung für ein effektives und effizientes Audit. Es wird empfohlen, dass die Auditplanung auf die spezifischen Bedürfnisse und Ziele der auditierten Organisation abgestimmt wird und dass alle relevanten Aspekte des Audits berücksichtigt werden.

ISO 27007 Kapitel 5.2.1 Festlegung der Ziele des Auditprogramms: „Es gilt der Leitfaden nach ISO 19011:2018, 5.2. Außerdem gilt die Anleitung in 5.2.2.“

Im Leitfaden der ISO 19011:2018, Kapitel 5.2., geht es um die Planung von Audits. Dieses Kapitel legt fest, wie eine Auditplanung durchgeführt werden soll, um sicherzustellen, dass alle relevanten Aspekte der Auditierung berücksichtigt werden. Folgende Punkte sind im Kapitel 5.2. detailliert beschrieben:

  1. Festlegung der Auditziele und -kriterien
  2. Auswahl des Auditteams
  3. Festlegung des Auditumfangs und -zeitplans
  4. Identifizierung von Risiken und Chancen
  5. Ermittlung von Ressourcen und Kompetenzen, die für die Auditierung benötigt werden
  6. Festlegung von Verfahren zur Datenerfassung und -analyse
  7. Festlegung von Verfahren zur Kommunikation mit der auditierten Organisation
  8. Dokumentation der Auditplanung.

Das Kapitel gibt auch Hinweise darauf, wie man bei der Planung von Audits mit besonderen Umständen wie Multi-Site-Auditierungen oder Audits von Lieferketten umgehen sollte. Es wird betont, dass die Planung von Audits auf die spezifischen Anforderungen der Organisation und des Auditsystems zugeschnitten sein sollte. Schließlich wird in diesem Kapitel betont, dass die Auditplanung ein wichtiger Teil des Auditprozesses ist und dass eine sorgfältige Planung dazu beitragen kann, effektive und effiziente Audits durchzuführen.

Das Kapitel 5.2.2 der ISO 19011:2018 beschäftigt sich mit der Auswahl des Auditteams. In diesem Abschnitt werden die Anforderungen an die Mitglieder des Auditteams sowie ihre Aufgaben und Verantwortlichkeiten beschrieben.

Im Detail werden folgende Aspekte behandelt:

  1. Qualifikationen und Kompetenzen der Auditoren: Die Auditoren sollten über ausreichende Kenntnisse und Fähigkeiten verfügen, um die geplanten Audits durchzuführen. Es wird empfohlen, dass die Auditoren eine formale Ausbildung oder Zertifizierung in Auditierung haben und dass ihre Erfahrung und Kompetenzen in Bezug auf die Art und den Umfang des geplanten Audits angemessen sind.
  2. Anzahl der Auditoren: Die Anzahl der Auditoren hängt vom Umfang des Audits und der Komplexität des Managementsystems ab. Die ISO 19011 empfiehlt jedoch, dass mindestens zwei Auditoren für ein Auditteam ausgewählt werden.
  3. Aufgaben der Auditoren: Die Aufgaben der Auditoren umfassen die Vorbereitung und Durchführung von Audits sowie die Bewertung der Konformität des Managementsystems gegenüber den Auditkriterien. Die Auditoren müssen sicherstellen, dass sie objektiv und unparteiisch arbeiten und ihre Ergebnisse dokumentieren.
  4. Verantwortlichkeiten der Auditoren: Die Auditoren sind dafür verantwortlich, dass sie den Auditplan einhalten und dass sie ihre Ergebnisse in Übereinstimmung mit den geltenden Standards dokumentieren. Sie müssen auch sicherstellen, dass sie ihre Ergebnisse und Empfehlungen in angemessener Weise kommunizieren.

Zusammenfassend betont dieses Kapitel die Wichtigkeit der Auswahl eines qualifizierten und kompetenten Auditteams und stellt sicher, dass das Team über die notwendigen Fähigkeiten und Kenntnisse verfügt, um die geplanten Audits durchzuführen.

ISO / IEC 27001 Anforderungen an Informationssicherheits-Managementsysteme

Inhalt

Kontext der Organisation (aus Kapitel 4)

Unter „Externen Themen“ versteht man solche, die nicht der Kontrolle der Organisation unterliegen. Diese beziehen sich häufig auf das Umfeld der Organisation. Die Analyse des Organisationsumfeldes kann die folgenden Aspekte beinhaltet:

  • soziale und kulturelle
  • politische, gesetzliche, normative und regulatorische
  • finanzielle und makroökonomische
  • technologische
  • natürliche
  • wettbewerbliche

Diese Aspekte des Organisationsumfelds stellen fortlaufend Themen dar, die die Informationssicherheit betreffen und wie die Informationssicherheit gemanaget werden kann.

Zum Beispiel können externe Themen für eine spezifische Organisation folgendes beinhalten:

  • die gesetzliche Folgen bei Nutzung eines outgesourcten IT services (gesetzlicher Aspekt)
  • Naturcharakteristiken natürlicher Gegebenheiten möglicher Naturkatastrophen wie Feuer, Überflutung und Erdbeben (natürliche Aspekte)
  • Technischer Fortschritt von Hackertools und Nutzung von Kryptographie (Technologischer Aspekt)
  • Die generelle Nachfrage nach Dientleistungen der Organisation (soziale, kulturelle oder finanzielle Aspekte)

„Internen Themen“ unterliegen der Kontolle der Organisation. Das Analysieren von internen Themen kann die folgenden Aspekte beinhalten:

  • Organisationskultur / Unternehmenskultur
  • Politik, Ziele und die Strategie wie man sie erreicht
  • Führungsverhalten, Organisationsstruktur, Rollen und Verantwortlichkeiten
  • Standards, Richtlinien und angewendete Modelle der Organisation
  • Vertragliche Beziehungen die direkt die Organisationsprozesse betreffen die im ISMS einbezogen wurden
  • Prozesse und Vorgehensweisen
  • Der Einsatz von Ressourcen und Wissen (z.B. Kapital, Zeit, Personen, Prozesse, Systeme und Technologien)
  • Physische Infrastruktur und Umgebung/Umfeld
  • Informationssysteme, Informationsflüsse und Entscheidungsprozesse (beide formell und informell)
  • Vorherige Audits und vorherige Risikobewertungsergebnisse

Die Führung und ihre Verpflichtung (aus Kapitel 5.1)

Politik (aus Kapitel 5.2)

Rollen, Verantwortungen und Befugnisse der Organisation (aus Kapitel 5.3)

Definition „Informationssicherheit“

Informationssicherheit ist nicht IT-Sicherheit. Sie beschäftigt sich mit der Aufrechterhaltung von Informationen. Die ersten 3 Begriffe sind die Hauptbegriffe, die letzten 4 Begriffe können als zusätzliche Eigenschaften einbezogen werden:

BegriffISO 27000 Definition
VertraulichkeitEigenschaft, dass Information unbefugten Personen, Entitäten oder Prozessen (2.61) nicht offengelegt wird.
IntegritätEigenschaft der Richtigkeit und Vollständigkeit.
VerfügbarkeitEigenschaft zugänglich zu sein, wenn eine befugte Entität Bedarf hat.
AuthentizitätEigenschaft, dass eine Entität das ist, was sie angibt zu sein.
ZurechenbarkeitÜbernahme von Verantwortung, Rechenschaft und/oder Haftung für Informationswerte (Assets).
NichtabstreitbarkeitFähigkeit, das Eintreten eines behaupteten Ereignisses (2.25) oder einer behaupteten Handlung samt ihren Entitäten nachzuweisen.
VerlässlichkeitEigenschaft der Übereinstimmung zwischen beabsichtigtem Verhalten und den Ergebnissen.
Die ersten 3 Begriffe sind gelten immer. Die letzten 4 Begriffe können als zusätzliche Eigenschaften einbezogen werden

Änderungen von Einflussgrößen einer Organisation

Die folgenden Organisationseinflussgrößen können sich im Laufe der Zeit ändern und erfordern daher einen kontinuierlichen Verbesserungsprozess / Anpassungen des ISMS:

  • Bedürfnisse und Ziele
  • Sicherheitsanforderungen
  • Größe und Struktur
  • organisatorische Abläufe