Manche Webanwendungen spielen Angreifern unfreiwillig Informationen zu

© © Yuriy Brykaylo, 123RF.com

Seitenkanäle mit Untiefen

Hin und wieder sind Fehlermeldungen oder Logeinträge geschwätziger, als es auf den ersten Blick scheint, und plaudern Angreifern wertvolle Informationen aus. Doch mit einfachen Mitteln ist Abhilfe möglich.
Security ist ein stets aktuelles Thema in der IT. Deshalb widmet sich das ADMIN-Magazin 04/2012 speziell Sicherheitsaspekten und gibt Antworten auf die Fragen: ... (mehr)

Glaubt man einschlägigen Filmen, dann brauchen Hacker nur ein paar kryptische Zeichen in eine Kommandozeile zu tippen, und schon haben sie innerhalb von Sekunden vollen Zugriff auf das Opfersystem. In der Realität sind Angriffe auf IT-Systeme allerdings meist nicht so unkompliziert zu bewerkstelligen. Stattdessen braucht der Angreifer mitunter Tage oder Wochen, um zum Erfolg zu kommen. In dieser Zeit erkundet er das System, um den eigentlichen Angriff auf dessen Eigenheiten zurechtzuschneiden, um Abwehrmaßnahmen wie Firewalls und Intrusion-Prevention-Systeme zu umgehen und um verräterische Logeinträge zu vermeiden. Solche Angriffe, die oft in mehreren aufeinander aufbauenden Schritten ablaufen, nennt man auch Seitenkanalangriffe (side channel attacks), wenn sich der Angreifer auf das Auskundschaften solcher nicht offensichtlicher Informationen beschränkt, die durch Beobachtung des Zielsystems gewonnen wurden. Diese nicht offensichtlichen Informationen können etwa Laufzeiten sein, der Prozessor-Energieverbrauch oder die elektromagnetischen Ausstrahlung, aber auch Fehlermeldungen.

Beispiele für solche auf Software bezogenen Informationen sind weiter Hersteller, Version und Patchlevel des verwendeten Betriebssystems, der Datenbank, von Netzwerkkomponenten oder aktiven Anwendungen. Aber auch Dateipfade zu vertraulichen Daten oder Konfigurationsdateien können das entscheidendePuzzleteil sein, das dem Angreifer Zugriff auf vertrauliche Daten ermöglicht.

Verschwiegenheit ist besser

Natürlich hängt die Sicherheit von Verschlüsselung und kryptographischen Signaturen zuallererst von der Geheimhaltung des Schlüssels ab (Gesetz von Kerckhoffs) – aber warum sollte man dem Angreifer zum Beispiel aktiv mitteilen, welche kryptografischen Verschlüsselungsalgorithmen verwendet werden? Ohne diese Information müsste der Angreifer möglicherweise viel wertvolle Zeit darauf verwenden, das herauszufinden. "Security by Obscurity" ist bekanntermaßen dann schlecht, wenn die Sicherheit eines Systems maßgeblich davon abhängt. Ein System wird jedoch im Umkehrschluss nicht sicherer, weil man alle seine Details offenlegt, sondern man erleichtert dem Angreifer damit die Arbeit.

Ärgerlicherweise sind viele Systeme jedoch per Default sehr auskunftsfreudig und teilen Angreifern von sich aus Hersteller, Version oder Patchlevel mit. So offenbart etwa der Apache-Webserver mit jeder HTTP-Antwort nicht nur seine eigene Identität, sondern gibt auch detaillierte Versionsinformationen für die geladenen Plugins weiter, wie die folgenden Zeilen beweisen:

Apache/2.2.16 (Debian) DAV/2 SVN/1.6.12 mod_fcgid/2.3.6 Phusion_Passenger/3.0.11mod_ssl/2.2.16 OpenSSL/0.9.8o Server at www.domain.tld Port 80

Verräterische Fehlermeldungen

Eine weitere Informationsquelle sind technische Fehlermeldungen des Web-Servers wie beispielsweise Stack-Traces. Sie weisen Benutzer nicht nur auf Fehlerzustände hin, sondern geben vertrauliche Information an Angreifer weiter, die über Hersteller und Version verwendeter Technologien hinausgehen. Zu diesen Informationen gehören beispielsweise die Dateipfade, die eine Anwendung verwendet.

Warning: include(): Failed opening 'file.php' for inclusion (include_path='.:') in /home/www/domain.tld/http/index.php on line 42

Das Beispiel zeigt eine solche Fehlermeldung, die in einer PHP-Anwendung aufgetreten ist. Der Angreifer lernt hier nicht nur, dass die Anwendung die Datei namens "file.php" nicht gefunden hat, sondern auch den lokalen Pfad im Server-Dateisystem, unter dem die Web-Anwendung abgelegt wurde. In diesem Falle kann der Angreifer möglicherweise sogar auf die Dateipfade anderer Web-Seiten schließen, die ebenfalls auf diesem Server gehostet sind, da der Domain-Name ein Teil des Pfades ist. Es liegt hier nahe, dass die Domain example.com unter dem Pfad »/home/www/example.com/http/« zu finden ist.

Doch selbst wenn Applikationen nicht derart redselig sind, offenbaren sie oft mehr über sich, als auf den ersten Blick offenbar wird. Dieser Beitrag behandelt unbewusste und verdeckte Informationslecks, die wichtige Informationen an den Angreifer verraten.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019