Sichere Websites mit den OWASP Top 10: Verlust der Vertraulichkeit sensibler Daten
Wenn Sie heute eine Website veröffentlichen, vergehen kaum ein paar Minuten, bis sie das erste Mal angegriffen werden. Diese Artikelserie beschäftigt sich mit den OWASP Top 10, den zehn meisten Sicherheitsrisiken, und gibt Tipps, wie sie sich und ihre Produkte schützen können.
Diese Serie besteht aus den folgenden Artikeln:
- Teil 1: Injection
- Teil 2: Fehler in Authentifizierung und Session-Management
- Teil 3: Cross-Site Scripting (XSS)
- Teil 4: Unsichere direkte Objektreferenzen
- Teil 5: Sicherheitsrelevante Fehlkonfiguration
- Teil 6: Verlust der Vertraulichkeit sensibler Daten (dieser Artikel)
- Teil 7: Fehlerhafte Autorisierung auf Anwendungsebene
- Teil 8: Cross-Site Request Forgery (CSRF)
- Teil 9: Nutzung von Komponenten mit bekannten Schwachstellen
- Teil 10: Ungeprüfte Um- und Weiterleitungen
Verlust der Vertraulichkeit sensibler Daten
Auf Platz 6 der OWASP Top 10 ist der Verlust der Vertraulichkeit sensibler Daten. Die Vertraulichkeit von Daten kann auf verschiedene Arten verloren gehen. Sind Sie sich bewusst, wo Sie überall vertrauliche Daten haben. Zum Einen werden vertrauliche Daten sehr oft über das Internet übermittelt. Zum Anderen werden vertrauliche Daten statisch abgespeichert, beispielsweise in einer Datenbank. Aber auch Logfiles und Backups von Datenbanken und Logfiles sind als sensibel zu betrachten.
Auch wenn SSL/TLS Zertifikate heute teilweise kostenlos angeboten werden, gibt es immer noch sehr viele Webanwendungen, die HTTPS nicht einsetzen. Oder nur für spezielle Seiten wie Login und Registrierung. Andere Webseiten nutzen zwar HTTPS, dies aber nur für die Seiten, nicht für die Ressourcen wie CSS und JavaScript. In diesen Fällen spricht man vom mixed mode.
Das Problem beim mixed mode ist, dass Cookies oft auch über unverschlüsselte Verbindungen übertragen werden. Ist das der Fall, kann es mitgelesen werden. Der Browser sendet das Cookie nämlich auch bei Requests mit, die nur Ressourcen wie JavaScript oder Bilder liefern. Werden Ressourcen wie JavaScript oder Bilder nicht gesichert übertragen, kann das Cookie ausgelesen und auch manipuliert werden.
Um den Benutzer auf dieses Problem aufmerksam zu machen, hat der Chrome-Browser mit dem Wechsel von Version 45 auf 46 das Icon geändert. Während vorher bei mixed mode noch ein Schloss mit gelbem Warnschild angezeigt wurde, wird nun gar kein Schloss mehr angezeigt.
Auch persistente Daten wie Passwörter in einer Datenbank können ein Risiko darstellen. Wie speichern Sie Ihre Passwörter? Sind Sie sicher, dass ein Angreifer mit den Daten, sollten sie gehackt werden, nichts anfangen kann? Es gibt viele Wege, Passwörter unsicher abzuspeichern und nur wenige Wege, dies sicher zu tun. Nutzen Sie hier einen starken, für Passwörter ausgelegten, Hash-Algorithmus. Ich empfehle PBKDF2, bcrypt oder scrypt.
Schwache Kryptographie Algorithmen sind nicht nur beim Speichern von Passwörtern wichtig, sondern auch in der Übertragung von Daten über HTTPS. Bei jeder HTTPS Verbindung einigen sich Browser und Server für einen Algorithmus. Leider gibt es immer noch viele Server, die RC4 akzeptieren.
Um sich vor dem Verlust der Vertraulichkeit sensibler Daten zu schützen, setzen Sie überall auf HTTPS. Konfigurieren Sie Ihren Server so, dass schwache Algorithmen nicht unterstützt werden.
Speichern Sie keine Passwörter als Plaintext ab, nutzen Sie auch keine symmetrische Verschlüsselung, sondern einen starken Hash Algorithmus wie PBKDF2, bcrypt oder scrypt.
Und ebenfalls sehr wichtig: Speichern Sie nur diejenigen Daten ab, die Sie wirklich benötigen. Was Sie nicht besitzen, können Sie nicht verlieren.
Ist Ihre Anwendung sicher? Nebst der in diesem Blog beschriebenen Möglichkeiten gibt es viele weitere Strategien, sich gegen Angreifer zu verteidigen. Gerne berate ich Sie in Sicherheitsfragen oder führe ein Security Review in Ihrem Projekt durch. Kontaktieren Sie mich unverbindlich, um Ihre dringlichsten Fragen zu besprechen.