WordPress-Sicherheit (add_query_arg): Warum Sie jetzt updaten müssen um ein Sicherheitsloch zu stopfen.

Hallo lieber Abonnent!

Bam! Hier ist er. Mein erster Newsletter. Schön, dass Sie mit dabei sind.

Yepp, auch ich hasse Newsletter die wenig informativ sind oder gar Spam enthalten. Deswegen habe ich es mir zum Ziel gemacht, meinen Newsletter a) so informativ wie möglich zu gestalten und b) nur so viel wie nötig zu schreiben. Jeder will ja kurz und knapp auf dem Laufenden bleiben, nicht wahr?

Deswegen: nichts wie los!

Warum Sie jetzt Ihre WordPress-Installation, alle Plugins und Themes updaten sollten.

Eventuell ist es Ihnen bereits aufgefallen: Letzte Woche gab es ein ganz unverhofftes, aber kritisches Sicherheitsupdate von WordPress auf Version 4.1.2.

In WordPress gibt es zwei Funktionen die es erlauben, Parameter an eine URL anzuhängen oder zu entfernen. Viele Plugin- und Theme-Entwickler nutzen diese Funktionen genauso wie WordPress selbst. Durch eine schwache Dokumentation wussten und wissen viele Programmierer nicht, dass die Rückgabewerte dieser Funktionen unter Umständen gefiltert werden müssen, um mögliche Angriffe abzuwehren. Klar… auch wir Programmierer sind nicht allwissend.

Hinzu kommt, dass natürlich nicht nur WordPress selbst sondern auch jede menge Plugins und Themes betroffen sind. Und diese werden oft nicht aktualisiert. Gründe dafür gibt es genug:

  • der Programmierer hat die Entwicklung eingestellt,
  • hat gar nicht mitbekommen, dass es eine Sicherheitslücke gibt oder
  • er ist sich nicht im klaren, dass seine Plugins und Themes überhaupt betroffen sind.

Warum ist das so gefährlich?

Sicherheitslücken werden ausgenützt. Und die Motive dafür sind sehr vielfältig. In den meisten Fällen werden sie zu Phishing-Zwecken und damit mit dem Ziel des Identitätsdiebstahls von Seitenbesuchen oder zur Spionage genutzt. Es lassen sich aber auch ganz gezielt Schwachstellen in Browsern ausnutzen, um Viren oder andere Schadsoftware auf dem Rechner der Opfer zu installieren, schreibt z.B. auch Manuel Ziegler in seinem aktuellen Buch „Web Hacking“1.

Was kann ich tun?

Ich gebe zu für den Laien ist es schwierig bist fast unmöglich ein Plugin oder ein Theme zu erkennen, welches genau diese Sicherheitslücke eingebaut hat. Wie soll man da den Überblick behalten? Und vor allem: was kann man tun?

  1. Sucuri, ein Unternehmen, welches sich auf Web-Sicherheit spezialisiert hat, gibt im aktuellen Blogbeitrag Beispiele betroffener Plugins. Lesen Sie den Artikel und stellen Sie sicher, ob sie diese Plugins auch verwenden.
  2. Machen Sie mal wieder ein Backup all Ihrer WordPress-Installationen und laden Sie sich das Backup auf Ihren Rechner.
  3. Loggen Sie sich jetzt im Admin-Bereich Ihrer WordPress-Installation ein und aktualisieren Sie alle Plugins und Themes.
  4. Installieren Sie die aktuelle WordPress-Version 4.2.

Was passiert genau? (Achtung nerdig!)

In WordPress existieren zwei Funktionen mit den Namen add_query_arg() und remove_query_arg(). Sie können dazu benutzt werden Parameter an eine URL anzuhängen oder zu entfernen. So wird aus https://florian-simeth.de die URL https://florian-simeth.de/index.php?neu=1 wenn der Parameter „neu“ mit dem Wert „1“ angehängt wird.
In der Regel übergibt man den oben genannten Funktionen auch eine URL. In unserem Beispiel also https://florian-simeth.de/index.php.
Interessant ist aber, was passiert, wenn keine URL übergeben wird. Dann sucht sich WordPress die aktuelle URL aus der Webserver-Umgebung selbst heraus. Dazu bedient es sich einer Variablen namens REQUEST_URI die den letzten Teil der URL enthält, den der Benutzer in den Browser eingegeben hat (die so genannte URI). In unserem Beispiel wäre das also index.php oder index.php?neu=1. Dadurch, dass eine Browser-Eingabe ungefiltert ausgegeben wird (in der „Nerdsprache“ nennt man das Filtern „escapen“), spricht man von einer so genannten Cross-Site-Scripting- bzw. kurz XSS-Anfälligkeit. So lässt sich z.B. über die URL des Browsers auf Schadcode einschleusen. Mitunter von Websites denen Sie vertrauen. Und Sie ahnen davon nichts.

Was kann ein Programmierer tun?

WordPress Entwickler müssen Ihre Plugins und Themes jetzt durchsuchen und Vorkommnisse von add_query_arg() und remove_query_arg() entsprechend filtern. Zum Beispiel mit der Funktion esc_url() wenn die URL ausgegeben werden soll oder mit esc_url_raw() wenn eine Weiterleitung erfolgen soll. Einen genauen Hinweis zur Vorgehensweise (in englischer Sprache) findet man auf make.wordpress.org2.

Fußnoten:

  1. vgl. Web Hacking. Sicherheitslücken in Webanwendungen – Lösungswege für Entwickler, S. 88. Affiliate-Link zu Amazon.
  2.  https://make.wordpress.org/plugins/2015/04/20/fixing-add_query_arg-and-remove_query_arg-usage/