Wenn Ihre Website Veranstaltungen anzeigt — Kurse, Konzerte, Vereinsanlässe, Öffnungszeiten mit Terminen —, dann steht dahinter mit einiger Wahrscheinlichkeit The Events Calendar. Das Plugin läuft auf über 600'000 Websites und ist auf Vereins-, Restaurant- und Gemeindeseiten so etwas wie der Standard.
Gestern hat der Sicherheitsdienst Wordfence eine Lücke darin veröffentlicht, die den höchsten praktisch erreichbaren Schweregrad trägt: 9,8 von 10. Ein Angreifer kann darüber eigenen Programmcode auf Ihrem Server ausführen.
Das allein wäre eine Meldung unter vielen. Interessant wird es durch das, was davor passiert ist.
Dreimal dieselbe Stelle
Werfen Sie einen Blick auf die Versionsgeschichte der letzten drei Wochen. Wir zitieren die offiziellen Änderungshinweise des Herstellers:
Am 20. August erschien 6.17.3 mit dem Hinweis «Hardened validation of copied legacy widget instances» — verschärfte Prüfung kopierter Widget-Daten.
Am 26. August erschien 6.17.3.1 mit dem Hinweis «Harden validation of copied widget instance data». Dieselbe Stelle, erneut.
Am 3. September erschien 6.17.4. Kein Sicherheitshinweis, nur Fehlerkorrekturen.
Am 10. September erschien 6.17.4.1 mit dem Hinweis «Strengthened validation of copied widget instances». Dieselbe Stelle, zum dritten Mal.
Drei Anläufe an derselben Codestelle innert drei Wochen. Die Lücke von gestern betrifft alle Fassungen bis einschliesslich 6.17.4 — also auch die vom 3. September.
Warum das für Sie unangenehm ist
Stellen Sie sich vor, Sie haben am 3. September pflichtbewusst aktualisiert. Sie haben die Änderungshinweise gelesen: ein paar Fehlerkorrekturen, nichts Sicherheitsrelevantes. Sie hatten keinen Anlass, irgendetwas zu vermuten.
Seit gestern wissen wir: Ihre Website war in diesem Moment über eine Lücke mit Schweregrad 9,8 angreifbar — und blieb es, bis Sie 6.17.4.1 eingespielt haben.
Und auch dieser Hinweis sagt es nicht. «Strengthened validation of copied widget instances» klingt nach Feinschliff, nicht nach Codeausführung durch Fremde. Kein Wort von der Schwere, keine Nummer, kein Hinweis auf Dringlichkeit. Wer die automatischen Updates ausgeschaltet hat und einmal pro Monat über die Änderungshinweise geht, findet hier keinen Grund zu handeln.
Das ist derselbe Mechanismus, den wir schon bei Elementor beschrieben haben. Er wiederholt sich, weil er für den Hersteller bequem ist: Eine Sicherheitsmeldung schreckt Kunden auf, eine Zeile über verschärfte Prüfungen nicht.
Wer auslöst — und warum das diesmal anders ist
Vor zehn Tagen haben wir an dieser Stelle einen Fehler gemacht und eine Lücke als «braucht ein Konto» beschrieben, die keines brauchte. Deshalb hier ausdrücklich und geprüft:
Der technische Steckbrief der Lücke sagt kein Konto nötig und keine Nutzerinteraktion nötig. Es löst also der Angreifer aus, nicht Sie. Niemand muss auf etwas klicken, niemand muss eine Datei öffnen. Der Angreifer schickt einen präparierten Kommentar an eine Veranstaltung, und der Code läuft.
Damit zum Punkt, der uns beim Lesen am meisten überrascht hat.
Die Moderationswarteschlange schützt hier nicht
Die meisten Seitenbetreiber haben Kommentare auf Moderation gestellt. Nichts erscheint, bevor es jemand freigegeben hat. Das fühlt sich nach einer Schranke an.
Hier ist es keine. Die Beschreibung der Lücke sagt wörtlich, sie sei «ohne Authentifizierung oder Freigabe» ausnutzbar. Der Grund liegt in WordPress selbst: Wer als Unangemeldeter einen Kommentar abschickt, bekommt eine Adresse zurück, über die er seinen eigenen, noch nicht freigeschalteten Beitrag sofort ansehen kann. Beim Aufrufen dieser Seite verarbeitet die betroffene Vorlage den Inhalt — und damit läuft der eingeschleuste Code, lange bevor jemand im Verwaltungsbereich über «Freigeben» oder «Löschen» nachdenkt.
Die Warteschlange kontrolliert, was Ihre Besucher zu sehen bekommen. Sie kontrolliert nicht, was Ihr Server verarbeitet.
Was zu tun ist
Zuerst die Versionsnummer. Alles unterhalb von 6.17.4.1 ist angreifbar — auch das erst vor neun Tagen installierte 6.17.4. Sie finden die Nummer im WordPress-Verwaltungsbereich unter Plugins. Aktualisieren Sie, wenn dort etwas Kleineres steht.
Dann die Kommentare. Der Weg funktioniert nur, wenn Kommentare bei Veranstaltungen aktiviert und sichtbar sind. Sehen Sie in den Einstellungen des Plugins nach, ob das bei Ihnen der Fall ist — und schalten Sie sie ab, wenn Sie sie nicht brauchen. Auf den allermeisten Vereins- und Restaurantseiten kommentiert niemand einen Termin.
Wenn Sie Kommentare brauchen: Durchsuchen Sie die Kommentartabelle nach der Zeichenfolge «wp:legacy-widget», und zwar auch die noch nicht freigeschalteten. Das ist der Baustein, über den der Angriff läuft. Findet sich dort etwas, hat es jemand versucht.
Der grössere Punkt
Ein Plugin, das dieselbe Stelle dreimal in drei Wochen nachbessert, sagt etwas über die Codestelle aus — und darüber, wie wahrscheinlich ein vierter Anlauf ist.
Das heisst nicht, dass Sie das Plugin wegwerfen sollen; es gibt keinen besseren Veranstaltungskalender, und wechseln bringt neue Risiken. Es heisst, dass automatische Updates hier die richtige Einstellung sind. Bei einem Plugin, dessen Sicherheitskorrekturen sich hinter Formulierungen wie «verschärfte Prüfung» verbergen, ist Mitlesen keine brauchbare Strategie.
Wir prüfen bei unseren Kunden die Plugin-Stände ohnehin mit. Wenn Sie nicht wissen, welche Version bei Ihnen läuft, oder keine Lust haben, das monatlich zu verfolgen: Melden Sie sich, wir sehen nach.