Blog Aktuelle 0day-Lücke in WordPress 4.7.4 unter der Lupe

Aktuelle 0day-Lücke in WordPress 4.7.4 unter der Lupe

Diese Woche hat Dawid Golunski eine Sicherheitslücke in WordPress 4.7.4 (und früheren Versionen) veröffentlicht, für die es bislang keinen Fix gibt. Was genau das für eine Lücke ist und was das für die Gefährdung der Websites bedeutet, habe ich mir mal genauer angesehen.

0day-Lücken sind im Prinzip ziemlich gefährlich, bedeutet es doch, dass es keinen offiziellen Fix für die Lücke gibt. Deswegen schreckt eine Meldung über eine solche Lücke auf. Ich habe mir die Infos dazu genauer angesehen und kann erstmal Entwarnung geben.

Um welche Lücke geht es?

Es geht um eine Sicherheitslücke, mit der es am Ende möglich ist, dass Passwort eines Benutzers zurückzusetzen und neu zu setzen, um damit Zugriff auf den Admin-Bereich zu erlangen. Wendet man dies auf einen Administrator-Benutzer an, hat man Vollzugriff auf das gesamte System und den zugrunde liegenden Server. Im Prinzip also eine sehr gefährliche Lücke.

Folgender Ablauf ist notwendig, um die Lücke auszunutzen:

  • ein Angreifer klickt beim WP-Login auf den „Passwort vergessen“-Link
  • der Angreifer manipuliert den HTTP-Header des Requests so, dass WordPress den manipulierten Wert nutzt, um in der E-Mail an den Benutzer (mit dem Link zum Erstellen eines neuen Passworts) daraus einen veränderten Mail-From-Header  (mit der Mailadresse des Angreifers) erstellt
  • Der Benutzer als Empfänger der Mail antwortet auf diese Mail. Diese Antwort geht durch den veränderten From-Header an den Angreifer, der dadurch Zugriff auf den Passwort-Reset-Link erhält und ein neues Passwort für den Benutzer setzen kann

Und hier kommt auch schon der Haken: freiwillig wird der Benutzer wohl eher nie auf die „Passwort vergessen“-Mail antworten. Deswegen listet Dawid Golunski auch auf, welche anderen Methoden man nutzen kann, um an die Mail zu kommen:

  • man könnte den Mail-Server des Benutzers per DoS-Attacke fluten oder viele große Mails vorab senden, so dass der Mailserver die Passwort-Mail von WordPress ablehnt. Je nach Server-Konfiguration enthält die gebouncete Mail (die wegen des From-Headers an den Angreifer geht) auch die Original-Mail mit Passwort-Link
  • ein Auto-Reply des Mail-Servers könnte auch die Original-Mail enthalten. Der Angreifer müsste also auf ein Auto-Reply hoffen, zum Beispiel in Form einer Abwesenheits-Nachricht o.ä.
  • der Angreifer könnte den Passwort-Mail mehrfach (ziemlich häufig) auslösen und darauf hoffen, dass der genervte Benutzer auf die Mail antwortet in der Hoffnung, jemanden zu erreichen, der das abstellt.

Somit ist die Wahrscheinlichkeit, dass diese Lücke aktiv ausgenutzt wird eher gering.

Was genau ist die Sicherheitslücke?

Im Detail geht es darum, dass WordPress zum Erstellen der Passwort-Mail die PHP-Variable SERVER_NAME auswertet. Diese kann wiederum von einem Angreifer dadurch manipuliert werden, dass er den HTTP-host-Header manipuliert, gemein hin „host header injection“ genannt.

Aufgrund der Manipulation des host-Headers ist die Möglichkeit der Ausnutzung dieser Lücke auch an bestimmte Server-Konfigurationen gebunden. Dies funktioniert wie gewünscht nämlich nur dann, wenn die WordPress-Website der einzige Host auf dem Server ist oder zumindest der Default-Host. Bei üblichen Shared-Hosting-Paketen ist damit nicht zu rechnen, so dass diese Lücke meist auch nur ausgenutzt werden kann, wenn jemand seine eigenen Server betreibt.

Und nu?

Wie man sieht (liest), ist die Ausnutzung dieser Lücke an viele Vorbedingungen geknüpft. Deswegen ist es recht unwahrscheinlich, dass diese Lücke aktiv genutzt wird, wenn auch nicht ausgeschlossen.

Für WordPress existiert dazu bereits seit 4 Jahren ein Bug-Ticket, in dem mögliche Lösungen diskutiert werden. Das Problem als solches ist also schon lange bekannt. Das könnte auch ein Grund dafür sein, warum Dawid Golunski nach eigener Aussage mehrfach das WordPress-Sicherheitsteam kontaktiert hat, die Lücke aber bislang nicht geschlossen wurde. Deswegen entschloss er sich jetzt zur Veröffentlichung.

Die Kollegen bei SecuPress haben in einem Blogbeitrag zum Thema ein Mini-Plugin veröffentlicht, welches den From-Header in den WordPress-Mails mit einem eigenen Wert überschreibt und somit den Angriffsvektor schließt.

Meine Empfehlung: Da die Wahrscheinlichkeit der Ausnutzung gering ist, würde ich gar nichts machen. Wer aber trotzdem für sich Sicherheit schaffen möchte kann das Mini-Plugin bei sich einsetzen.

Zum Weiterlesen:

2 Gedanken zu „Aktuelle 0day-Lücke in WordPress 4.7.4 unter der Lupe“

  1. Besten Dank, Marc, für diese Darstellung! Dazu ein paar Fragen:
    Das ist doch „Host Header Injection in Password Reset“ ( https://wpvulndb.com/vulnerabilities/8807 ), richtig?
    Und gehe ich recht in der Annahme, dass das in WP 4.8.1 immer noch nicht gefixt ist?
    Ich empfinde es nämlich als recht lästig, dass Infinite-WP mir bei Seiten, die immer noch mit 4.7.5 laufen, rät, auf 4.8.1 upzudaten, und zwar genau wegen dieser Sicherheitslücke. Das ist Humbug, oder?

    Herzliche Grüße
    David

    P. S. Sieht man sich in Nijmegen?

    Antworten
    • Hallo David,
      ja, genau, das ist die Lücke. Meiner Info nach ist das auch in 4.8 nicht gefixed. Allerdings ist der Eintrag in der WPVulnDB nicht entsprechend ergänzt. D.h., IWP warnt in 4.8 nicht mehr davor. 😉
      Beste Grüße und bis bald in Nijmegen,
      Marc

      Antworten

Schreibe einen Kommentar