Dienstag, April 03, 2007

Der fünfte Partyguide-Hack

Korrigendum: Huch, wir sind ja schon bei Nummer FÜNF angekommen. Danke, Shift, für den Hinweis.

Hinweis: Es ist - wie immer wenn es um die Sicherheit von Partyguide geht - übertrieben, von einem Hack zu sprechen. Viel eher handelt es sich um ein Datenleck, durch das mit minimalsten Kenntnissen von Web-Programmierung vertrauliche Daten von Benutzern des Portals eingesehen werden konnten.

Das Problem wurde mittlerweile beseitigt, weshalb ich keine Bedenken mehr habe, das Leck öffentlich zu machen.

Wie immer: Geschwätzig!

Das Leck offenbarte sich im angesprochenen Fall über das PHP-Script, das Staff-Mitglieder mit Foto anzeigt:

Oliver Walzer alias thematrix

Irgend ein spielerisch veranlagter Zeitgenossen war vor einiger Zeit auf die Idee gekommen, eine beliebige Benutzer-ID in die URL einzufügen. Und siehe da - das Script frass die neue ID ohne Überprüfung, ob es sich beim angefragten User tatsächlich um ein Staff-Mitglied handelte. Nicht weiter schlimm, mag man denken - doch blöderweise stand auf der ausgelieferten HTML-Seite auch der reale Namen des Users.

Obwohl die Macher hinter Partyguide erst kürzlich in einem grossen Schweizer Wochenmagazin behaupteten, seit dem "Hackerangriff vom letzten Sommer" Sicherheit einen höheren Stellenwert zu geben, scheint von diesem Vorhaben nicht viel in Praxis umgesetzt worden zu sein. Auch weiterhin galt bei diesem Script (wie wohl auch bei Dutzend anderem auf dem Server) das Motto: "Wir trauen jeglichen Anfragen, die von Besuchern unserer Seite eintreffen." Tragisch, aber wahr.

Data Mining

Natürlich reizt dieser Datenfundus, um mit statistischen Methoden Untersuchungen anzustellen. Nachfolgend zwei interessante Entdeckungen:

Hauptkritikpunkt: Registration nur mit plausiblen Angaben? Nicht bei uns!

Bei Partyguide kann Mitglied werden, wessen Namen ". ." lautet. Dies öffnet Tor und Riegel, um sich in Kürze unzählige Fake-Accounts zuzulegen. Als positiver Nebeneffekt kann sich Partyguide dann damit brüsten, so und soviele hunderttausend Benutzer registriert zu haben.

Der Beweis für die Laxheit der Überprüfung von Formular-Angaben mit einer Auflistung von komischen Benutzerangaben (die Zeichenlänge von Vor- und Nachnamen beträgt maximal 8 Zeichen):

1.89A B
2.20M S
3.18Ich Du
4.15Ale Ela
5.14John Doe
6.13X Y
7.13Marco
8.12Patrick
9.12A S
10.11M G
11.11S M
12.10A M
13.9Stefan
14.9D B
15.9Sandra
16.9Jenny
17.9Daniel
18.8M B
19.8Nadine
20.8Laura
21.8M W
22.8S F
23.8M K
24.7Vanessa
25.7Nadja
26.7Michael
27.7A D
28.7Mike
29.7S B
30.6P G
31.6Sarah
32.6R F
33.6Pascal
34.6Nicole
35.6F S
36.6Abc Def
37.6Lisa
38.6N Z
39.6P M
40.6M A
41.6Sabrina
42.6M R
43.6Dsf Sdf
44.5A H
45.5Nina
46.5Asd Asdf
47.5Adrian
48.5Melanie
49.5J W
50.5Don Juan

Das andere Problem ist, dass eine Registrierung auch dann zugelassen wird, wenn man in das Feld für Vor- und Nachnamen dieselben Angaben eingibt:

1.243- -
2.94A A
3.78Asdf Asdf
4.51... ...
5.45. .
6.42D D
7.38X X
8.32S S
9.32Bla Bla
10.31Xxx Xxx
11.23H H
12.21Asd Asd
13.20F F
14.20M M
15.18Dd Dd
16.18.. ..
17.16Test Test
18.15R R
19.14L L
20.13Hans Hans
21.13Xx Xx
22.12Anonym Anonym
23.12* *
24.12Sdf Sdf
25.12Lala Lala
26.11Xy Xy
27.10T T
28.10B B
29.10J J
30.10Marco Marco
31.9Ss Ss
32.9Tom Tom
33.9Mike Mike
34.9Lol Lol
35.9Asdasd Asdasd
36.9.... ....
37.9Gg Gg
38.9K K
39.8W W
40.8Ff Ff
41.8Hallo Hallo
42.8Crazy Crazy
43.8Toni Toni
44.8G G
45.7Muster Muster
46.7Alex Alex
47.7??? ???
48.7E E
49.7Unbekannt Unbekannt
50.7Sam Sam

Ratschläge

Die Daten liegen zu euren Füssen - säubert die Benutzer-Tabelle doch endlich mal! Mit ein paar Zeilen PHP-Code lässt sich die ganze Chose automatisieren.

Im gleichen Anlauf fände ich eine noch porentiefere Säuberung sinnvoll: Benutzer, die sich seit x Monaten nicht mehr eingeloggt haben, wird ein Mail gesendet, das sie auffordert, sich in den nächsten x Tagen einzuloggen. Ist die Mail-Adresse ungültig oder geschieht bis zum angedrohten Termin kein Login, wird der Account gelöscht.

In Zukunft bitte ich euch, eine anständige Plausibilitätsprüfung bei Neuanmeldungen durchzuführen.

Und last, but not least: Der Sicherheitsaudit wäre immer noch fällig. Solche Datenlecks dürfen einfach nicht auftreten!

Für die Konkurrenz

Bei ca. 30% der untersuchten Accounts wurde kein Namen zurückgeliefert (unter der angefragten User-ID scheinen keine Daten mehr vorhanden zu sein). Vermutlich handelt es sich hierbei um gelöschte Benutzer.

Wissenswertes

Die häufigsten Familiennamen der Schweizer Jugend resp. der Partyguide-Benutzer? Seht selbst:

1.Müller
2.Meier
3.Schmid
4.Gerber
5.Keller
6.Schneider
7.Weber
8.Moser
9.Meyer
10.Berger

Und hier dasselbe mit den Vornamen:

1.Michael
2.Daniel
3.Thomas
4.Marco
5.Stefan
6.Patrick
7.Sandra
8.Marc
9.Simon
10.Pascal

Es scheint symptomatisch für Partyguide zu sein, dass unter den zehn häufigsten Vornamen nur gerade ein weiblicher Name auftaucht ...

Labels:

10 Kommentare | neuen Kommentar verfassen

Kommentare

neuen Kommentar verfassen

Anonymous Shift um 03.04.2007 23:41:00 Uhr

Lieber Mario,

Ich glaube, dass sich da ein kleiner Fehler in deiner PartyGuide-Hack Nummerierung eingeschlichen hat.
Es ist bereits ein 4. PartyGuide Hack in deinem Blog vorhanden.

Regards
Shift

Anonymous Bastian um 04.04.2007 00:21:00 Uhr

Danke fürs DataMining, du hast wohl eine performantere Variante verwendet als ich. Ich hätte es nicht in so kurzer Zeit geschafft.

PG hat vermutlich die Lücke schon gefixt, jedenfalls gibt es jetzt keine Daten mehr bei "falscher" ID

Anonymous Anonym um 04.04.2007 07:04:00 Uhr

Na dann hat Jason den Blog also auch in seinem RSS reader... =) gut zu wissen!? *g*

