Am 22. September hat WordPress die Version 7.1.2 veröffentlicht. Es ist ein reines Sicherheitsupdate mit einer einzigen Korrektur, und die Einstufung ist so hoch, wie sie selten vorkommt: CVSS 9.2 von 10.
Betroffen sind die Versionen 4.7.0 bis 7.1.1. Das ist kein Tippfehler. WordPress 4.7 erschien im Dezember 2016 — die Lücke steckt also seit rund einem Jahrzehnt im Kern.
Was passiert
Ein Angreifer braucht keine Anmeldung. Er ruft eine Adresse auf, in der ein Seitenname steht, und bringt WordPress dazu, beim Auflösen der Seitenvorlage eine beliebige lesbare PHP-Datei ausserhalb des Themes einzubinden.
In der offiziellen Ankündigung steht dazu ein Satz, an dem der ganze Beitrag hängt: Zur Codeausführung kommt es nur, wenn die Vorbedingungen «für die Serverumgebung und das aktive Theme» erfüllt sind.
Das ist der Punkt, den die Meldungen übergehen. Die Dateieinbindung ist immer möglich. Ob daraus fremder Code auf Ihrer Website wird, entscheidet nicht WordPress — das entscheidet der Server.
Die zwei Bedingungen
Die erste heisst register_argc_argv. Das ist eine PHP-Einstellung. Steht sie auf «an», reicht PHP die Abfragezeichenfolge einer Webanfrage zusätzlich als Kommandozeilenargumente durch. Das ergibt bei einer Website keinen Sinn und ist ein Überbleibsel; es ist auch nicht die Voreinstellung. Aber es kommt vor.
Die zweite ist eine Datei namens pearcmd.php. Sie gehört zu PEAR, einer alten Paketverwaltung für PHP, und liegt bei fast jeder Installation herum. Für sich ist sie harmlos. Zusammen mit der ersten Bedingung wird sie zum Werkzeug: Der Angreifer bindet sie ein, übergibt ihr über die genannte Einstellung Argumente und lässt sie eine PHP-Datei seiner Wahl auf die Platte schreiben.
Genau so läuft es laut Patchstack in der Praxis ab. Der erste beobachtete Versuch fiel auf den 22. September, 11:49 UTC — denselben Tag, an dem das Update erschien. Öffentliche Suchwerkzeuge für diese Lücke sind im Umlauf.
Wie es bei uns steht
Wir haben nachgesehen, statt zu vermuten. Auf unseren Hosting-Servern gilt für alle angebotenen PHP-Versionen von 7.4 bis 8.4 dasselbe:
register_argc_argv steht auf «aus». In allen sechs Konfigurationsdateien, ohne Ausnahme.
pearcmd.php ist vorhanden — wie fast überall, und ohne die erste Bedingung wirkungslos.
Damit fehlt auf unseren Servern die Voraussetzung, aus der Lücke Codeausführung zu machen. Das ist eine Aussage über die Folgen eines Angriffs, nicht darüber, ob Sie betroffen sind. Betroffen ist jede WordPress-Installation unterhalb von 7.1.2.
Was zu tun ist
Auf 7.1.2 aktualisieren. Sofort, nicht am Wochenende.
Wegen der Schwere hat WordPress.org erzwungene automatische Updates für betroffene Versionen aktiviert. Bei vielen Seiten ist das Update deshalb schon durch. Verlassen Sie sich nicht darauf: Wer automatische Updates abgeschaltet hat — und das ist bei gepflegten Seiten häufig eine bewusste Entscheidung —, bekommt es nicht. Sehen Sie im Verwaltungsbereich unter «Aktualisierungen» nach, welche Version dort steht.
Wenn Sie nicht sofort aktualisieren können, fragen Sie Ihren Hoster nach der einen Einstellung. Die Frage lautet wörtlich: Steht register_argc_argv auf aus? Das ist eine Frage, die in zwei Minuten beantwortet ist, und die Antwort entscheidet, wie eilig es bei Ihnen ist.
Warum wir das schreiben
Eine Meldung über eine WordPress-Lücke hilft wenig, solange sie die Frage offenlässt, die jeder Betreiber tatsächlich hat: Bin ich dran, und wie schlimm wäre es?
Diese Frage kann ein Hoster beantworten und sonst niemand — die Einstellungen liegen bei ihm. Wir haben sie nachgesehen und schreiben das Ergebnis hin. Fragen Sie das bei Ihrem Anbieter nach, egal wo Sie hosten.