Twitter: Unverzeihliche Sicherheitslücke (Update)

Michael Seemann war mal wieder in einem offenen WLAN unterwegs. Dort gelten ja besondere Vorsichtsmaßnahmen, wenn man nicht möchte, dass fremde Leute plötzlich auf dem eigenen Facebook- oder Twitteraccount schreiben. Als er deshalb alles dichtmachte, entdeckte er eine ziemlich haarsträubende Sicherheitslücke bei Twitter.

Wer im offenen WLAN Dienste wie Facebook benutzt, überträgt bei jedem Klick eine Session-ID, mit der er sich Facebook gegenüber identifiziert, sobald er sich einmal mit Namen und Passwort eingeloggt hat – was auch viel früher zu Hause passiert sein darf. Prinzpiell können in einem offenen WLAN alle mitlesen, was die anderen im so funken, wenn man die richtigen Programme dafür hat.

[adrotate group="5"]

Es wäre also ein leichtes gewesen, Michaels Session-ID abzugreifen und sich fortan Facebook gegenüber als Michael auszugeben. Und es gibt einen einfachen Weg, das unmöglich zu machen: Michael loggt sich bei Facebook aus. Dadurch wird die Session ungültig. Eine reine ID reicht nicht mehr; eine erneute Angabe von Namen und Passwort wird nötig. Genau das tat er auf Facebook und Twitter.

Twitter allerdings spielte nicht mit. Trotz explizitem Log-Out blieb die Session gültig. Das ist eine ziemliche Sicherheitslücke. Jeder, der sich im gleichen Netz mit einem Twitter-Nutzer befindet und die Session-ID mitgeschnitten hat, kann den fremden Twitter-Account weiterhin missbrauchen, obwohl der betreffende Twitter-Nutzer sich explizit abgemeldet hat.

Dazu ist es gar nicht mal nötig, sich im offenen WLAN eines Cafés an jemanden ranzuwanzen. Denkbar wären auch die Mitbenutzung von Netz-Segmenten in kabelgebundenen LANs am Arbeitsplatz. Die ganzen Clients von Tweetdeck bis Echofon machen nichts anderes – auch auf dem Handy sind mittlerweile gezwungen, OAuth zu verwenden und übertragen ein Token statt einer Session-ID, das schwerer zu missbrauchen ist.

Für Twitter scheint dann doch einen Kniff zu geben: Wenn das Passwort geändert wird, werden damit auch alle Sessions ungültig. Einerseits ist das die Rettung in brenzliger Situation, andererseits auch eine wundervolle Möglichkeit für den Angreifer, sein Opfer sofort und endgültig aus dessen Twitter-Account auszusperren.

Update: Die Lücke scheint noch erheblich schwerwiegender zu sein: Ich habe gerade noch ein wenig mit dem Bug herumexperimentiert und kann ihn voll bestätigen. Allerdings scheint das Ändern des Passwortes nichts zu bewirken. Nachdem ich auf Twitter.com das Passwort eines Accounts geändert hatte, funktionierte ein auf dem Mac parallel laufendes Echofon weiterhin. Ich griff zum Handy, wo ich Tweed startete, das ebenfalls anstandslos in meinen Account reinkam. In beiden Apps ist noch das alte Passwort eingestellt…

