Wordpress CVE-2023-22622 (wp-cron.php) schließen

Das neue Jahr beginnt ganz wie das Alte aufgehört hat. Zumindest in Sachen IT-Sicherheit.

Gekennzeichnet mit der CVE-Nummer "CVE-2023-22622" tauchte am 05.01.2023 direkt wieder eine "Sicherheitslücke" in Wordpress auf, die den internen Wordpress Cronjob (wp-cron.php) betrifft.

Der Wordpress Cronjob steuert automatisch geplante Aufgaben Wordpress-intern bei Seitenaufruf und kann somit z.B. Plugin- oder Systemupdates aber auch andere selbst erstellte Aufgaben ausführen, wenn die Seite denn regelmäßig aufgerufen wird.

 

CVE-2023-22622

WordPress through 6.1.1 depends on unpredictable client visits to cause wp-cron.php execution and the resulting security updates, and the source code describes "the scenario where a site may not receive enough visits to execute scheduled tasks in a timely manner," but neither the installation guide nor the security guide mentions this default behavior, or alerts the user about security risks on installations with very few visits.

 

In der aktuellen CVE wird also das Problem beschrieben, dass es unter Umständen dazu kommen kann, dass die zugehörige Datei, welche die Funktionen dafür enthält (wp-cron.php) angegriffen werden kann und somit die geplanten Aufgaben nicht mehr wie gewünscht ausgeführt werden können.

 

Lösung

Um die Lücke zu schließen empfiehlt es sich in der wp-config.php (Diese liegt im Hauptverzeichnis der Wordpress Installation) folgende Codezeile einzufügen:

define( 'DISABLE_WP_CRON', true );

Ist die Zeile schon vorhanden und der Wert steht auf "false", setze diesen einfach auf "true".

 

Danach solltest Du die Datei wp-cron.php, die ebenfalls im Hauptverzeichnes der Wordpress Installation liegt, mittels einem echten Cronjob Deines Systems aufrufen.

 

Aufruf via Crontab bei vollem Systemzugriff

Hast Du vollen Zugriff auf System und die Crontabs, so verbindest Du Dich am Besten via Shell (SSH) als entsprechender (Web)-User auf den Server und wechselst in das Hauptverzeichnis der Wordpress Installation.

Dort gibst Du den Befehl crtontab -e ein.

Füge dann ans Ende der Datei folgende Zeile ein:

*/5 * * * * php -f /var/www/sites/deinesite/webroot/wp-cron.php

Den Pfad zu Deiner Seite musst Du natürlich entsprechend modifizieren. Du kannst den Pfad sehen, indem Du im Hauptverzeichnis einfach den Befehl pwd eingibst.

Speichere dann die Änderungen und der Cronjob wird systemseitig aufgerufen und ausgeführt.

 

Aufruf via Cronjob Deines Providers (Web Cron Aufruf)

Wenn Dein Provider / Hoster Cronjobs anbietet, so kannst Du in der Web-Administration Deines Providers über die Eingabemaske häufig einfach eine URL/Webadresse festlegen und wann bzw. wie oft diese aufgerufen und ausgeführt werden soll.

Stelle den Cronjob hier so ein, dass der Cronjob alle 5 Minuten ausgeführt wird.

Als URL gibst Du die folgende Adresse ein: https://deine-domain.de/wp-cron.php

Als Domain musst Du natürlich die echte Domain Deiner Webseite verwenden :-)

 

Die Kür: Zugriff von extern generell auf die wp-cron.php verbieten

Zusätzliche Sicherheit kann man gewinnen, wenn man den Zugriff von extern auf die wp-cron.php generell verbietet.

Dies geht entweder über eine .htaccess-Steuerdatei bei einem Apache Webserver (das erläutere ich hier nicht weiter - .htaccess ist eine eigene, schlimme Welt!) oder über einen kurze Direktive beim nginx-Webserver.

Letztere möchte ich hier einmal zeigen:

location = /wp-cron.php { deny all; return 420; }

Erklärung: Wir schreiben einen location-Block, der exakt auf die wp-cron.php matcht. Dort verbieten wir jegliche Zugriffe und geben den Statuscode 420 (Enhance your calm) zurück. [zum Lachen hier entlang]

Natürlich kannst Du als Statuscode auch 404 (Not found) oder einen anderen Code zurückgeben. 420 ist aber lustig. :-)

Viel Spaß beim Absichern Deiner Wordpress Installation!

Stefan Willig

Über den Autor: Stefan Willig

Der, mit der Idee für diesen Blog.
Aus Aschaffenburg, dem bayerischen Nizza. Webentwickler und Vollblut-ITler.

Der Blog finanziert sich durch Partnerlinks zu verschiedenen Produkten.
Drück doch bitte mal drauf! :-)

Kommentieren

Kommentareingabe ausblenden

1000 Buchstaben übrig


Kommentare

Aktuell gibt es zu diesem Artikel noch keine Kommentare.