Das ist doch der Super-GAU, wenn einem die wichtigsten, vertraulichen Informationen geklaut werden, und dann von „wer weiß wem“ missbraucht werden. 

Wie wäre Euch da zumute? Unsere Zugangsdaten, Nachrichten, Fotos, einfach alles was privat und vertraulich ist. Leider passiert das tatsächlich andauernd. Deshalb ist es wichtig, dass die Daten entsprechend geschützt werden.

Zu diesem Thema möchte ich Euch heute den Platz 3 der OWASP-Top10 vorstellen, den 10 am meisten ausgenutzten Schwachstellen bei Web-Anwendungen. Er heißt „Sensitive Data Exposure“, übersetzt als „Verlust der Vertraulichkeit sensibler Daten“.

Problem

Bei diesem Punkt handelt es sich um das Problem, dass aufgrund fehlender Verschlüsselung oder zu schwacher bzw. falsch angewandter Verschlüsselung vertrauliche Daten gestohlen werden. Viele Anwendungen schützen sensible Daten nicht ausreichend, beispielsweise personenbezogene Informationen und Finanz- oder Patientendaten. 

Angreifer können diese Daten auslesen oder modifizieren und mit ihnen weitere Straftaten begehen: Kreditkartenbetrug, Identitätsdiebstahl, Erpressung, usw. 

Vertrauliche Daten können kompromittiert werden, wenn sie nicht durch Maßnahmen, wie z.B. starke Verschlüsselung, zusätzlich geschützt werden. Besondere Vorsicht ist beim Datenaustausch mit Browsern angeraten.

Schwachstellen

In den letzten Jahren war dies der häufigste wirkungsvolle Angriff. Der häufigste Fehler ist, dass sensible Daten überhaupt nicht verschlüsselt werden. 

Wenn Kryptografie eingesetzt wird, ist die Verwendung von schwachen Schlüsseln sehr verbreitet, sowie die Verwendung von schwachen Algorithmen, anfälligen Protokollen und Chiffren. 

Beim Speichernvon Passwörtern werden oft schwache Passwort-Hashing-Algorithmen verwendet. Bei der Datenübertragung sind serverseitige Schwachstellen meist leicht zu erkennen, bei gespeicherten Daten allerdings schwerer.

Was sind die Auswirkungen?

Fehler wie diese kompromittieren regelmäßig alle vertraulichen Daten. Normalerweise umfassen diese Informationen vertrauliche personenbezogene Daten, wie Patienten-, Personal- , Login-Daten oder Kreditkarteninformationen. Aufgrund gesetzlicher Vorschriften wie der europäischen DSGVO oder anderer nationaler Datenschutzgesetze ist der Umgang mit diesen Daten streng reguliert. 

Werden diese Daten nicht ausreichend geschützt, dann drohen inzwischen saftige Bußgelder. Er vor kurzem wurde gegen das Knuddels-Portal ein Bußgeld von 20.000 EUR verhängt, weil die Passwörter der 2 Mio registrierten Benutzer unverschlüsseltgespeichert wurden. Weitaus größer als die finanzielle Strafe dürfte jedoch die nun stark beschädigte Reputation von Knuddels.de sein.

2 Praxis Tipps

Ich verrate Euch 2 Tipps aus der Secure Coding Schulung, wie man bei diesem Thema die Sicherheit erhöhen kann – und das Risiko eines Angriffs erheblich mindern kann. Mehr gibt’s dann in der Secure Coding Schulung.

1. Tipp: Verwendung eines wirksamen Schlüsselmanagements

Unter die Rubrik Schlüsselmanagement fallen beispielsweise folgende 3 Punkte:

  • Default-Keys austauschen
    • Oft sind in Projekten noch die Standard-Schlüssel aktiv mit den Default-Passwörtern, diese sollten unbedingt geändert werden, so dass auf jeder Server-Umgebung ein anderer Schlüssel gilt. Sind die bekannten Standard-Schlüssel noch aktiv, dann ist das wie wenn man den PIN direkt auf den Tresor schreibt. Deshalb: immer die Default-Keys mit einem eigenen Key austauschen und geheim halten.
  • Schlüssel regelmäßig wechseln
    • Schlüssel dürfen genau so wie Passwörter nicht ewig leben, sondern müssen regelmäßig ausgetauscht werden. Insbesondere beim Umzug auf neue Server oder bei Upgrades auf neue Versionen der Server-Software sollte man sie ändern.
  • KeyStore verwenden
    • Passwörter und andere Geheimnisse sollten auf keinen Fall im Quellcode stehen, sondern in sichere KeyStores ausgelagert werden. Ein KeyStore ist so etwas wie ein Passwort-Safe, in dem alle Einträge stark verschlüsselt sind. Das wichtigste dabei ist, dass die Passwörter getrennt vom Quellcode oder der Konfiguration der Webanwendung aufbewahrt wird. Diese Trennung erhöht die Sicherheit enorm.

2. Tipp: Älteren Code regelmäßig prüfen, ob Krypto-Algorithmen noch sicher und stark genug sind

Gerade in etwas älteren Projekten, die in der Praxis häufiger vorkommen, werden oft Krypto-Algorithmen eingesetzt, die als nicht mehr sicher gelten.

Folgenede Algorithmen gelten als unsicher:

  • DES für die symmetrische Verschlüsselung mit 56 Bit wird weltweit sehr häufig eingesetzt und gilt inzwischen als unsicher. 
  • Tripple-DES mit dreifacher Ausführung hintereinander mit 2 Schlüsseln bringt es auf eine effektive Schlüssellänge von 112 Bit und gilt auch nicht mehr als sicher genug.
  • RSA-Schlüssel für die asymmetrische Verschlüsselung bis zu einer Länge von 1024Bit dürfen nicht mehr verwendet werden. 
    • Stattdessen sollten bei RSA Schlüssellängen von mehr 2000 Bit verwendet werden
  • Außerdem verboten ist der RC4-Algorithmus, da es längst geknackt wurde
  • SHA-1, SHA-224, RIPEMD-160 und MD5sind nicht mehr zulässig als sicherer Hash-Algorithmus

Fazit

Krypto-Algorithmen sind nicht für die Ewigkeit gemacht. Früher oder später kann man sie entweder mit genügend Rechenpower knacken, oder weil jemand einen Weg findet, sie auszuhebeln. Deshalb gilt eine Verschlüsslung nur in begrenztem zeitlichem Rahmen als sicher. 

Deshalb ist es sehr ratsam, die selbst genutzten Krypto-Algorithmen und deren Parameter regelmäßig zu überprüfen und auf die aktuell gültigen Empfehlungen vom BSI anzupassen. Immer wieder gibt es auch aktuelle Entwicklungen wie z. B. SHAppening oder SHAttered, bei denen neue Angriffstechniken oder Schwachstellen offengelegt werden, auf die man ebenfalls reagieren sollte.

Wann habt Ihr das letzte Mal die Sicherheit Eurer verwendeten Krypto-Algorythmen und ihrer Parameter geprüft?

Mehr Tipps und auch praktische Beispiele und Übungen könnt Ihr auf meiner Secure Coding Schulung erleben. Ich würde mich freuen!