Datenschutzproblem in WordPress 2.3

Verschiedene Updates, bitte auf jeden Fall die Nachträge lesen. Ganz wichtiger Hinweis schon hier oben, es gibt Abhilfe gegen das Problem mit einem Plugin. (Dank an meinen Leser Morty.)

Morgen soll sie ja kommen, die Release von WordPress 2.3, die mich jetzt schon im Vorfeld einiges an Schweiß gekostet hat. Viele Blogger, die weniger in ihrem Blog verbastelt haben, werden sicherlich gleich freudig updaten, ich habe sogar im Vorfeld einige erlebt, die sich freudestrahlend und hündisch schwanzwedelnd die Beta 3 auf den Webserver gespielt haben, als ob man nicht genug Probleme hätte.

Es gibt allerdings einen wirklich guten Grund, mit dem Update noch ein wenig zu warten. Dieser gute Grund heißt Datenschutz. Das wäre eigentlich das elfte Ding, dass jeder über WordPress 2.3 wissen sollte.

Ein neues Feature in WP 2.3 wird die automatische Überprüfung der Aktualität aller installierter Plugins sein. Das ist im Prinzip eine gute Idee, da der Blogger gleich sieht, dass sein System nicht auf dem neuesten Stand ist, dass er Plugins hat, die eventuell fehlerhaft oder gar ein Sicherheitsrisiko sind. Ich habe nichts gegen dieses Feature, ich finde sogar, dass es noch nicht weit genug geht und um eine bequeme Update-Möglichkeit direkt aus dem Internet heraus ergänzt werden sollte. Aber ich habe etwas gegen die Implementation dieses Features.

Die folgenden Angaben beziehen sich auf den kürzlich veröffentlichten RC1 von WordPress 2.3, da ich natürlich nicht den Quelltext der Release vorliegen habe.

Bei der Überprüfung der Plugins werden die folgenden Daten automatisch und ohne Kenntnis des Anwenders an api.wordpress.org übertragen — ich hoffe, dass gleich bei vielen Bloggern ein paar Alarmglocken klingeln:

Die Versionsnummer der WordPress-Installation
Okay, das kann man so machen. Schließlich läuft ein neues Plugin eventuell nicht mit einer älteren Version von Wordpress, und das könnte man in der Anzeige berücksichtigen.

Alle installierten Plugins einschließlich Versionsnummer
Diese Information ist für den Update-Hinweis erforderlich.

Die Information, welche von diesen Plugins aktiviert sind
Warum diese Information überhaupt benötigt werden sollte, ist mir ein Rätsel. Wenn man lediglich auf Updates für aktive Plugins hinweisen möchte, ist mir auch nach längerem Nachdenken nicht klar, wofür eine Liste aller Plugins benötigt wird. Will man jedoch auch für deaktivierte Plugin auf mögliche Updates hinweisen, so ist die Übermittlung dieser Zusatzinformation nicht sinnvoll, sie dient offenbar nur für Auswertungen auf Seiten von wordpress.org, über deren Natur und Umfang der Blogger jedoch im Unklaren gelassen wird.

Als wenn das noch nicht schlimm genug wäre, kommt noch Eines hinzu:

Die URL, unter der das Blog im Internet erreichbar ist
Diese Information wird im HTTP-Header der Datenübertragung übermittelt. Sie hat überhaupt keinen Bezug zur Funktion der Plugin-Überprüfung. Sie ist aber insofern ausgesprochen gefährlich, als dass hier Informationen über Blogs mit potenziell angreifbaren Komponenten mit einer URL der möglicherweise angreifbaren Installation zusammen übermittelt wird, und zwar völlig ohne sachlichen Grund.

Es ist völlig unklar, ob diese Informationen irgendwo gespeichert werden. Klar ist nur, dass hier ein wesentlicher Grundsatz des Datenschutzes, nämlich die Vermeidung überflüssiger Datenübertragung und Datenhaltung, einfach ignoriert wird.

Wenn diese Informationen nur übertragen werden, ist das schon schlimm. Die Übertragung geschieht unverschlüsselt über HTTP, jeder Rechner auf der Route kann im Prinzip alle diese Daten lesen und irgendwo speichern, um daraus eine Liste angreifbarer Systeme zu erstellen. Selbst die Angriffe ließen sich bequem automatisieren, wenn jemand mit bösem Willen an einer geeigneten Position im Informationsstrom säße. Bei solchen Erwägungen muss man sich immer vor Augen halten, dass diese Person auch ein krimineller Eindringling sein könnte — je mehr sich das Ziel eines Angriffes auf einen bestimmten Rechner im Internet lohnt, desto größer wird der Ehrgeiz derer, die sich daran versuchen werden.

