Durch einen Design-Fehler in der Authentifizierung der Blogsoftware WordPress kann ein Angreifer einfacher als gedacht ein System kompromittieren. Die meisten Content-Management-Systeme und Blogs speichern die Passwörter der Anwender als Hashes in der zugrundeliegenden Datenbank. Erhält ein Angreifer etwa über eine SQL-Injection-Lücke Zugriff auf die gespeicherten Hashes in der Datenbank, kann er damit zunächst nichts anfangen. Um an das ursprüngliche Passwort zu gelangen, muss er den Hash beispielsweise mit den Einträgen einer sogenannten Rainbow-Table vergleichen. Unter Umständen kann dies einige Zeit in Anspruch nehmen, bei langen Passwörtern kann dies auch gänzlich scheitern, da die Tabellen dafür noch nicht vorbereitet sind.
Unter WordPress kann sich der Angreifer laut eines Berichtes von Steven J. Murdoch von der Universität Cambridge aber eine Eigenheit zunutze machen, um ohne Passwort den Zugriff zu erhalten. Dazu bastelt er sich anhand des Hashes einfach ein Authentifizierungs-Cookie und verwendet diesen bei Zugriffen auf das System. Laut Murdoch, der auch zum Kernteam des Anonymisierungsprojektes The Onion Router (TOR) gehört, muss man dafür nur den ausgelesenen MD5-Hash nochmals mit MD5 hashen. Das von WordPress zur Authentifizierung benutzte wordpresspass-Cookie hat dann laut Bericht den Aufbau:
wobei die URL offen einsehbar ist und user_pass dem Hash (MD5(password)) entspricht. Zusammen mit dem wordpressuser-Cookie (wordpressuser_ Nach Angaben von Murdoch wird der Designfehler schon aktiv ausgenutzt. Allerdings lässt er offen, wie die Angreifer an den Passwort-Hash gelangt sind. In der aktuellen Version von WordPress sind keine SQL-Injection-Schwachstellen bekannt. Ältere WordPress-Installationen können jedoch durchaus noch verwundbar sein. WordPress 1.5 - 2.3.1 (including current version, as of 2007-11-19)wordpresspass_<MD5(url)>=MD5(user_pass)
Betroffene Versionen
Quellen
Weitere Links
dann gibt es bestimmt bald wieder einen patch oder ein upgrade …
„dann gibt es bestimmt bald wieder einen patch oder ein upgrade …“
was ja auch durchaus wünschenswert wäre…!
Sehe ich das richtig, dass ich diese Lücke quasi zumachen kann, indem ich den User admin lösche und einem anders benannten User Admin-Rechte gebe?
@Henning: nein, der wordpressuser_ wird im Cookie übergeben, egal wie er lautet.
Das setzt dann jetzt vorraus, dass ich sowohl den Benutzer als auch den Hashwert des Passwortes kenne – oder täuscht mich das?
Ergo kann das nur dann schief gehen, wenn jemand mindestens leseberechtigung auf meinem Blog oder einen Trojaner in meinem Rechner hat.
Oder steh ich aufm Schlauch?
Ja, so habe ich es verstanden. Wie man daran kommt, ist nicht bekannt, nach Aussage des Autors, aber es wurde nachgewiesen, dass es geht.