EN

Der OWASP Top 10 Krypto-Fehler A02 erklärt

In diesem Artikel:

Kryptografie umfasst die Werkzeuge und Techniken, die zum Schutz der Kommunikation und des Informationsaustauschs eingesetzt werden, um Vertraulichkeit, Unleugbarkeit, Integrität und Authentizität zu gewährleisten. Bei modernen kryptografischen Techniken werden Klartextnachrichten in verschlüsselten Text umgewandelt, den nur der vorgesehene Empfänger entschlüsseln kann. Angesichts der sich schnell verändernden Bedrohungslage sind herkömmliche Verschlüsselungs- und Verschleierungstechniken anfällig für Schwachstellen, die dazu führen, dass sensible Daten durch kryptografische Fehler offengelegt werden.

In diesem Artikel wird erläutert, warum kryptografisches Versagen als eine der häufigsten Bedrohungen für die Anwendungssicherheit gilt und welche Angriffsformen und Präventionsmaßnahmen es gibt.

Was ist eine kryptografische Fehlerschwachstelle?

Eine kryptografische Schwachstelle ist eine kritische Sicherheitslücke in Webanwendungen, die sensible Anwendungsdaten über einen schwachen oder nicht vorhandenen kryptografischen Algorithmus preisgibt. Dabei kann es sich um Passwörter, Gesundheitsdaten von Patienten, Geschäftsgeheimnisse, Kreditkarteninformationen, E-Mail-Adressen oder andere persönliche Benutzerinformationen handeln. 

Moderne Webanwendungen verarbeiten Daten im Ruhezustand und bei der Übertragung, was strenge Sicherheitskontrollen für eine umfassende Bedrohungsabwehr erfordert. Einige Implementierungen verwenden schwache kryptografische Techniken, die innerhalb eines angemessenen Zeitraums geknackt werden können. Selbst bei einer perfekten Implementierung von Verschlüsselungstechniken kann es vorkommen, dass Benutzer die besten Praktiken für den Datenschutz nicht einhalten, wodurch sensible Informationen für den Diebstahl sensibler Daten anfällig werden.

Die früher als „Sensitive Data Exposure“ (2017: A03) bezeichnete kryptografische Sicherheitslücke ist in der OWASP-Top-Ten-Liste für 2021 um einen Platz auf Rang zwei vorgerückt. Abgesehen von der Offenlegung sensibler Daten, da kryptografische Fehler auch Systeme kompromittieren können, werden die Auswirkungen dieser Schwachstelle als eines der kritischsten Sicherheitsrisiken sowohl für Unternehmen als auch für Geschäftsanwender angesehen. 

Zu den Sicherheitslücken, die in der Regel zu Kryptographie-Fehlern führen, gehören:

  • Übermittlung geheimer Daten im Klartext
  • Verwendung eines alten/unsicheren Algorithmus
  • Verwendung eines fest codierten Passworts in Konfigurationsdateien
  • Unsachgemäße Verwaltung von kryptografischen Schlüsseln
  • Unzureichende Zufälligkeit für kryptografische Funktionen
  • Fehlende Verschlüsselung
  • Unsichere Implementierung der Zertifikatsvalidierung
  • Verwendung veralteter Hash-Funktionen
  • Verwendung veralteter Auffüllungsmethoden
  • Vorhandensein von sensiblen Daten im Versionskontrollsystem
  • Verwendung von unsicheren Initialisierungsvektoren
  • Verwendung von Passwörtern als Kryptoschlüssel ohne eine passwortbasierte Schlüsselableitungsfunktion
  • Ausnutzbare Seitenkanalinformationen oder kryptografische Fehlermeldungen
Leitfaden für die Vermeidung von kryptographischen Fehlern
Präventionsguide

Leitfaden zur Vermeidung von kryptographischen Fehlern

So können Sie kryptographische Fehler aufspüren und vermeiden.

Download

Prävention von kryptografischen Fehlern

Das Online Web Application Security Project (OWASP) listet verschiedene Maßnahmen auf, um kryptografische Implementierungsfehler in modernen Anwendungen zu verhindern. Dazu gehören:

Katalogisierung aller von der Anwendung verarbeiteten Daten

Es ist wichtig, alle Formen von Daten zu katalogisieren, einschließlich der von der Anwendung gespeicherten, übertragenen oder verarbeiteten Daten. Diese Daten sollten entsprechend den Sicherheitsanforderungen klassifiziert und geschützt werden, und es sollten geeignete Kontrollen eingerichtet werden, um als sensibel oder vertraulich eingestufte Daten zu schützen. Entwickler und Sicherheitsexperten sollten außerdem regelmäßige Cybersicherheitsaudits durchführen, um den Standort der Daten, die Eigentumsverhältnisse und die Sicherheitsmaßnahmen zu verfolgen und so Sicherheitslücken in den verschiedenen Phasen des Datenlebenszyklus zu vermeiden.

Ungenutzte Daten entsorgen

Daten, die nicht aufbewahrt werden, können nicht gefährdet werden. Es wird empfohlen, dass Entwickler sicherstellen, dass Anwendungen sensible Daten löschen, sobald sie nicht mehr in Verwendung sind. Eine dem PCI Data Security Standard entsprechende Tokenisierung kann dabei helfen, diese sensiblen Daten zu verwerfen, indem sie durch einen nicht sensiblen Platzhalter ersetzt werden. Auch die Trunkierung macht sensible Daten unlesbar, indem ein Segment der Daten entfernt wird.

Deaktivieren Sie das Caching für Antworten mit sensiblen Date

Caching trägt zur Verbesserung der Serverleistung bei, indem eine lokale Kopie der Serverantwort gespeichert wird. Der Inhalt einer Serverantwort kann von jedem abgefangen und missbraucht werden, der Zugriff auf den Web-/Browser-Cache hat, in dem die Kopie der Antwort gespeichert ist. Als bewährte Sicherheitspraxis wird empfohlen, das Caching für alle Serverantworten zu deaktivieren, die private und sensible Daten enthalten.

Geeignete Initialisierungsvektoren verwenden

Ein Initialisierungsvektor (IV) ist eine eindeutige Zufallszahl, die zusammen mit einem Schlüssel verwendet wird, um die Verschlüsselung zu erleichtern. Ein IV wird als Salt verwendet, um echte Zufälligkeit bei der Generierung unterschiedlicher verschlüsselter Werte für dieselben binären Sequenzen zu gewährleisten, die wiederholt in der ursprünglichen Nachricht verwendet werden. Sicherheitsteams sollten je nach Betriebsart die effektivsten IVs verwalten. Für die meisten kryptografischen Modi wird außerdem empfohlen, einen kryptografisch sicheren Zufallszahlengenerator (CSRNG) zu verwenden, um sicherzustellen, dass die generierte Zufallszahl extrem schwer vorherzusagen ist und von Angriffsvektoren missbraucht werden kann.

Verwendung aktueller und bewährter kryptografischer Funktionen, Algorithmen und Protokolle

Anstatt ein Verschlüsselungsschema von Grund auf zu entwickeln, sollten Entwickler und Anwendungssicherheitsexperten bereits etablierte, effektive kryptografische Protokolle und Mainstream-Algorithmen verwenden. Da Entwickler oft die sich verändernde Bedrohungslandschaft übersehen, wird die Entwicklung neuer Kryptografie von Grund auf selten den neuesten Schwachstellen gerecht. Etablierte Protokolle und Algorithmen beheben auch unsichere Designfehler, die zu fortgeschrittenen Angriffen beim Knacken der Betriebsverschlüsselung führen, um bekannte Übertragungsschwachstellen zu verhindern.
Zu den modernen Verschlüsselungsprotokollen gehören Triple Data Encryption Algorithm (TDEA), Advanced Encryption Standard (AES), RSA-Kryptosystem usw.

Schlüsselrotation erzwingen

