Schwachstelle in Cookie-Authentifizierung von WordPress

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:

wordpresspass_<MD5(url)>=MD5(user_pass)

wobei die URL offen einsehbar ist und user_pass dem Hash (MD5(password)) entspricht. Zusammen mit dem wordpressuser-Cookie (wordpressuser_=admin) soll dann der Zugriff auf den Admin-Account von WordPress möglich sein. Die Entwickler von WordPress sollen über das Problem informiert sein, bislang aber noch nicht reagiert haben.

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.

Betroffene Versionen

WordPress 1.5 - 2.3.1 (including current version, as of 2007-11-19)

Quellen

Weitere Links

6 Comments

  1. 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?

  2. 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?

Comments are closed.