Foto: Zerbrochene Glasscheibe
Foto: flyupmike bei ABSFreePic

Sicherheitslücken bei WordPress

Die Website wurde gehackt – ein kurzer Erfahrungsbericht mit Sicherheitstipps

Die Website schoefl.info war vor Kurzem für ein paar Tage offline. Der Grund: Meine Site wurde gehackt. Jeder weiß, dass derartige Attacken im Web zum Alltag gehören. Doch sobald man selbst Opfer so eines Angriffs geworden ist, bekommt die Angelegenheit weitere Dimensionen: Betroffenheit, das Gefühl von Ohnmacht, Ärger …

Warum gerade meine Site?

Die Motive und Ziele der Hacker sind überschaubar. Über kommerzielle Ressourcen oder interessante Datenbestände verfügt mein Blog nicht. Als Basis für weiterführende, längerfristige kriminelle Aktivitäten war der Hack mit Gewissheit auch nicht gedacht. Da gab es keine „secret backdoor“. Bei den ersten Gegenmaßnahmen wurde vom Hacker mein WordPress-Passwort geändert – eine heimliche, getarnte Vorgangsweise sieht anders aus.

Es ist ein schwacher Trost, dass kein Täter mit ausgefeilten kriminellen Zielen am Werk war, sondern nur ein Verbrecher mit infantiler Zerstörungslust. Zumindest sollten von schoefl.info aus keine weiteren Websites in Mitleidenschaft gezogen worden sein.

Aber eine Beschäftigung mit allfälligen pathologischen Störungen in der Persönlichkeit des Verbrechers ist ohnehin müßig. Ein Täterprofil bringt keine Ergebnisse zur Frage: „Warum wurde gerade meine Site gehackt?“ Die korrekte Antwort ist simpel und lautet immer: „Die Website war einfach nicht gut genug gesichert“.

Bisheriger Security-Status

WordPress und alle Plugins waren auf dem aktuellen Stand, Wordfence Security war installiert. Ich hatte mich naiv auf WordPress und Wordfence verlassen. Doch die aktuelle WordPress-Version (4.9.8) weist offensichtlich Sicherheitslücken auf.

In de letzten Jahren wurden bei WordPress interaktive Module offensiv vorangetrieben:

  • REST API
  • WP-JSON
  • oembed

Diese Erweiterungen fördern nicht nur konstruktive Formen der Kommunikation. Hacker nutzen diese Schnittstellen für zerstörerische Zwecke.

Chronologie

Zufällig hatte ich den Verkehr auf meiner Website in dem Zeitraum wegen gehäufter Brute-Force-Attacken unter Beobachtung. Darum fielen mir zwei Requests auf nach dem Muster:

http://domain.tld/wp-json/oembed/1.0/embed/?url=http://domain.tld/post-title/

In den entsprechenden Seiten für beide Beiträge fanden sich in den Kopfzeilen jeweils ein Iframe und ein Script namens Secret-Code. Darunter standen in einer Liste meine letzten drei Logins samt Username, Zeitpunkt und meinem Passwort – in verschlüsselter Form wie in der Datenbank!

Als Erstes führte ich mit Wordfence einen Scan durch, ohne Ergebnis. Wordfence erkannte keine Bedrohung. Wenn schon das Passwort öffentlich einsehbar ist, versuchte ich als Notfallmaßnahme zumindest die Login-Seite zu verstecken. Beim Installieren des Plugins WP Hide & Security Enhancer flog ich raus.

Beim erneuten Login war mein WordPress-Passwort nicht mehr gültig. „Passwort vergessen“ ging nicht, weil WordPress auch die Mailadresse nicht mehr kannte. Der Hacker hatte gründlich aufgeräumt.

Für mich stand ohnehin schon fest, dass eine komplette Neuinstallation unvermeidlich war. Solche Einträge sind für herkömmliche Scans offenbar schwer zu identifizieren. Ich habe mich mit JSON vorher noch gar nicht beschäftigt – keine Voraussetzungen, um irgendwie zu zocken.

Neues Sicherheitsnetz

Da ich mangels Know-how in Sachen WP-Json nicht mit Sicherheit feststellen konnte, seit wann welche Dateien bereits korrumpiert sind, habe ich für die Inhalte auf uralte Sicherungen zurückgegriffen. Das bedeutet zwar, dass ich noch über 100 individuelle Sidebars mit Copy/Paste wiederherstellen muss, aber sicher ist sicher.

  • Die Einstellungen der Firewall auf Serverebene wurden verschärft.
  • In WordPress habe ich mit Block Bad Queries eine zusätzliche Firewall-Instanz eingezogen.
  • Die REST API Schnittstellen habe ich umfassend deaktiviert. Das bringt leider Einbußen im Service (Kontaktformular, Feed) für die Besucher von schoefl.info – ich bitte dafür um Entschuldigung!

Eine künftige Reaktivierung einzelner Dienste (z.B. mit Disable REST API) ist nicht auszuschließen. Aber im Moment ist mein Vertrauen in die Sicherheit von WordPress schwer erschüttert. Es bleibt zu hoffen, dass es WordPress gelingt, die akuten Sicherheitslücken bald zu schließen.