|
96 | Der Standard: Glibc 2.9
Die neue Glibc 2.9 optimiert Datenstrukturen und Programmierinterfaces.
98 | Webservices selbst gemacht
Wer Businesstalk über SOA leid ist, aber der Haupttechnologie
Webservices eine Chance geben will, findet mit diesem Beitrag einen praxisgerechten Einstieg.
102 | Perl-Snapshot: Börsenpanel
In der Krise soll man einsteigen: Den richtigen Zeitpunkt passen Perl-Jünger mit einem eigenen Aktienkurs-Panel ab.
106 | Mono-Workshop, Teil 4
Im letzten Teil des Mono-Tutorials geht es um Containerklassen und wie man deren Inhalte in Datenbanken speichert.
|
Der Flughafen München nutzte bis vor Kurzem für seine Fluginformation im Web Variablen, die er per »GET«-Methode an den Server übergab - ein problematisches, bisweilen gar gefährliches Vorgehen [1]. Ein Reload führt dann nicht zu aktuellen Daten, denn die Parameter bleiben unverändert. Das kann zu Fehlinformationen führen.
Schlimmer noch, es entsteht ein Sicherheitsproblem, denn in die Webseite lassen sich über die Parameter Links und Skripte einbetten, die im Sicherheitskontext der Webseite laufen. Der Denkfehler besteht in der Annahme, dass in HTML kodierte Daten ihren Weg vom Server zum Browser und zurück durch das Internet unverändert überstehen.
Manipulation eingebaut
Dass der Surfer im Browser die Angaben manipulieren kann, hatten die Programmierer bei Munich-Airport.de schlicht übersehen. Sie hatten die Werte zu Flugzeiten, -zielen und weiteren Angaben in die Aufruf-URL einkodiert. Als Lösung haben sie die Fluginformationen inzwischen von »GET« auf »POST« umgestellt. Das verbannt die Angaben wirksam von der Eingabezeile: Statt Links auf der Übersichtsseite gibt es nun getarnte Formulare mit Submit-Buttons. Deren Beschriftung findet Firefox nicht einmal mehr bei der Suche.
Doch zu früh gefreut! Mit dem DOM-Inspector lässt sich der Angriff erneut durchführen, denn damit ist es ein Kinderspiel, verdeckte Felder zu ändern. Das Plugin bindet ein Anwender mit wenigen Klicks über den Installationsmechanismus von Firefox ein. Danach ruft er es im Menü »Extras | DOM-Inspector« auf, inspiziert die fragliche Seite und sucht das »input«-Element, das mit dem gewünschten Flug verbunden ist (Abbildung 1). Das gelingt am besten über »Suchen | Element durch Klick auswählen«. Anschließend lässt sich per Rechtsklick dessen Wert bequem ändern. Im Beispiel verspätet sich der Flug aus Oslo um mehrere Stunden.
Abbildung 1: Der DOM-Inspector in Aktion: Die angekündigte Ankunft aus Oslo verschiebt sich so von 13 Uhr bis kurz vor Mitternacht.
Einfacher Lösungsansatz verbessert den Schutz
Um sich vor Angriffen zu schützen, hat der Flughafen zusätzlich einen Schlüssel eingeführt. Allerdings enthält er nur einen Zeitstempel in einem verborgenen Input-Feld und soll die Gültigkeit der Seite begrenzen. Die gefälschten Flugdaten entdeckt er nicht. Zu allem Überfluss ist der Schlüssel unnötigerweise URL-kodiert - Security by Obscurity, die keinen Angreifer abschreckt.
Sicherheit entsteht nicht durch übertrieben komplexe Systeme. Im Gegenteil, einfache Maßnahmen bieten den besseren Schutz. Entwicklern dieser wie ähnlicher Sites sei geraten, der Detailseite nur eine Referenz wie die Flugnummer zu übergeben und die restlichen Daten aus der Datenbank zu holen - eine erprobte Technik bei Millionen von Onlineshops, die auch lange Jahre meinten, es wäre sicher, Preise per verdecktem Eingabefeld durchzureichen. (mg)
|
[1] Tobias Eggendorfer, "Falscher Flieger": Linux-Magazin 01/09, S. 100
|
|
Der freiberufliche IT-Berater und Dozent Dr. Tobias Eggendorfer hofft als Vielflieger, dass andere Sicherheitsmaßnahmen an Flughäfen wirksamer sind.
|