Verschlüsselungsschlüssel sind anfällig für kryptografische Angriffe, wobei die Wahrscheinlichkeit eines Angriffs zunimmt, je länger derselbe Schlüssel verwendet wird. Angreifer können eine falsche Sicherheitskonfiguration in Versionskontrollsystemen ausnutzen, um den Verschlüsselungsschlüssel dauerhaft zu missbrauchen. Es wird empfohlen, dass die Entwickler eine automatisierte Schlüsselgenerierung und -rotation einsetzen, um die Daten vor lang anhaltenden Kompromittierungen zu schützen. Außerdem sollte der Prozess die Aktualisierung der Schlüssel und die erneute Verschlüsselung geschützter Inhalte beinhalten, um Angreifer daran zu hindern, selbst erstellte Backups zu entschlüsseln.

Verwenden Sie authentifizierte Verschlüsselung statt einfacher Verschlüsselung

Die einfache Verschlüsselung bietet nur die Vertraulichkeit der Daten, während die authentifizierte Verschlüsselung neben der Vertraulichkeit auch die Authentizität durchsetzt. Bei der authentifizierten Verschlüsselung werden die Blockchiffrierverfahren GCM (Galois Counter Mode) und CCM (Counter Mode with CBC MAC) verwendet, um die Authentizität und Vertraulichkeit der Daten zu gewährleisten. Die gleichzeitige Durchsetzung von Datenauthentizität und -vertraulichkeit bietet Schutz vor Angriffsvektoren und lässt nur minimalen Spielraum für Fehler bei der Handhabung von Daten während der Übertragung.

Beispiele für kryptografische Schwachstellen

Einige Beispiele für Anwendungsschwachstellen, die zu kryptografischen Fehlern führen können, sind:

Speicherung von Passwörtern mit einfachen/ungesalzenen Hashes

Obwohl Hashes als leistungsfähige Technik zum Schutz von Passwörtern und sensiblen Daten gelten, sind sie oft nicht in der Lage, eine narrensichere Lösung für eine umfassende Sicherheitskontrolle zu bieten. Eine zunehmende Zahl von Angriffen deutet darauf hin, dass es für Angreifer nicht ungewöhnlich ist, in Passwortdatenbanken einzudringen und auf vorberechnete Hashes zuzugreifen, die für jedes Passwort erstellt wurden.

Organisationen, die sich auf ungesalzene Hashes verlassen, fehlt die kryptografische Zufälligkeit, die einen robusten Schutz für sensible Daten bietet. Angreifer können eine von der Community entwickelte Liste häufig verwendeter Hashes, Wörterbücher oder Brute-Force-Angriffstechniken nutzen, um verschlüsselte Byte-Arrays von Hashes zu knacken, die aus kurzen Zeichenfolgen und gängigen Wörtern bestehen.

Mangelnder Schutz für Seeds in Pseudo-Zufallszahlengeneratoren

Ein Pseudo-Zufallszahlengenerator kann keine echte Zufälligkeit in der von ihm erzeugten Zahlenfolge erzeugen. Daher werden sie hauptsächlich mit Seeds verwendet, um einen starken Hashing-Algorithmus und Initialisierungsvektoren für kryptografische Operationen zu entwickeln.

Die Ausgabe des Pseudo-Zufallszahlengenerators hängt in der Regel von den als Eingabe bereitgestellten Seed-Werten ab. Als beste Praxis sollten Seed-Werte eindeutig aus einer sicheren Quelle generiert werden und müssen als kryptografisches Gut geschützt aufbewahrt werden. Die Wiederverwendung von Seeds oder ein unzureichend geschützter Seed ermöglicht es Hackern, die gesamte Ausgabe des Pseudo-Zufallszahlengenerators aufzudecken, um eine Vielzahl tiefgreifenderer Angriffe mit schwerwiegenden geschäftlichen und persönlichen Folgen zu orchestrieren.

Unterbrochene Vertrauenskette

