[Allgemein] Sicherheitsrisiken bei der Verwendung von Ftp und Datenbanken

    • Allgemein

      [Allgemein] Sicherheitsrisiken bei der Verwendung von Ftp und Datenbanken

      Dieses Thema behandelt die Angreifbarkeit von Anwendungen, die Benutzerdaten, wie Benutzername und Passwort oder andere Authentifizierungsmaßnahmen in der Anwendung selbst bereitstellen.

      Problematik
      Programme, die über Internet kommunizieren, verwenden häufig eine Authentifizierung, die über Benutzername, Passwort oder andere eindeutig zuordnende Maßnahmen zurückgreifen, wie bspw. die Anmeldung an einem Ftp-Server oder E-Mail-Provider. Durch das Verwenden von konstanten Daten, die in das Programm einprogrammiert werden - in welcher Form auch immer - besteht ein erhebliches Sicherheitsrisiko, da diese immer ausgelesen werden können, sofern das Programm selbst fähig ist, diese auf diese zuzugreifen.
      In einem beispielhaften Szenario könnte eine Anmeldung mit einem Benutzerkonto auf einem Ftp-Server, dessen Daten fest im Programm einprogrammiert wurden, dazu führen, dass Daten vom Server gelöscht oder neue hinzugefügt werden. Das "hacken" von solchen offen liegenden Ftp-Servern geschieht erfahrungsgemäß bereits nach sehr kurzer Zeit.
      Auch Codeverschleierung durch einen Obfuscator oder Verschlüsslung bewirken nur unzureichenden Schutz. Wenn das Programm selbst an die Benutzerdaten kommt, so kann es auch ein außenstehendes Programm.

      Zusammenfassend gelten folgende Faustregeln:
      • Keine Benutzerdaten (Benutzername, Passwort, etc.) direkt in eine Anwendung schreiben
      • Verschlüsselung, Verschleierung, etc. bringen keinen sicheren Schutz

      • Ftp heißt File Transfer Protocol, d.h. es wurde dazu entwickelt, Dateien zu übertragen und ist für Dinge, wie Chats gänzlich ungeeignet


      Häufige Probleme und Lösungen
      • Für einen Ftp-Server wurden Benutzername und Kennwort angegeben:
        Sicherheit der Anwendung überprüfen und auf alternative Protokolle (Tcp, Udp, etc.) oder serverseitige Skripte (Php, Asp.Net, etc.) ausweichen, die keine Injection zulassen. Wichtig ist in diesem Kontext auch, zu erwähnen, dass Ftp im Gegensatz zu z.B. SFTP keine sichere Übermittlung von Daten zulässt.
      • Benutzerinhalte (z.B. Textfeld-Inhalte) werden ohne weitere Überarbeitung der Daten an eine Datenbank weitergeleitet
        Durch das direkte Einfügen von Texten in Abfragen wird ohne Gegenmaßnahmen ermöglicht, dass weitere Abfragen angefügt werden.
        Sei bspw. folgender Code gegeben, der in der Tabelle library nach einem Buch mit einer bestimmten ID suchen soll:

        VB.NET-Quellcode

        1. Dim query As String = "SELECT title FROM library WHERE id=" & _idTextBox.Text & ";"

        Sofern der TextBox-Inhalt numerisch ist, ist es nicht weiter bedenklich. Wenn aber der Inhalt durch das Einfügen eines weiteren Kommandos abgeändert wird, kann dies zu unerlaubtem Zugriff auf serverseitigen Datenbank-Daten führen. Abhilfe verschafft das Überprüfen auf korrekte Inhalte, sowie das Verwenden von den vom Framework bereitgestellten Klassen, wie bspw. der System.Data.SqlClient.SqlCommand-Klasse.


      Maßnahmen bei unerlaubtem Server-Zugriff
      • Zugangsdaten ändern
      • Dateien und Dateiinhalte auf dem Ftp-Server überprüfen
      • Ggf. Serveranbieter kontaktieren
      • Benutzer informieren, sofern vorhanden


      Es sei nochmal explizit gesagt, dass auch Verschlüsselung nicht schützt, da die für die Verschlüsselung benötigten Parameter dem Programm ebenfalls klar sein müssen, damit die Verschlüsselung funktioniert!

      Das Forum übernimmt keinerlei Haftung für möglicherweise entstehende Schäden. Schäden, die von Forenmitgliedern hervorgerufen werden, sind privat zu handhaben, können aber auch zu einer Verwarnung führen. Die Einhaltung obiger Instruktionen gewährleistet dennoch keine ausreichende Sicherheit.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „~blaze~“ ()