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.