Mittwoch, März 15, 2006
Der Partyguide-Hack
Partyguide, die Web-Site mit der "grössten Verweilzeit der Schweiz", ist ja im Laufe meiner kurzen Blog-Karriere so etwas wie mein Steckenpferd geworden. Leute, die sich meine sprachlichen Ergüsse zu Gemüte führen, wissen dies ja bereits längst - und fragen desöfteren, was der Antrieb dahinter ist. Meine Antwort: Kampagnenjournalismus à la Blick. Man beisst sich, einem Rottweiler gleich, in ein Thema fest und lässt nicht mehr los. So füllt man eine Zeitung, deren Titelblatt und die Schlagzeilenaushänge während einer ganzen Woche. Ich habe an dieser Form der Informationsvermittlung Freude gefunden, möchte mich aber hier wieder einmal bei den Machern von Partyguide höchstpersönlich bedanken - sie sind es nämlich, die (unter anderem) den "täglichen" Stoff für dieses Blog liefern.
In unzähligen Artikeln bin ich über die mangelhafte Umsetzung der genialen Idee "Partyföttelis im Internet" hergezogen. Selten hat sich etwas zum Guten gewendet, und wenn dann, betrafe es nur kleine Details. ohne dass sich gross etwas geändert hätte. Immerhin habe ich kürzlich herausgefunden, das Mitglieder der "Partyguide-Familie" mein Blog frequentieren und ihren Senf dazugeben.
Doch nun ist der Zeitpunkt gekommen, wo es nicht mehr um schlechtes HTML oder überlastete Server geht. Nun wird es ernst. Sehr ernst. Und für einige verantwortlungslose Möchtegern-PHP-Entwickler sehr peinlich und brenzlig.
Die Anklage
Bis letzten Montag-Abend standen bei Partyguide persönliche Daten von 190'000 Accounts sperrangelweit offen. Mit dem Know-How eines Script-Kiddies konnte sich jedermann Zugang zu Namen, Postanschriften, Mobiltelefonnummern und sogar Passwörtern aller Partyguide-Benutzer machen. Hinzu kamen die persönlichen Nachrichten, die zwischen Mitgliedern der Community ausgetauscht wurden. Die Ausrufezeichen erübrigen sich wohl bei einer solchen Aussage.
Der "Hack"
Ich schreibe das Wort "Hack" deshalb in Anführungszeichen, weil das Vorgehen derart trivial ist, dass es aus meiner Sicht kaum mehr als Hack durchgeht. Nein, ein Schelm würde wohl gar behaupten, dass es die PHP-Entwickler bei Partyguide geradezu herausgefordert haben - den Schlüssel sozusagen im Schloss der Villa stecken liessen und sich mit dem Fotoapparat bewaffnet in das Nachtleben das Samstag-Abends eintauchten.
Voraussetzungen
- gültiger Partyguide-Account (in 5 Minuten mit komplett falschen Angaben eingerichtet)
- Mozilla Firefox 1.5
- Extension Add N Edit Cookies
- Minimale Kenntnisse von HTTP, Cookies und PHP
Wer obige "Zutatenliste" liest und etwas vom Web vermutet wohl schon, wo der Angriffspunkt lag. Richtig - man loggte sich mit dem eigenen Account ein. War man "drin", veränderte man zwei (der vielen) Cookie-Werte:
- sess_login
- sess_member_id
sess_login entspricht dem zu "kapernden" Benutzernamen, sess_member_id der Benutzer-ID. Beides konnte man für jeden beliebigen Benutzer über die Community-Such-Funktion in weniger als einer Minute ausfindig machen.
Zusätzlich - und das verstehe ich bis heute noch nicht - musste man noch das PHPSESSID-Cookie löschen. Erst jetzt funktionierte die Übernahme eines fremden Accounts. Beim nächsten Request an den Server schlüpfte man in die Rolle des ausgesuchten Opfers.
Ich kann mir dieses Verhalten im Grund nur so erklären, als dass auf dem Server eine Session-Variable $bolLoggedIn lag, die bestätigte, dass sich der Sender der Cookies bereits eingeloggt hatte. Nach meinem Kenntnisstand wird die Session-Variable aber eben gerade demjenigen User zugeordnet, der die entsprechende PHPSESSID mitschickt ... Anyone? chregu als PHP-Entwickler vielleicht?
Obwohl als Cookie auch sess_psw mitgeschickt wurde, "vergass" man anscheinend, dieses auszuwerten. Galt jemand erst einmal als authentifiziert, konnte er sich nach vergnügen andere Identitäten überstülpen. Eine Fährlässigkeit sondergleichen!
Der grösste Fehler, welcher übrigens immer noch nicht gefixt ist, ist aus meiner Sicht aber die Preisgabe des Benutzerpasswortes im HTML-Quelltext. Auf der Seite "my Settings" gibt es ein Passwort-Feld, das mit dem Passwort aus der Benutzerdatenbank gespiesen wird. Da das input-Feld den Typ password trägt, offenbart sich dem Benutzer (auf den ersten Blick) aber nur einige Sternchen. Wenn man sich aber die Mühe machte, den Quelltext zu Rate zu ziehen, las man da:
... type="password" name="passwort_neu" value="supersicherespasswort" size="20" maxlength="50" ...
Im Browser gerendert also etwa so:
Fantastisch, Jungs! Der branchenübliche Standard sieht anders aus (man beachte die leeren Felder, die alle drei vom Benutzer selber gefüllt werden müssen):
Nicht nur Windows-Benutzer werden dieses Schema zu genüge kennen (Ctrl-Alt-Del - "Kennwort ändern") - es hat sich in der IT-Industrie überall eingebürgert.
Wie lange schon?
Aufmerksam auf den "Hack" wurde ich - erstaunlicherweise, kann man sagen - nicht aus eigenem Antrieb. Sondern durch einen anonymen Tippgeber - ihm gebührt also die "Ehre", der eigentliche Entdecker der Lücke zu sein. Ohne dessen Hinweis, der Aufgrund meiner im Netz publizierten Partyguide-Zerrisse den Weg zu mir fand, wäre ich nie auf die Idee gekommen, aktiv nach Löchern zu suchen. Dank gebührt natürlich auch dem Authentifizierungs-Spezialisten bei PG, der mich nicht lange auf die Folter spannen liess. Viel länger hätte ich mir nämlich nicht die Zähne ausgebissen.
Es darf aufgrund der Art des Hinweises angenommen werden, dass das Wissen um diese Sicherheitslücke wohl kurz auf dem Weg dazu war, "eidgenössisches Allgemeingut" zu werden. Ich kann mir gut vorstellen, dass die "Neuigkeit" in der Computer-Szene gerade begann, seine Kreise zu ziehen.
Wie lange die Sicherheitslücke aber bereits bestand, weiss niemand. Wohl nicht mal die Entwickler selber. Das Absichern ihres Produkts stand, wie vom Tippgeber süffisant vermutet, wohl auf Seite 200 ihrer "To-Do"-Liste.
Funkstille
Bis heute wurde kein einziges Mitglied der Community informiert, dass seine persönlichen Daten gefährdet waren. Man will sich ja nicht blossstellen. Der Fakt, dass auch die Passwörter frei zugänglich waren, würde mich aber erschaudern lassen. Wieviele KV-Stifte, die Partyguide von morgens bis abends im Büro geöffnet haben, verwenden für den Firmenrechner dasselbe Passwort? Oder für ihre E-Mail-Accounts? Abgründe tun sich auf ...
Nie wieder!
Ich überlege mir, in der Blogosphäre eine Sammelaktion zu starten und mit dem gesammelten Geld dem Partyguide-Team das Buch Essential PHP Security zuzusenden. Ohne Gebete nützt das Buch alleine wohl nichts. Wenn solchen Leuten PHP und ein Server in die Hand gedrückt wird, verwandeln sie dieses in wenigen Minuten zu einer tödlichen Waffe.
Dilettanten
Als ich mit meiner Serie/Kampagne im August 2005 startete ("Partyguide sucks"), konnte ich nicht wissen, dass im März 2006 der endgültige Beweis erbracht werden sollte, dass Partyguide entweder vom Netz genommen oder von Grund auf neu programmiert werden sollte.
Wann wacht ihr endlich auf?!
Übrigens
Auch ganz nett: Persönliche Einstellungen.
Labels: Partyguide
Abonnieren

