
Verantwortungsvolle Offenlegung einer ungepatchten Sicherheitslücke in FluentCRM von WPManageNinja
Update 2023-06-12: Sie benötigen den Snippet nicht mehr. WPManageNinja hat die Sicherheitslücke zwei Stunden nach der öffentlichen Offenlegung gepatcht (93 Tage nach der Meldung).
Update 2024-01-27: Das verwandte Problem mit ewigen Hash-Werten ist nun vollständig behoben.
tl;dr Angreifer können Kontaktdaten in FluentCRM einsehen und bearbeiten. WPManageNinja hat die Sicherheitslücke innerhalb des 90-tägigen Zeitfensters für verantwortungsvolle Offenlegung nicht behoben. Ich stelle einen Minderungs-Snippet zur Verfügung, um die Ausnutzung der Sicherheitslücke zu verhindern, während auf einen offiziellen Patch gewartet wird.
Heute veröffentliche ich Informationen über eine Sicherheitslücke, die ich im beliebten WordPress-Plugin FluentCRM von WPManageNinja gefunden habe. Die Schwachstelle CVE-2023-1430 wird durch die unzureichende Verwendung eines E-Mail-Adress-Hashs als Autorisierungskontrolle durch FluentCRM verursacht. Ich habe die Sicherheitslücke gemäß der Richtlinie zur Offenlegung von Sicherheitslücken von Google Zero verantwortungsvoll offengelegt. WPManageNinja hat weder innerhalb des 90-Tage-Fensters einen Patch bereitgestellt noch eine Zeitverlängerung beantragt.
In diesem Bericht bezieht sich Kontakt auf ein FluentCRM-Kontaktobjekt, während Benutzer sich auf ein WordPress-Benutzerobjekt bezieht. Ein Kontakt kann mit einem Benutzer verknüpft sein, ist aber nicht erforderlich. Details zur Ausnutzung der Sicherheitslücke werden bis zur Verfügbarkeit eines offiziellen Patches zurückgehalten. Sicherheitsexperten können mich für den vollständigen Bericht kontaktieren ([email protected]).
Auf Websites, die FluentCRM ausführen, kann ein Angreifer den Namen, die E-Mail-Adresse und die Listeneinstellungen eines Kontakts einsehen und bearbeiten, indem er die E-Mail-Adresse des Kontakts kennt. Da der Name des Kontakts häufig über Merge-Tags in Newslettern enthalten ist, kann ein Angreifer den Namen des Kontakts durch anstößige Sprache ersetzen, was dazu führt, dass der Websitebetreiber vulgäre Newsletter versendet. Wenn der Website-Administrator den Shortcode von FluentCRM zum Verwalten von Präferenzen aktiviert und auf einer öffentlichen Webseite platziert hat, kann ein Angreifer alle offengelegten persönlichen Informationen einsehen und bearbeiten, d.h. Titel, Telefonnummer, Geburtsdatum und Adresse (abhängig von der FluentCRM-Konfiguration).
FluentCRM ist auf mehr als 30.000 Websites installiert. Website-Administratoren von FluentCRM-Seiten können die Ausnutzung der Sicherheitslücke verhindern, indem sie meinen Minderungs-Snippet in die functions.php-Datei ihres Child-Themes einfügen.
Der Snippet behebt die Sicherheitslücke nicht. Er ersetzt den anfälligen Inhalt auf der Abmeldeseite (unsubscribe.php) und der Seite zum Verwalten von Präferenzen (manage_subscription.php) von FluentCRM durch eine Fehlermeldung, die den Kontakt auffordert, sich stattdessen per E-Mail zu melden. Die E-Mail-Adresse in der Fehlermeldung ist die Admin-E-Mail-Adresse der Website (kann im Snippet geändert werden). Der Minderungs-Snippet stellt außerdem sicher, dass nicht eingeloggte Besucher den anfälligen Shortcode von FluentCRM zum Verwalten von Präferenzen (fluentcrm_pref) nicht rendern können. Ein nicht eingeloggter Besucher sieht stattdessen eine Fehlermeldung, die ihn auffordert, sich einzuloggen. Alle Zeichenfolgen sind mit der bereitgestellten POT-Datei übersetzbar.
Ich empfehle Websitebesitzern, entweder die von mir bereitgestellte Minderung oder eine eigene entsprechende Minderung zu implementieren. Websitebesitzer sollten außerdem die Integrität ihrer FluentCRM-Kontaktdaten überprüfen und, wenn möglich, ihre Logs auf potenzielle Datenlecks prüfen. Die Überprüfung der Logs ist besonders wichtig für die folgenden Websites:
Der für die Website benannte Datenschutzbeauftragte muss potenzielle Datenlecks personenbezogener Daten gemäß den Gesetzen und Vorschriften der betroffenen Rechtsordnungen behandeln.
Wenn FluentCRM so konfiguriert ist, dass die Einstellungen eines Kontakts mit dem entsprechenden Benutzer synchronisiert werden, kann ein Angreifer den Namen des Benutzers ändern. Glücklicherweise synchronisiert FluentCRM keine E-Mail-Adressen von Kontakten zu Benutzern. Wenn FluentCRM dies tun würde, würde diese Sicherheitslücke eine vollständige Übernahme der Website ermöglichen. Ein Angreifer hätte privilegierten Zugriff erlangen können, indem er die E-Mail-Adresse des Site-Administrators ändert und dann das Passwort des Administrators zurücksetzt.
Andere Lösungen können jedoch alle Metadaten von Kontakten zu Benutzern synchronisieren, z. B. WP Fusion und die API von FluentCRM. WP Fusion ist wahrscheinlich das beliebteste Drittanbieter-Plugin zum Synchronisieren von Kontakt-Metadaten zwischen einem CRM (z. B. FluentCRM) und WordPress. Glücklicherweise ist die aktuelle Version von WP Fusion nicht in Metadatenänderungen eingebunden, die von den anfälligen Formularen initiiert werden. Ich habe die Entwickler von WP Fusion informiert, und sie werden diese Einschränkung erst beheben, wenn WPManageNinja die Sicherheitslücke behoben hat.
Die API von FluentCRM kann auch zum Aktualisieren von Kontakt- und Benutzerdaten verwendet werden. Websitebesitzer, die die API von FluentCRM zum Aktualisieren von E-Mail-Adressen von Benutzern verwenden, müssen diese Aktualisierung deaktivieren, wenn sie von der Seite oder dem Shortcode von FluentCRM zum Verwalten von Präferenzen initiiert wird (oder meinen Minderungs-Snippet hinzufügen, um sicherzustellen, dass keine Einstellungen von den anfälligen Formularen aktualisiert werden können).
FluentCRM ermöglicht es Kontakten, sich von öffentlichen Webseiten abzumelden und ihre Präferenzen zu verwalten. Links zu diesen Seiten sind in jedem Newsletter enthalten. Änderungen, die auf diesen Seiten vorgenommen werden, werden durch MD5-Hashes der E-Mail-Adressen der Kontakte autorisiert, die als URL-Parameter übergeben werden. Der MD5-Hash einer E-Mail-Adresse ist kein Geheimnis und kann von jedem berechnet werden. Ein Angreifer kann die falsche Verwendung von Hashes ausnutzen, um bestimmte Kontakte abzumelden oder Kontakte mit bekannten E-Mail-Adressen massenhaft abzumelden.