Anonymous Anonym um 04.04.2007 09:13:00 Uhr

Einen Satz hast du noch vergessen: "Partyguide, Hausaufgaben nicht gemacht!"

Anonymous Oli um 04.04.2007 09:58:00 Uhr

Sali Mario

Da ich schon persönlich erwähnt werde, muss ich fast dazu Stellung nehmen. Hier von einem Hack zu sprechen ist wohl etwas übertrieben. Der Begriff Datenleck trifft es da schon viel besser. Wie Du richtig erkannt hast, wurde das Skript sofort nach dem erkennen der Lücke bereinigt. Dazu kam es, weil wahrscheinlich ein Nachahmer von Dir, die Seite zu oft aufrief. Unserem Monitoring ist dies nicht entgangen und wir wurden auf das Problem aufmerksam. Leider verliefen deine Aufrufe wohl schleichender, weshalb wir nicht schon früher darüber informiert wurden.

Ich muss Dich enttäuschen, Deine Ratschläge wurden teilweise schon in die Tat umgesetzt. So werden inaktive User nach einer bestimmten Zeit per Mail informiert und wenn der User nicht reagiert, wird der Account gelöscht. Die Problematik bei der Registrierung ist uns auch bekannt und steht weit oben auf unserer ToDo Liste.

Du siehst also, weder sind wir diesmal von Deiner Entdeckung überrascht worden, noch sind Deine Ratschläge neu für uns. Obwohl dies nicht als Entschuldigung für diese Lücke gelten soll, zeigt es doch, das etwas geändert wurde.

Gruess

Oli

Anonymous Bastian um 04.04.2007 10:51:00 Uhr

@ Oli

Ich muss mich da kurz zu Worte melden.

> Unserem Monitoring ist dies nicht entgangen und wir wurden auf das Problem aufmerksam.

Ich denke euer Monitoring ist noch nicht sehr lange in betrieb, sonst hättet Ihr meine "gröbere" Abfrage , welche einfach die UserIDs hochgezählt hat (von 1 to XY) schon früher Bemerkt und den Fehler im Script festgestellt.

Jedenfalls freut es mich, dass Partyguide langsam aus dem deffensiven Security-Dornröschenschlaf aufwacht und langsam die Zügel anzieht.

Gruess

Bastian

Anonymous Oli um 04.04.2007 11:35:00 Uhr

@Bastian: Darf ich fragen, wann diese Aufrufe ungefähr stattfanden.
Ja, da hast du recht, wir sind noch etwas am Justieren des Monitorings, leider ist es in einem Verteilten System nicht immer einfach, verdächtige Aufrufe zu entdecken. So haben wir z.B. Marios Aufrufe nicht bemerkt.
Wir hatten jedoch vor einiger Zeit schon mal einen Alert wegen diesem Skript. Damals wurden zusätzlich noch die Bilder der Benutzer auf dieser Seite angezeigt, auch wenn sie keinen Staff-Status hatten. Wir vermuteten damals, dass der "Angreifer" die Bild-Pfade auslesen wollte und schlossen diese Lücke. Dabei übersahen wir, dass am Ende der Seite auch noch der Name ausgegeben wird. Ich vermute, dass Du in diesem Fall den Alert ausgelöst hast. Spricht bemerkt haben wir Deine Aufrufe schon, haben jedoch Deine wirkliche Absicht nicht erkannt.

Anonymous Bastian um 05.04.2007 18:14:00 Uhr

@ Oli

Schick mir eine Mail über mein Blog, ich kann dir danach nähere Details zu Datum etc. machen.

Gruss Bastian

Anonymous scream um 23.06.2007 16:00:00 Uhr

Salü Maro! Schön das du immerhin sagst, das du nicht selbst auf die Idee gekommen bist!

Blogger eMeidi um 23.06.2007 20:39:00 Uhr

@scream: Sorry?

Zitierungen dieses Artikels