Die Ursache liegt darin, dass zwei Komponenten von WordPress denselben Link unterschiedlich interpretieren. Das Theme-Verzeichnis von WordPress.org behandelt den übergebenen Wert als gewöhnlichen Theme-Namen und liefert ein reales Theme zurück. Der Browser des Administrators dagegen verwendet den Originaltext samt aller Sonderzeichen erneut – und zwar innerhalb von Code, der eigentlich ein Element auf der Seite auswählen soll. Vom Angreifer eingeschleuste Zeichen lenken diese Auswahl auf die Schaltfläche „Installieren", die das WordPress-eigene Skript daraufhin selbst betätigt.

Weil der Administrator bereits angemeldet ist, liefert dessen Sitzung sowohl die nötigen Rechte als auch das Sicherheitstoken für die Installation. Der Angreifer muss beides nicht beschaffen.

Ein installiertes Theme ist nicht zwangsläufig untätig: Erzeugt WordPress im Customizer eine Vorschau, kann der PHP-Code eines Themes bereits geladen werden, bevor dieses überhaupt aktiviert wurde. Genau an dieser Stelle setzt die Verkettung an.

Anzeige

Das von pwn.ai verwendete Theme Mobile Repair Zone enthielt eine zweite Schwachstelle: einen Hintergrund-Handler, der eine Webadresse aus der Anfrage übernahm, ein Paket herunterlud und dessen Code ausführte – ohne Prüfung der Berechtigung des Aufrufers und ohne Sicherheitstoken. Nach der erzwungenen Installation brachte dieser Handler den Code der Angreifer auf dem Server zur Ausführung. Zum Kernfehler allein schrieb pwn.ai: „Der Core-Bug akzeptiert für sich genommen kein beliebiges Theme-ZIP."

WordPress selbst hat keine eigene Schweregrad-Einstufung veröffentlicht und beschreibt das Problem in den Release-Notes deutlich knapper: „Speziell präparierte URLs können ein inaktives Theme von WordPress.org automatisch installieren und in der Vorschau anzeigen."

Die Sicherheitsfreigabe reicht mit ihren Korrekturen zurück bis zum unterstützten Zweig 4.7. Betroffen ist den Hinweisen zufolge WordPress ab Version 6.0 bis zu den Ausgaben unmittelbar vor dem Fix. Betreiber sollten 7.1.1 oder das passende Update für ihren jeweiligen Zweig einspielen; Installationen mit aktivierten automatischen Updates erhalten die Korrektur von selbst.

Einen separaten Workaround haben weder WordPress noch pwn.ai genannt. Wer nicht sofort aktualisieren kann, sollte immerhin wissen, dass der Angriff zwingend einen angemeldeten Administrator voraussetzt, der den präparierten Link öffnet. Das Update des WordPress-Kerns schließt den demonstrierten Angriffsweg unabhängig davon, welches Theme eine Website einsetzt.

Click2Shell ist nicht der erste Kernfehler, den pwn.ai in jüngster Zeit gemeldet hat. Im August behob WordPress eine vergleichbare Lücke im Anmeldebildschirm, die die Firma ebenfalls zu einer Codeausführung verketten konnte – auch damals beschrieb WordPress das Risiko enger als die Forscher.

Nicht mit dieser Arbeit zusammen hängt eine weitere, im Juli offengelegte Kernschwachstelle namens wp2shell. Sie kommt ohne Anmeldung und ohne Klick aus, und die US-Behörde CISA führt sie als in realen Angriffen ausgenutzt – anders als Click2Shell.