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:
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. | 89 | A B |
| 2. | 20 | M S |
| 3. | 18 | Ich Du |
| 4. | 15 | Ale Ela |
| 5. | 14 | John Doe |
| 6. | 13 | X Y |
| 7. | 13 | Marco |
| 8. | 12 | Patrick |
| 9. | 12 | A S |
| 10. | 11 | M G |
| 11. | 11 | S M |
| 12. | 10 | A M |
| 13. | 9 | Stefan |
| 14. | 9 | D B |
| 15. | 9 | Sandra |
| 16. | 9 | Jenny |
| 17. | 9 | Daniel |
| 18. | 8 | M B |
| 19. | 8 | Nadine |
| 20. | 8 | Laura |
| 21. | 8 | M W |
| 22. | 8 | S F |
| 23. | 8 | M K |
| 24. | 7 | Vanessa |
| 25. | 7 | Nadja |
| 26. | 7 | Michael |
| 27. | 7 | A D |
| 28. | 7 | Mike |
| 29. | 7 | S B |
| 30. | 6 | P G |
| 31. | 6 | Sarah |
| 32. | 6 | R F |
| 33. | 6 | Pascal |
| 34. | 6 | Nicole |
| 35. | 6 | F S |
| 36. | 6 | Abc Def |
| 37. | 6 | Lisa |
| 38. | 6 | N Z |
| 39. | 6 | P M |
| 40. | 6 | M A |
| 41. | 6 | Sabrina |
| 42. | 6 | M R |
| 43. | 6 | Dsf Sdf |
| 44. | 5 | A H |
| 45. | 5 | Nina |
| 46. | 5 | Asd Asdf |
| 47. | 5 | Adrian |
| 48. | 5 | Melanie |
| 49. | 5 | J W |
| 50. | 5 | Don 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. | 94 | A A |
| 3. | 78 | Asdf Asdf |
| 4. | 51 | ... ... |
| 5. | 45 | . . |
| 6. | 42 | D D |
| 7. | 38 | X X |
| 8. | 32 | S S |
| 9. | 32 | Bla Bla |
| 10. | 31 | Xxx Xxx |
| 11. | 23 | H H |
| 12. | 21 | Asd Asd |
| 13. | 20 | F F |
| 14. | 20 | M M |
| 15. | 18 | Dd Dd |
| 16. | 18 | .. .. |
| 17. | 16 | Test Test |
| 18. | 15 | R R |
| 19. | 14 | L L |
| 20. | 13 | Hans Hans |
| 21. | 13 | Xx Xx |
| 22. | 12 | Anonym Anonym |
| 23. | 12 | * * |
| 24. | 12 | Sdf Sdf |
| 25. | 12 | Lala Lala |
| 26. | 11 | Xy Xy |
| 27. | 10 | T T |
| 28. | 10 | B B |
| 29. | 10 | J J |
| 30. | 10 | Marco Marco |
| 31. | 9 | Ss Ss |
| 32. | 9 | Tom Tom |
| 33. | 9 | Mike Mike |
| 34. | 9 | Lol Lol |
| 35. | 9 | Asdasd Asdasd |
| 36. | 9 | .... .... |
| 37. | 9 | Gg Gg |
| 38. | 9 | K K |
| 39. | 8 | W W |
| 40. | 8 | Ff Ff |
| 41. | 8 | Hallo Hallo |
| 42. | 8 | Crazy Crazy |
| 43. | 8 | Toni Toni |
| 44. | 8 | G G |
| 45. | 7 | Muster Muster |
| 46. | 7 | Alex Alex |
| 47. | 7 | ??? ??? |
| 48. | 7 | E E |
| 49. | 7 | Unbekannt Unbekannt |
| 50. | 7 | Sam 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: Partyguide
Abonnieren

Kommentare
neuen Kommentar verfassen
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
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
Na dann hat Jason den Blog also auch in seinem RSS reader... =) gut zu wissen!? *g*
Einen Satz hast du noch vergessen: "Partyguide, Hausaufgaben nicht gemacht!"
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
@ 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
@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.
@ Oli
Schick mir eine Mail über mein Blog, ich kann dir danach nähere Details zu Datum etc. machen.
Gruss Bastian
Salü Maro! Schön das du immerhin sagst, das du nicht selbst auf die Idee gekommen bist!
@scream: Sorry?