Schwachstellen in Plugins und Themes – WordPress Sicherheit Teil3

1. VielfältigkeitWordPress-Schwachstellen

In der kleinen Mini-Serie »WordPress Sicherheit« greife ich ein paar Themen aus dem WordPress-Universum auf, die leider oftmals vernachlässigt werden und häufig eine Ursache für »gehackte« WordPress-Installationen darstellt.

Den letzten Teil der Mini-Serie widme ich der Plugin- und Theme-Vielfalt von WordPress – kein anderes Content-Management-System (CMS) bietet dem Nutzer eine so breite Auswahl an Funktionserweiterungen und schönen Designs wie WordPress. Doch die Sache hat einen Haken: Schwachstellen bzw. Sicherheitslücken in Plugins und Themes werden von Angreifern gerne ausgenutzt, um eine WordPress-Installation unter fremde Kontrolle zu bringen oder für andere Zwecke zu missbrauchen.

Die Frage ist: Was könnt ihr dagegen tun, um euch gegen solche Schwachstellen zu schützen? Könnt ihr überhaupt etwas tun, oder müsst ihr hilflos dabei zusehen, wie Angreifer eure WordPress-Installation lahmlegen?

Dieser Beitrag ist Teil einer Artikelserie:

Tipps zum Absichern eurer WordPress-Installation:

2. Ursachenforschung

Woher kommen diese »ominösen« Schwachstellen überhaupt und warum muss man sich als WordPress-Betreiber darüber Gedanken machen – auch wenn man überhaupt keine Lust dazu hat?

2.1 Definition einer Schwachstelle

Im Fußball werden defensive Schwächen (Schwachstellen) meist schnell von den Gegenspielern erkannt und ausgenutzt. Ein Fehler im »System« genügt oftmals, um ein Spiel zu entscheiden bzw. zu verlieren.

In der Informatik ist es ähnlich. Die Definition einer Schwachstelle ist wie folgt:

Schwäche eines Systems, an dem es verwundbar sein kann (umgangen, geändert oder getäuscht)

Eine Schwachstelle stellt also eine potenzielle Bedrohung für die Sicherheit eines Computersystems bzw. den darauf befindlichen Informationen dar. Bei WordPress ist es nicht anders. Auch hier stellen Schwachstellen eine potenzielle Bedrohung für die WordPress-Installation dar. Grund genug also, um sich einmal damit zu befassen.

2.2 Woher kommen die Schwachstellen?

Schwachstellen entstehen meist im Entwicklungsprozess neuer Software, wobei die Gründe vielfältig sind:

  • Komplexität der Software
  • Unzureichende Kenntnisse in der sicheren Programmierung
  • Kein oder unzureichendes Qualitätsmanagement
  • Vernachlässigung aus Kompatibilitätsgründen
  • Pure Ignoranz bzw. Inkompetenz der Verantwortlichen
  • Zur Wahrung finanzieller Interessen von Investoren werden
    »halbfertige« Produkte veröffentlicht
  • [ … ]

Aufgrund der Komplexität sind Schwachstellen in Software bzw. in WordPress unvermeidbar. Grob geschätzt produziert ein Entwickler auf 1000 Codezeilen einen Programmierfehler. Viele der Fehler werden nie entdeckt oder wirken sich nicht negativ auf die Sicherheit bzw. Funktion aus. Manche Fehler erzeugen jedoch schwerwiegende Sicherheitslücken, ohne direkt die Funktion zu beeinträchtigen.

Doch es wäre zu kurzsichtig, die Schwachstellen allein auf Fehler in der Software zu reduzieren. Es existieren noch weitere Gründe:

  • Nicht nur im Entwicklungsprozess, sondern auch bei der
    Behebung von Fehlern oder der Integration neuer Funktionen
    können neue Schwachstellen entstehen
  • Ungeschultes Personal bzw. fehlendes Bewusstsein für den
    sicheren Umgang mit IT
  • Schlampige oder laxe Konfiguration von Soft- bzw. Hardware
  • Veraltete, nicht aktualisierte Software (bspw. werden Sicherheitspatches nicht eingespielt)
  • Bewusste Abschwächung bzw. Einbau von Hintertüren durch Staat und Geheimdienste
  • […]

