Der Auslöser war schlicht: ein Zeilenumbruch innerhalb des Attributs eines erlaubten HTML-Tags im Kommentartext. Beim erneuten Formatieren für die Anzeige zerlegte einer der Verarbeitungsschritte dieses Tag und verschob den Text des Angreifers an eine Stelle, an der der Browser ihn als aktiven Event-Handler interpretierte. Dieser lief beim Laden der Seite automatisch an, ein Klick war nicht nötig.

Das Skript wurde im Browser jedes Besuchers ausgeführt – angemeldet oder nicht – und handelte jeweils mit dessen Berechtigungen auf der Website. Für die Ausführung von Code auf dem Server war eine zusätzliche Bedingung nötig: Ein angemeldeter Administrator musste die Seite mit dem präparierten Kommentar öffnen. Das Skript konnte dann dessen Sitzung nutzen, um ein Plugin mit einer Web-Shell hochzuladen – einer kleinen Datei, die beliebige vom Angreifer gesendete Befehle ausführt. Der Plugin-Upload gilt als bekannter Weg vom Administrator-Browser zur Kontrolle über den Server.

Ob der Angriff funktionierte, hing auch von der Darstellung der Kommentare ab. Betroffen waren Websites mit einem Block-Theme, seit Twenty Twenty-Two der Standard in WordPress. Auch einige klassische Themes, die Kommentare über denselben Schritt formatieren, waren anfällig; die Analyse nennt Twenty Twenty-One als Beispiel.

Anzeige

Voraussetzung war stets, dass der Kommentar überhaupt auf der Seite erscheint. WordPress bezeichnete die Lücke als nur “vorbehaltlich der Kommentarfreigabe” ausnutzbar. Standardmäßig wird ein Kommentar eines neuen Autors zurückgehalten, bis ihn jemand freigibt. Muhammad beschrieb jedoch Wege, diese Prüfung zu umgehen, sodass ein Kommentar ohne Freigabe auf die Seite gelangt. Patchstack formulierte es so: “Moderation ist keine Sicherheitsmaßnahme.”

Empfohlen wird das Update auf WordPress 7.1.1 beziehungsweise auf die jeweils aktuelle Version des eigenen Zweigs, sofern dieser noch Sicherheitsupdates erhält. Wer nicht sofort aktualisieren kann, kann den Zugang verschließen, indem er die Kommentarfunktion für einzelne Beiträge oder für die gesamte Website deaktiviert; auch eine Web Application Firewall oder ein Sicherheits-Plugin kann den präparierten Kommentar blockieren.

Einen eigenen Workaround haben weder WordPress noch der Forscher veröffentlicht. Muhammad riet schlicht zum Update des WordPress-Kerns und verwies darauf, dass 7.1.1 ein Sicherheitsrelease ist. Das Update schließt die Lücke, macht aber bereits erfolgte Änderungen eines Angreifers nicht rückgängig. Wer Anlass zur Annahme hat, betroffen gewesen zu sein, sollte zusätzlich nach unbekannten Plugins oder Dateien suchen.

Dieselbe Version behebt eine zweite Schwachstelle namens Click2Shell: Ein präparierter Link konnte WordPress dazu bringen, ein Theme zu installieren und – zusammen mit einer zweiten Schwäche in diesem Theme – Code auf dem Server auszuführen. Auch dafür musste ein angemeldeter Administrator den Link öffnen. Die übrigen der elf behobenen Probleme setzten überwiegend einen angemeldeten Nutzer mit gewissen Rechten voraus.

Der WordPress-Kern hatte in diesem Jahr bereits weitere schwerwiegende Lücken. Im Juli erlaubte ein Fehler namens wp2shell Angreifern die Codeausführung gänzlich ohne Anmeldung; US-Behörden führten ihn später als in realen Angriffen genutzt. Im August wandelten Forscher eine Skript-Schwachstelle in der Anmeldeseite über einen Administrator in Codeausführung um. Beide sind vom aktuellen Kommentarfehler unabhängig.