15 Gedanken zu „Twitter: Unverzeihliche Sicherheitslücke (Update)“

  1. Ja, das mit den Sessions ist eine “interessante” Sache, aber aus dem Passwort ändern wird nix: Dazu benötigt man das aktuelle Passwort :)

    Ist der Twitter-Login eigentlich verschlüsselt? Weil sonst könnte man das Passwort ja gleich dort abfangen, und dann kann man wirklich alles machen …

  2. Dass externe Dienste auch nach Passwortwechsel, oder Wechsel des Benutzernamens funktionieren hat Twitter mal irgendwo als gewolltes Feature argumentiert. Wenn man die aussperren will muß man deren Genehmigungen unter >>Einstellungen>>Verbindungen widerrufen.

    Soll Komfort sein, ist für mich aber auch eher eine unnötige Sache.

    So ein OAuth Token wäre mit einem Klick neu zu autorisieren.
    Spätestens beim Passwortwechsel sollten die vergebenen Token als ungültig werden.

  3. Mit einem Klick? Bei Desktop-Anwendungen (wenn der Browser eh immer ein passendes Twitter-Cookie hat) mag das noch stimmen, aber z. B. auf dem iPhone sieht das eher so aus, daß man für jede Anwendung, die ein neues Token will, mal eben das Paßwort eintippen darf. Was die Motivation für häufige Paßwortänderungen ja deutlich erhöht …

  4. Es war mal anders. Zumindest von Tweed weiß ich, dass sie auch mal Sessions benutzt haben. Jetzt die interessante Frage: Auch das Token muss bei Zugriffen übertragen werden. Kann es nicht abgegraben werden? (Die Nutzung wäre gegenüber einer Session allerdings eingeschränkte, da jeder Dienst ein anderes Token hat.)

  5. Die Älteren unter uns können sich wahrscheinlich noch daran erinnern, daß vor ziemlich genau zwei Monaten manche Bots und Anwendungen nicht mehr funktionierten. Das lag daran, daß Twitter seit dem 1. September den API-Zugriff nur noch über OAuth zuläßt – vorher war es in der Tat anders als jetzt. :)

  6. @Lars “Mit einem Klick” – auf dem Desktop brauche ich so gut wie nie das Passwort einzugeben, weil die Session im Browser schon steht. Auf dem Palm scheint TweetMe einen Browser zu öffnen, um es abzuwickeln – auch da geht es mit einem Klick. Tweed hingegen verlangt die Eingabe von Namen und Passwort in der App, um das selbst abzuwickeln.

  7. OK, meinetwegen funktioniert es auch auf manchen Mobilgeräten ohne erneute Paßworteingabe. Aber welchen Vorteil hätte es denn, mit jeder Paßwortänderung sämtliche Tokens zu verwerfen? API-Tokens (und API-Zugriffe) laufen bei vernünftigen Anwendungen komplett über SSL, im Gegensatz zur Web-Oberfläche, die für die Ausgabe von OAuth-Tokens benutzt wird. Angenommen, ich habe gestern mein Twitter-Paßwort geändert und komme heute abend in irgendeinem unverschlüsselten WLAN auf die Idee, Tweetie zum ersten Mal seit gestern wieder zu benutzen. Statt daß (wie es jetzt der Fall ist) einfach alles über SSL läuft und gut, müßte ich dann also erstmal mein Cookie unverschlüsselt durch die Gegend schleudern, um ein neues Token zu kriegen. Jetzt erklär mir mal jemand den daraus entstehenden Sicherheitsgewinn …

    Die nach dem Abmelden gültig bleibenden Cookies sind absoluter Mist, aber daß Tokens nach Paßwortänderung gültig bleiben, ist sehr gut und soll auch so bleiben.

  8. @Lars OK, hier das Szenario: Ich nutze Tweetdeck. Ein Angreifer erntet mein Passwort und loggt sich mit Tweetdeck ein. Ich ändere mein Passwort. Jetzt nutzen wir beide Tweetdeck. Dass es zwei verschiedene Tweetdeck-Installationen auf verschiedenen Rechnern gibt, wird dabei in den Einstellungen auf Twitter.com nicht angezeigt. Ich kann nur Tweetdeck die Benutzung einmal insgesamt verbieten. Ich habe das gerade auf zwei Rechnern, auf denen ich parallel ein Tweetdeck drauf habe, nachvollzogen: Funktioniert einwandfrei. Wer also aus Sicherheitsgründen sein Passwort ändert, muss dann auch manuell verschiedenen Apps die Tokens entziehen. Im Zweifel allen.

  9. Stimmt, das ist ein Aspekt. Wäre dann aber sinnvoller dadurch zu lösen, daß man in der Token-Übersicht jedes einzelne Token anzeigt und den Benutzer über jedes neu zugeteilte Token benachrichtigt (z. B. per E-Mail).

  10. Hmm… naja. Dann müsste ich mir aber über diese Mails und die einzelnen Token Gedanken machen. Mit einem Klick sehr schnell allen alles entziehen, fände ich wesentlich besser. Muss man halt hier und da sein Passwort neu eingeben, was nicht weiter schlimm ist. Damit filtert man auch immer mal wieder die Dienste raus, die man eigentlich gar nicht nutzt, mit denen man sich aber mal angemeldet hat.

Kommentare sind geschlossen.