Die Sicherheitslücke „Better Search Replacement WordPress“ betrifft bis zu über 1 Million Websites

Im Better Search Replacement-Plugin für WordPress, das über 1 Million aktive Website-Installationen aufweist, wurde eine Sicherheitslücke mit kritischem Schweregrad entdeckt und behoben. Erfolgreiche Angriffe könnten zu willkürlichen Dateilöschungen, dem Abruf sensibler Daten und der Codeausführung führen.

Schweregrad der Sicherheitslücke

Der Schweregrad der Schwachstellen wird anhand eines Punktesystems bewertet, wobei die Bewertungen von niedrig bis kritisch reichen:

  • Niedrig 0,1–3,9
  • Mittel 4,0-6,9
  • Hoch 7,0-8,9
  • Kritisch 9,0–10,0

Der Schweregrad der im Better Search Replacement-Plugin entdeckten Schwachstelle wird als „Kritisch“ eingestuft, was der höchsten Stufe entspricht, mit einem Wert von 9,8 auf der Schweregradskala von 1–10.

Illustration von WordfenceScreenshot der Schweregradbewertung von 9,8 einer Schwachstelle, die im Better Search Replacement WordPress-Plugin entdeckt wurde

Bessere Suche ersetzt das WordPress-Plugin

Das Plugin wurde von WP Engine entwickelt, wurde aber ursprünglich von der Entwicklungsfirma Delicious Brains erstellt, die von WP Engine übernommen wurde. Better Search Replacement ist ein beliebtes WordPress-Tool, das den Prozess der Ausführung einer Such- und Ersetzungsaufgabe in einer WordPress-Website-Datenbank vereinfacht und automatisiert, was bei einer Website- oder Servermigrationsaufgabe nützlich ist. Das Plugin gibt es in einer kostenlosen und kostenpflichtigen Pro-Version.

Die Plugin-Website listet die folgenden Funktionen der kostenlosen Version auf:

  • „Serialisierungsunterstützung für alle Tabellen
  • Die Möglichkeit, bestimmte Tabellen auszuwählen
  • Die Möglichkeit, einen „Probelauf“ durchzuführen, um zu sehen, wie viele Felder aktualisiert werden
  • Abgesehen von einer laufenden Installation von WordPress sind keine Serveranforderungen erforderlich
  • WordPress Multisite-Unterstützung“

Die kostenpflichtige Pro-Version bietet zusätzliche Funktionen wie die Möglichkeit, Änderungen zu verfolgen, die Möglichkeit, die Datenbank zu sichern und zu importieren, während das Plugin ausgeführt wird, und erweiterten Support.

Die Beliebtheit des Plugins ist auf die Benutzerfreundlichkeit, Nützlichkeit und seine langjährige Erfahrung als vertrauenswürdiges Plugin zurückzuführen.

Sicherheitslücke bezüglich PHP-Objektinjektion

Eine PHP-Object-Injection-Schwachstelle im Kontext von WordPress tritt auf, wenn eine vom Benutzer bereitgestellte Eingabe unsicher unserialisiert wird. Bei der Unserialisierung handelt es sich um einen Prozess, bei dem String-Darstellungen von Objekten wieder in PHP-Objekte umgewandelt werden.

Das gemeinnützige Open Worldwide Application Security Project (OWASP) bietet eine allgemeine Beschreibung der PHP Object Injection-Schwachstelle:

„PHP Object Injection ist eine Schwachstelle auf Anwendungsebene, die es einem Angreifer je nach Kontext ermöglichen könnte, verschiedene Arten von böswilligen Angriffen durchzuführen, wie z. B. Code-Injection, SQL-Injection, Path Traversal und Application Denial of Service.

Die Sicherheitslücke tritt auf, wenn vom Benutzer bereitgestellte Eingaben nicht ordnungsgemäß bereinigt werden, bevor sie an die PHP-Funktion unserialize() übergeben werden. Da PHP die Serialisierung von Objekten ermöglicht, könnten Angreifer Ad-hoc-serialisierte Zeichenfolgen an einen anfälligen unserialize()-Aufruf übergeben, was zur Einschleusung beliebiger PHP-Objekte in den Anwendungsbereich führt.