Kommentare
neuen Kommentar verfassen
Ich nehm an "sess_login" und "sess_member_id" werden benutzt, um Ihre User automatisch einloggen zu lassen (Also die berühmte Checkbox beim login). Wenn Du nun das nächste mal kommst und noch keine Session vom Server gekriegt hast (und damit eben kein PHPSESSID cookie hast), schaut sich der die 2 cookies an und loggt dich von alleine ein... Superschlau :)
Dass das mit dem Passwort speichern im cookie auch nicht das Wahre ist, haste ja schon in einem deiner letzteren Posts geschrieben :) Aber wenn Sie's schon tun, sollten sie's wenigstens abfragen beim AutoLogin... Trotzdem, ein grosses No-No.
Übrigens betr. Security Buch kann ich auch das http://www.amazon.de/exec/obidos/ASIN/3898643697/ (in Deutsch) empfehlen. Ich hab's zwar noch nicht gelesen, durchblättern machte aber nen guten Eindruck und die Autoren sind sonst auch ganz sattelfest in dem Bereich.
Witzig zu lesen und ein Paradefall für viele "so nicht" Beispiele für Vorträge/Schulungen/etc :)
he he he, also ich fands ganz lustig.. jetzt mehr von der menschlichen seite her, denn wer erfreut sich nicht ab den geheimnissen der anderen ;-)
Lustig ist, dass ein Thread im Forum von Partyguide innerhalb weniger Stunden geschlossen wurde und in allg. bekannter PG-Manier als "Hirngespinnst" abgetan wurde.
Im Grossen und Ganzen finde ich es wirklich bedenklich wie eine "Community" mit knapp 200k Leuts drauf so mit den Daten umgeht.
Sind eigentlich solche Datensammlungen nicht meldepflichtig? *g*
hehe habt ihr gesehen, wie schnell der thread im pg-forum verschwunden war ? und irgendwie hat der mod mit seinem post wieder mal richtig kleingeist bewiesen...
gibts keinen datenschutz oder so ?
0wn3d! ;) Ich habe schon mit anderen Mails direkt an den Support von PG geschriebe, dass das Aufrüsten der Server keinen Sinn macht.. Echt, das Geld was die in Hardware stecken.
der Backend ist sowas von Buggy..
die Session Exploits sind nur ein kleiner Teil der Möglichkeiten die man dort hat. Hab schon letzten Sommer einen "kleinen" Exploit gefunden um eingeloggt aber unsichtbar zu sein. Dieser Bug wurde bis jetzt noch nicht gefixt.
Ich würde sogar soweit gehen und ein anderes Backend empfehlen.. Ruby anstelle von PHP..
Vor einiger Zeit, war es auch möglich beliebigen Code auf den Servern von Partyguide auszuführen. Man musste dazu nur ein ; in ein Feld des eigenen Profils schriben, und hinten dran den Code. Den Bug haben sie aber jetz schon einige Zeit gefixt!
wie wärs mal mit dem Thema Fake?:-)) da würd sich jemand blamieren.:-)))