do you trust all wordpress plugins?

ohne die masse an plugins, die es mittlerweile zum glück gibt, wäre wordpress mit sicherheit nicht so beliebt: wenn man ein wenig sucht, so findet man eigentlich immer ein plugin, welches genau die funktionalität bietet, die man gerade benötigt – und wenn nicht, dann ist es auch nicht sonderlich schwer ein eigenes zu basteln.

doch: kann man eigentlich darauf vertrauen, dass das eben heruntergeladene plugin auch genau das tut, was es vorgibt? und zwar nur das?

hand aufs herz: ich bin mir sicher, dass der überwiegende anteil der anwender es genau so macht:
– plugin herunterladen
– nach /wp-content/plugins hochladen
– aktivieren
– eventuell in der options page noch konfigurieren und oder ins template einbauen
– fertig

den php code des plugins kontrolliert niemand – das ist auch teilweise aufgrund der größe gar nicht so einfach; sicherlich, der großteil der plugins hat eine überschaubare anzahl von zeilen; aber bei plugins wie z.b. sk2 würde man schon einige zeit benötigen um zu kontrollieren, welche funktionen es genau ausführt (bzw eher: was es macht, aber nicht machen sollte…)

was soll ein plugin schon großartig anstellen? gut, machen wir ein experiment – ich habe hier ein plugin namens wp-surprise vorbereitet. mache es so wie immer – also herunterladen, einspielen und aktivieren. keine angst, es passiert nichts schlimmes, versprochen. erst dann lese weiter…

gut – nun checke deine mailbox…

keine panik – es ist nichts weiter passiert – nur du hast dieses mail bekommen; der inhalt ist auch nicht weiter besonders aufregend: es sollten alle in deiner wordpress installation angelegten user enthalten sein, samt dem passwort als md5 hash. mit dem hash fangt man nicht wirklich etwas an – man kann den hash nicht einfach wieder zurück in das eigentliche passwort umwandeln; aber trotzdem: es sind zumindest alle loginnames ersichtlich, so könnte man zumindest versuchen, schwache passwörter zu erraten.

wie hat das nun funktioniert?

wenn ein plugin aktiviert wird, so können bereits beliebige funktionen ausgeführt werden; dazu verwendet man die funktion “register_activation_hook” – das ist z.b. für plugins, die einen eigenen sql table anlegen müssen unbedingt notwendig und daher auf jeden fall eine wichtige funktionalität. in dem plugin gibt es weiters eine funktion namens “hipslu_wp_surprise_init”, welche beim aktivieren des plugins sofort aufgerufen wird. diese funktion baut das mail zusammen und sendet es an die e-mail adresse des admins.

denkbar wären hier aber ganz andere funktionen:
– man könnte die passwörter der user nicht nur auslesen, sondern einfach neu setzen; das ist mit einem einfachen sql statement kein problem. der eigentliche anwender wäre somit ausgesperrt und könnte das passwort nur mehr direkt über die sql datenbank wieder ändern
– man könnte alle posts, pages, kommentare etc löschen, ändern, neue erstellen, etc
– man könnte aus der installation einen art spam-bot machen: sowohl mail spam als auch trackback spam ist kein problem
– usw, usw…

das würde aber natürlich alles auffallen und ist abgesehen davon auch wenig sinnvoll – die gefahr ist wohl auch sehr gering, weil kaum jemand daran interesse haben wird – es lohnt nicht wirklich, und nur ein sehr populäres plugin ist wirklich halbwegs oft installiert – doch gerade die populären plugins werden eher früher als später unter die lupe genommen und damit würde es auffliegen.

eines wäre aber sehr wohl eine nicht ganz unwahrscheinliche möglichkeit:
alle funktionen, die in der /wp-includes/pluggable.php enthalten sind, kann man leicht durch ein plugin ersetzen. eine dieser funktionen trägt den namen “wp_login” und ist – erraten – für das login zuständig; überprüft also, ob es den user gibt und ob das eingegeben passwort dem in der datenbank gespeicherten gleicht. mit einer minimal angepassten funktion ist es also kein problem mit irgendeinem passwort z.b. als admin einsteigen zu können…

ist diese – logischerweise vorhandene gefahr – zu vernachlässigen bzw nicht existent – weil man der wordpress gemeinde trauen kann und es sich niemand trauen würde, da es früher oder später entdeckt werden würde – oder sollte man hier sehr wohl misstrauisch sein?

“redeclare” bug fixed

als ich meine wordpress plugins damals erstellt habe, dachte ich nicht daran, dass irgendjemand anders eventuell auch gebrauch davon machen könnte – ich hab sie eigentlich zuerst nur für meine zwecke erstellt und erst später mehr oder weniger “zum spass” zum download angeboten.

doch immer wieder habe ich mails und kommentare erhalten, dass die plugins bei manchen nicht funktionieren – sondern nur einen fehler wie

Fatal error: Cannot redeclare hipslu_function_name() in /home/usr/wp-content/plugins/hipslu_plugin-name.php on line xy

bringen. da z.b. das plugin wp-head bereits knapp 4000x heruntergeladen wurde (also doch offensichtlich auch bei anderen wordpress anwendern verwendet wird), und ich natürlich auch auf die hilfe von anderen hoffe, die ihre plugins zum download anbieten – habe ich den bug nun endlich behoben; unter www.konfabulieren.com/wordpress-plugins/ gibt es die neuen versionen.

den grund, warum das bei manchen passiert ist, kann ich nicht wirklich nachvollziehen – aber hier fand ich die lösung: Replace is_plugin_page()/double loading with action hook