Um eine PHP-Object-Injection-Schwachstelle erfolgreich auszunutzen, müssen zwei Bedingungen erfüllt sein:

  • Die Anwendung muss über eine Klasse verfügen, die eine magische PHP-Methode implementiert (z. B. __wakeup oder __destruct), mit der böswillige Angriffe ausgeführt oder eine „POP-Kette“ gestartet werden können.
  • Alle während des Angriffs verwendeten Klassen müssen beim Aufruf des anfälligen unserialize() deklariert werden, andernfalls muss das automatische Laden von Objekten für solche Klassen unterstützt werden.“

Wenn ein Angreifer eine Eingabe hochladen (einschleusen) kann, um ein serialisiertes Objekt seiner Wahl einzuschließen, kann er möglicherweise beliebigen Code ausführen oder die Sicherheit der Website gefährden. Wie oben erwähnt, entsteht diese Art von Sicherheitslücke normalerweise aufgrund einer unzureichenden Bereinigung von Benutzereingaben. Die Bereinigung ist ein Standardprozess zur Überprüfung von Eingabedaten, sodass nur erwartete Eingabetypen zulässig sind und unsichere Eingaben abgelehnt und blockiert werden.

Im Fall des Better Search-Replace-Plugins wurde die Schwachstelle in der Art und Weise aufgedeckt, wie es die Deserialisierung während Such- und Ersetzungsvorgängen handhabte. Ein kritisches Sicherheitsmerkmal, das in diesem Szenario fehlte, war eine POP-Kette – eine Reihe verknüpfter Klassen und Funktionen, die ein Angreifer verwenden kann, um böswillige Aktionen auszulösen, wenn ein Objekt deserialisiert wird.

Das Plugin „Better Search Replacement“ enthielt zwar keine solche Kette, es bestand jedoch weiterhin das Risiko, dass, wenn ein anderes Plugin oder Theme, das auf derselben Website installiert war, eine POP-Kette enthielt, es einem Angreifer ermöglichen könnte, Angriffe zu starten.

Wordfence beschreibt die Sicherheitslücke:

„Das Better Search Replacement-Plugin für WordPress ist in allen Versionen bis einschließlich 1.4.4 durch Deserialisierung nicht vertrauenswürdiger Eingaben anfällig für PHP Object Injection.
Dies ermöglicht es nicht authentifizierten Angreifern, ein PHP-Objekt einzuschleusen.

Im anfälligen Plugin ist keine POP-Kette vorhanden. Wenn eine POP-Kette über ein zusätzliches Plugin oder Theme vorhanden ist, das auf dem Zielsystem installiert ist, könnte sie es dem Angreifer ermöglichen, beliebige Dateien zu löschen, sensible Daten abzurufen oder Code auszuführen.“

Als Reaktion auf diese Entdeckung hat WP Engine das Problem umgehend behoben. Der Changelog-Eintrag für das am 18. Januar 2024 veröffentlichte Update auf Version 1.4.5 hebt die ergriffenen Maßnahmen hervor:

„Sicherheit: Die Desialisierung eines Objekts während Such- und Ersetzungsvorgängen übergibt jetzt ‚allowed_classes‘ => false, um zu verhindern, dass das Objekt instanziiert und möglicherweise in der Datenbank gespeicherter Schadcode ausgeführt wird.“

Dieses Update erfolgte nach der verantwortungsvollen Offenlegung der Schwachstelle durch Wordfence am 18. Dezember 2023, gefolgt von der Entwicklung und dem Testen des Fixes durch WP Engine.

Was als Reaktion zu tun ist

Nutzer des Plugins „Better Search Replacement“ werden dringend gebeten, sofort auf die neueste Version zu aktualisieren, um ihre Websites vor unerwünschten Aktivitäten zu schützen.

source site

Leave a Reply