Fassen wir zusammen: Schwachstellen in Software sind leider unvermeidbar. Entscheidend ist vielmehr, wie wir das Risiko von Schwachstellen für die IT bzw. unsere WordPress-Installation minimieren können.

3. Schwachstellen in WordPress: Was könnt ihr tun?

In WordPress und den zahlreichen Plugins bzw. Themes wurden schon unzählige Schwachstellen entdeckt. Allein beim diesjährigen Summer of Pwnage wurden insgesamt 61 Schwachstellen in WordPress bzw. Plugins oder Themes aufgedeckt. Für eine Übersicht über die bisher identifizierten Schwachstellen bietet sich die WPScan Vulnerability Database an – dort werden Stand 06.12.2016 insgesamt 5284 Schwachstellen im WordPress-Kern, den Plugins und Themes gelistet. Als Sahnehäubchen werden dort oftmals auch Exploits veröffentlicht – also Code-Schnipsel, mit denen es einem technisch versierten Angreifer im Normalfall möglich ist, die aufgedeckte Schwachstelle systematisch ausnutzen. Doch Schwachstelle ist nicht gleich Schwachstelle – das bedeutet: Nicht jede Schwachstelle ist so kritisch, dass ein Angreifer damit gleich eure gesamte WordPress-Installation übernehmen kann. Dennoch gilt: Eine Schwachstelle sollte so schnell wie möglich geschlossen werden, denn sie stellt ein unnötiges Risiko dar.

Jetzt stellt sich natürlich die Frage, was ihr konkret tun könnt, um das Risiko für eure WordPress-Installation zu minimieren?

3.1 Reduktion

Es mag zunächst wie ein banaler Tipp klingen: Reduktion auf das Wesentliche. Doch was steckt dahinter? Aufgrund fehlerhafter oder nachlässiger Programmierung enthalten viele WordPress-Plugins Schwachstellen. Diese lassen sich von Angreifern oftmals ausnutzen, um bspw. eine WordPress-Installation zu übernehmen bzw. zu schädigen. Daher gilt: Jedes zusätzlich installierte Plugin / Theme erhöht das Risiko für eine ungewollte Beeinträchtigung der WordPress-Installation. Ihr solltet eure Plugins / Themes daher auf jene beschränken, die ihr tatsächlich benötigt – damit könnt ihr die Angriffsfläche erheblich reduzieren.

3.2 Auswahl neuer Plugins und Themes

Häufig werden Plugins und Themes nicht mit der notwendigen Sorgfalt programmiert. Oder anders ausgedrückt: Im Prinzip kann jeder ein Plugin oder Theme zur Verfügung stellen – auch wenn man nicht über die dafür notwendigen Programmierskills verfügt. In vielen Plugins und Themes lauern daher Schwachstellen, die ein guter bzw. auf Sicherheit bedachter Programmierer nicht eingebaut hätte. Doch auch in Plugins, hinter denen Programmierer mit jahrerlanger Erfahrung stecken, schleichen sich Fehler ein.

Fehler passieren – entscheidend ist der Umgang mit Schwachstellen. Das bedeutet:

  • Werden Fehler bzw. Schwachstellen von den Entwicklern schnell gefixt?
  • Werden Schwachstellen von den Programmierern womöglich kleingeredet?
  • Wie reagieren die Entwickler auf Supportanfragen?

Das herauszufinden ist oftmals gar nicht so einfach, daher möchte ich euch noch ein paar praktikable Tipps mit auf den Weg geben. Bevor ihr ein neues Plugin oder Theme installiert, solltet ihr folgende Schritte erledigen:

  • Alle Plugins, die auf der WordPress-Plugin Seite gehostet werden, haben einen »Support-Reiter«. Klickt euch dort mal rein und verschafft euch einen Überblick. Wie reagieren die Entwickler auf Anfragen? Reagieren sie überhaupt? Gibt es viele Beschwerden und sind diese womöglich berechtigt?
  • Wann wurde das Plugin / Theme das letzte Mal geupdatet? Ist es überhaupt kompatibel mit eurer eingesetzten WordPress-Version?
  • Ladet euch das Plugin / Theme auf euren Rechner herunter und entpackt das Zip-File. Ist der Quellcode sauber kommentiert? Ist ein Changelog vorhanden, der über die Änderungen informiert?
  • Wie »neu« ist das Plugin? Wurde es gerade vor ein paar Tagen veröffentlicht? Gibt es schon Nutzer-Feedback? Falls nicht, dann wartet lieber noch ein paar Wochen mit einer Installation.
  • Insbesondere Themes sind häufig überladen und mit Funktionen ausgestattet, die nur irgendwelche »fancy« Seiten benötigen. Wenn ihr allerdings Wert auf Sicherheit legt, dann sucht euch ein Theme mit einer überschaubaren functions.php aus – von einer Eierlegenden Wollmilchsau (bspw. Avada Theme) solltet ihr besser die Finger lassen.
  • Last but not least: Fragt euch ganz offen und ehrlich: Brauche ich das Plugin wirklich oder kann ich die Funktion vielleicht ganz einfach über die functions.php abbilden oder hat das jemand vielleicht schon getan?