Sollten diese Informationen auch noch bei wordpress.org gespeichert werden, denn würde diese Situation noch viel schlimmer. Es würde ein Rechner im Internet entstehen (und ein Rechner am Internet ist immer ein “Opferrechner”, der allen nur denkbaren Angriffen ausgesetzt ist), auf dem sich detaillierte Daten über angreifbare Blogs ansammeln. Ein solcher Rechner wäre für kriminelle Angreifer — etwa für die Spam-Mafia — ausgesprochen attraktiv, von daher ist von großen Anstrengungen auszugehen.

Leider gibt es kein gutes Mittel gegen diese Datenschutzproblematik in WordPress 2.3, man kann diesen Automatismus zum Beispiel nicht durch ein Plugin abstellen. (Jedenfalls nicht nach meiner ersten Durchsicht der Quelltexte). Das einzige, was einem bleibt, um dieses Problem zu vermeiden, ist die direkte Bearbeitung der Quelltexte, bevor die neue Version installiert wird.

Im RC1 der Version 2.3 befindet sich die fraglichste Stelle in der Zeile 81 der Datei wp-admin/include/update.php, hier wird die URL des Blogs zum Bestandteil des HTTP-Headers gemacht. (In der Release muss man die Zeile in der Datei einfach mit Hilfe des Editors suchen.) Im RC1 sieht diese Zeile so aus:

$http_request .= 'User-Agent: WordPress/' . $wp_version . '; ' . get_bloginfo('url') . «\r\n»;

Der Funktionsaufruf get_bloginfo(’url’) liefert die URL der WordPress-Installation. Wer dieses Problem für sein eigenes Blog vermeiden will, sollte hier keine Hemmungen haben, eine andere URL anzugeben. Und zwar am besten eine, die auch klar zum Ausdruck bringt, was man von dieser Beglückungsidee in der neuen WordPress-Version hält. Das könnte denn etwa so aussehen:

$http_request .= 'User-Agent: WordPress/' . $wp_version . '; http://www.privacy.org/' . «\r\n»;

Das ist natürlich nur ein Vorschlag für die Modifikaition dieser Zeile. Wer eine bessere Site kennt, die durch den bloßen Verweis für einen englischen Leser klar zum Ausdruck bringt, was man von solchen versteckten, automatischen “Features” hält, der soll sie gern verwenden.

Ich würde niemandem empfehlen, bei solchen überflüssigen Datenübertragungen und möglicherweise auch unnötigen Datenspeicherungen tatenlos zuzuschauen.

Nachtrag: Eine sehr viel bessere (aber auch aufwändigere) Lösung, wie man wordpress.org gegenüber die eigene URL verschweigt, findet sich bei Schnurpsel. Der Vorteil dieser Lösung ist, das sie keine Eingriffe in den offiziellen Code benötigt. Stattdessen muss man jedoch die my-hacks.php verwenden. Wer ernsthaft darüber nachdenkt, aber nur wenig technisches Verständnis hat, sollte sich an anderer Stelle darüber schlau lesen — es ginge wirklich zu weit, diese alte Erweiterungsschnittstelle an dieser Stelle zu erläutern.

Weiterer Nachtrag: Es gibt ein Plugin, mit dessen Hilfe der komplette Versionschecker für die Plugins abgeschlatet werden kann. Leider schaltet dieses Plugin etwas zu viel ab. Das Feature ist und bleibt ja an sich sinnvoll, nur die Übermittlung von kritischen Installationsdaten zusammen mit der URL, unter der diese Installation im Internet für Angreifer zur Verfügung steht, die ist sinnlos. Es handelt sich keineswegs um eine vernünftige Abhilfe, diese müsste im WordPress-Kern eingebaut werden. Vielleicht ist ein solches Plugin aber dennoch für einige Blogger einfacher zu verwenden als die sonstigen Hinweise, wie man in den Quelltext eingreifen muss, um die Übermittlung seiner Blog-URL zusammen mit einem Haufen Daten, die für einen Angreifer hochinteressant sind, zu unterbinden. Allerdings muss sich jeder, der dieses Plugin verwendet darüber bewusst sein, dass er in eingener Verantwortung regelmäßig nach aktuelleren Versionen seiner Plugins schauen muss — das wäre nicht nötig und könnte die Arbeit eines Computers bleiben, wenn die WordPress-Entwickler die elementaren Grundlagen des Datenschutzes berücksichtigen würden. Schade, dass sie es nicht tun (oder nicht tun wollen).

Nachtrag Drei: Il Filosofo hat ein Plugin geschrieben, dass die Update-Prüfung implementiert, ohne dass es zur Übertragung des Domainnamen kommt. Ich habe es noch nicht ausprobiert, aber wenn es die Schnüffelfunktion in WP 2.3 angemessen ersetzt, kann es ein gangbarer Weg sein. Wer nicht damit einverstanden ist, dass ohne sachlichen Grund Daten über seine Installation gesammelt werden, der sollte einmal einen Blick darauf werfen.

A note to native english speakers reading this german post: You are allowed by my license to copy and to translate this text into your language and to publish it on your own webspace, as long as you do not sue me. ;) From my point of view, it is an important problem that people need to know about. So, if you can, please spread the word!

Share This

0 Kommentare