Während einer SSL/TLS-Kommunikation tauscht sich die Anwendung mit dem Endbenutzer über ein Vertrauenszertifikat über die Gültigkeit der Sitzung und das Vertrauen aus. Jedes gültige Zertifikat folgt einem Vertrauensbeziehungsmodell, das als Vertrauenskette bezeichnet wird, wobei der Root-Server die seriöse Einheit am Ende der Kette ist. Der Verkettungsmechanismus eines Browsers durchläuft oft jedes Zertifikat, bis ein vertrauenswürdiges Stammzertifikat gefunden wird. Das Durchlaufen der gesamten Vertrauenskette bis zur vertrauenswürdigen Instanz ist entscheidend, um die Gültigkeit des Zertifikats zu bestimmen. Eine Vertrauenskette kann auf eine der folgenden Arten unterbrochen werden:

  • Versäumnis, das Serverzertifikat über ein oder mehrere Glieder der Vertrauenskette zu prüfen
  • CA-Zwischenzertifikate, denen die erforderlichen Erweiterungen und primären Einschränkungen fehlen
  • Unstimmigkeiten im Zertifikat
  • kompromittiertes Stammzertifikat
  • Selbstsignierte Nicht-Root-Zertifikate

Unzureichende Transport Layer Security

Secure Sockets Layer (SSL)/Transport Layer Security (TLS)-Protokolle werden für die End-to-End-Sicherheitsabsicherung des Netzwerkverkehrs verwendet. Entwickler setzen TLS/SSL häufig zur Verschlüsselung von Authentifizierungsdiensten ein, vergessen aber, es für den externen Internetverkehr, andere Netzwerkschichten oder den Webdienst zu implementieren.

Infolge einer solchen Fehlkonfiguration von Netzwerkkomponenten bleiben Sitzungs-IDs und Anmeldedaten offen und sind potenziell anfällig für das Abfangen, Umleiten und Einschleusen durch Angriffsvektoren. Sobald die Angreifer die Sitzungen abgefangen haben, können sie verschiedene Angriffe durchführen, z. B. Kontoübernahmen, Datenverletzungen, Denial-of-Service-Angriffe, Man-in-the-Middle-Angriffe usw.

FAQs zu kryptografischen Fehlern

Was ist der Unterschied zwischen Salting und Seeding in der Kryptografie?

Ein Seed ist eine Zahl, die als Ausgangspunkt dient und zur Erzeugung einer zufälligen Zahlenreihe verwendet wird. Beim Seeding handelt es sich um den Seed-Parameter, der für die Hashing-Funktionsaufrufe einer bestimmten Anwendung zugewiesen wird. 

Ein Salt hingegen ist eine Funktion, die zu einer Zeichenkette hinzugefügt wird, um sicherzustellen, dass die Hash-Werte immer eindeutig sind. Wird dieselbe Salt-Funktion zur ursprünglichen Zeichenfolge hinzugefügt, ergibt sich immer ein anderer Hash-Wert, so dass Funktionen wie Passphrasen und sensible Daten vor Angreifern verborgen bleiben.

Welche verschiedenen Arten von kryptografischen Fehlern gibt es?

Kryptografische Fehler werden in der Regel nach den betroffenen Sicherheitsmerkmalen eingeteilt. Die drei Hauptkategorien von kryptografischen Fehlern sind:

  • Schwachstellen in der Zugriffskontrolle
  • Fehlgeschlagene Integritätsprüfungen
  • Verlust der Verfügbarkeit

Erhalten Sie jetzt kostenlos einen schnellen Sicherheitsbericht für Ihre Website

Wir analysieren derzeit https://example.com
Wir scannen derzeit https://example.com
Status des Scans: In Bearbeitung
Scan target: http://example.com/laskdlaksd/12lklkasldkasada.a
Datum: 06/12/2022
Crashtest Security Suite prüft auf:
Information disclosure Known vulnerabilities SSL misconfiguration Open ports
Scanauftrag ausfüllen
Bitte geben Sie Ihre Daten ein, um die schnelle Sicherheitsüberprüfung zu erhalten.
Ein Sicherheitsspezialist analysiert gerade Ihren Scan-Bericht.
Bitte geben Sie Ihre Telefon-/Handynummer an, damit wir Ihre Identität überprüfen können:
Vielen Dank.
Wir haben Ihren Antrag erhalten.
Sobald Ihr Sicherheitsaudit fertig ist, werden wir Sie benachrichtigen.