Noch ein Wort zu Bezahl-Plugins bzw. -Themes: Bevor ihr Geld investiert, solltet ihr euch erkundigen, ob auch zukünftige (Sicherheits-)Updates im Preis inbegriffen sind. Falls nicht – welche Kosten kommen auf euch zu und wie werdet ihr vom Entwickler über mögliche Schwachstellen informiert?

3.3 Security-Scan

Ein auf WordPress zugeschnittener Security-Scan kann euch dabei helfen, das Sicherheitsniveau eurer Seite zu bestimmen. Hackertarget bietet einen WordPress online Security Scan an – mit der kostenlosen Variante könnt ihr ein paar Checks durchführen. Wenn ihr mit der Linux Kommandozeile zurechtkommt, dann solltet ihr einen Blick auf wpscan werfen. Ich nutze das Tool selbst für meine WordPress-Scans bei meinen Kunden. Allerdings möchte ich anmerken: Die diversen Scanner spucken natürlich immer irgendwelche Ergebnisse aus – das Entscheidende ist: Ihr müsst in der Lage sein, diese auch interpretieren zu können. Ansonsten wird es schwierig entsprechende Gegenmaßnahmen auszuarbeiten.

WordPress auf Schwachstellen und Konfigurationsfehler prüfen

Für Deine WordPress-Installation habe ich ein spezielles Leistungspaket im Angebot:
  • Scan Deiner WordPress-Installation auf Schwachstellen
  • Auswertung und Beurteilung der gefundenen Schwachstellen
  • Auf Basis der Ergebnisse erhälst Du von mir individuelle Maßnahmenempfehlungen zur Behebung und Absicherung

Wenn du Deine WordPress-Installation nachhaltig absichern möchtest, kannst Du mich gerne kontaktieren.

Gut zu wissen: Sicherheit erlangst Du nicht durch die Installation unzähliger Security-Plugins, sondern durch eine saubere Konfiguration, stetige Updates und proaktive Maßnahmen zur Absicherung. Kontakt aufnehmen

3.4 Auto-Updates

Mit WordPress 3.7 wurden die automatischen Hintergrund-Updates eingeführt. Standardmäßig wird eure WordPress-Seite automatisch im Hintergrund geupdatet. Allerdings gilt dies nur für den WordPress-Kern bzw. die Sprachdateien und umfasst Wartungs- und Sicherheitsupdates. Das bedeutet: Eure Plugins und Themes müsst ihr in der Regel nach wie vor selbst updaten. Im Prinzip ist das auch sinnvoll, denn Updates sind auch immer mit einem Risiko verbunden. Falls das Update nicht sauber durchläuft, kann im schlimmsten Fall eure WordPress-Seite nicht mehr erreichbar sein. Persönlich habe ich das bisher allerdings nicht beobachtet.

Über die functions.php könnt ihr die automatischen Updates auf Plugins und Themes ausweiten:

/* Automatically install all Plugin Updates */
add_filter( 'auto_update_plugin', '__return_true' );
/* Automatically install all Theme Updates */
add_filter( 'auto_update_theme', '__return_true' );

Hilf mit die Spendenziele zu erreichen!

Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.

Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.

Mitmachen ➡

3.5. Serverseitige Modifikationen

Warnung: Je nach Theme, verwendeten Plugins oder Modifikationen in der functions.php können die folgenden Code-Snippets eure WordPress-Installation »stören« . Ihr solltet sie daher nur integrieren, wenn ihr in der Lage seid, eine Fehleranalyse durchzuführen.

Eine direkte Ausführung von PHP-Dateien in den Unterordnern »/wp-content/plugins« und »/wp-content/themes« ist oftmals nicht notwendig. Sind diese Dateien für jeden direkt abrufbar, erhöht sich die Wahrscheinlichkeit, dass ein Angreifer, über einen Exploit, Schadcode in eine verwundbare PHP-Datei eines Plugins oder Themes initiiert. Ihr könnt dies vermeiden, indem ihr die direkte Ausführung von PHP-Dateien durch folgende Code-Snippets unterbindet.

Apache

Die Modifikation ist in der .htaccess Datei unter »/wp-includes/plugins« bzw.  »/wp-includes/themes« von WordPress durchzuführen.

# Bis einschließlich Apache 2.3
# Disable direct access of any *.php files in /wp_content/[themes|plugins] folder
<FilesMatch \.php$>
   Order deny,allow
   Deny from all
</FilesMatch>

# Ab Apache 2.4
# Disable direct access of any *.php files in /wp_content/[themes|plugins] folder 
<FilesMatch \.php$> 
   Require all denied 
</FilesMatch>

nginx

# Disable direct access of plugins / themes *.php files in /wp_includes folder
location ~ (^/wp-includes/plugins/.+\.php|^/wp-includes/themes/.+\.php) { 
   return 444; 
}

4. Fazit

Nein, ihr seid den Schwachstellen in Plugins oder Themes nicht hilflos ausgeliefert. Wenn ihr eure Plugins und Themes sorgfältig auswählt und nur jene installiert, die ihr für eure WordPress-Seite tatsächlich benötigt, könnt ihr das Risiko erheblich reduzieren. Mittels eines Security-Scans könnt ihr euch ein aktuelles Bild von der Sicherheitslage eurer WordPress-Installation verschaffen – doch Vorsicht: Ihr müsst die Tools korrekt bedienen und im Anschluss die Ergebnisse auch interpretieren können.

Für fortgeschrittene Nutzer sind womöglich die vorgestellten Anpassungen an der functions.php interessant. Persönlich halte ich die automatische Aktualisierung der Plugins für äußerst sinnvoll.

Die Mini-Serie »WordPress Sicherheit« ist damit abgeschlossen. Mehr Tipps für die Absicherung von WordPress findet ihr auch in der siebenteiligen Artikelserie »WordPress absichern«.

Über den Autor | Kuketz

Mike Kuketz

In meiner freiberuflichen Tätigkeit als Pentester / Sicherheitsforscher (Kuketz IT-Security) schlüpfe ich in die Rolle eines »Hackers« und suche nach Schwachstellen in IT-Systemen, Webanwendungen und Apps (Android, iOS). Des Weiteren bin ich Lehrbeauftragter für IT-Sicherheit an der Dualen Hochschule Karlsruhe, sensibilisiere Menschen in Workshops und Schulungen für Sicherheit und Datenschutz und bin unter anderem auch als Autor für die Computerzeitschrift c’t tätig.

Der Kuketz-Blog bzw. meine Person ist regelmäßig in den Medien (heise online, Spiegel Online, Süddeutsche Zeitung etc.) präsent.

Mehr Erfahren ➡

SpendeUnterstützen

Die Arbeit von kuketz-blog.de wird zu 100% durch Spenden unserer Leserinnen und Leser finanziert. Werde Teil dieser Community und unterstütze auch du unsere Arbeit mit deiner Spende.

Folge dem Blog

Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:

Bleib aktuell ➡


Diskussion

1 Ergänzungen zu “Schwachstellen in Plugins und Themes – WordPress Sicherheit Teil3”

  1. Comment Avatar air sagt:

    Ich nutze WordPress gar nicht mehr. Ist mir einfach zu gefährlich und sich zu viel Mühe da immer extra drauf achten zu müssen weil es ein beliebtes angriffs Ziel ist. Genau wie phpmyadmin zb.

HilfeWenn du konkrete Fragen hast oder Hilfe benötigst, sind das offizielle Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-Forum

Abschließender Hinweis

Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.

Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.