Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/karlemilnikka/cve-2023-1430
Authentifizierung & AutorisierungSchwachstellenanalyseWebsicherheitPapers & ForschungFehlkonfigurationLernen & Bildung
GitHubkarlemilnikka/cve-2023-1430

CVE-2023-1430

Verantwortungsvolle Offenlegung einer ungepatchten Sicherheitslücke in FluentCRM von WPManageNinja

Repository anzeigen
1vor 2 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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.

Verantwortungsvolle Offenlegung der nicht gepatchten Sicherheitslücke CVE-2023-1430 in FluentCRM von WPManageNinja

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.

  • Schwachstelle: CVE-2023-1430 – Unzureichende Verwendung eines Hashs als Autorisierungskontrolle
  • CVSS: 6.5 (Mittel)
  • Software: FluentCRM
  • Betroffene Versionen: Sicherheitslücke in 2.7.40 erkannt
  • Patch-Version: 2.8.02
  • Entwickler: WPManageNinja
  • Forscher: Karl Emil Nikka, Nikka Systems (gemeldet über Wordfence)
  • Öffentlich veröffentlicht: 2023-06-12
  • Zuletzt aktualisiert: 2023-06-12

Überblick

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]).

Allgemeine Auswirkungen und erforderliche Maßnahmen

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.

Erforderliche Maßnahmen

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:

  • Websites, bei denen der registrierte Name eines Kontakts sensible Informationen darstellt
  • Websites, bei denen der Shortcode von FluentCRM zum Verwalten von Präferenzen auf öffentlichen Seiten für nicht eingeloggte Besucher vorhanden ist oder war
  • Websites, bei denen die Listenverwaltung aktiviert ist und der Name der Listen, die ein Kontakt abonniert hat, sensible Informationen darstellt.

Der für die Website benannte Datenschutzbeauftragte muss potenzielle Datenlecks personenbezogener Daten gemäß den Gesetzen und Vorschriften der betroffenen Rechtsordnungen behandeln.

Zusätzliche potenzielle Auswirkungen

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).

Ausnutzung der Sicherheitslücke

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.

Während die Abmeldeseite ausschließlich auf den MD5-Hash für die Autorisierung angewiesen ist, erfordert die Seite zum Verwalten von Präferenzen einen zusätzlichen URL-Parameter namens ce_id. In diesem Fall bezieht sich die ce_id auf die ID des Kontakts in der Tabelle fc_subscribers. Diese ID ist eine aufsteigende ganze Zahl. Der ce_id-Wert ist daher leicht zu finden, indem alle möglichen Werte getestet werden (der Suchraum ist die Anzahl der jemals registrierten Kontakte der Website). Admin-Benutzer haben wahrscheinlich niedrige Werte.

Von der Seite zum Verwalten von Präferenzen aus kann ein Angreifer auch den secure_hash-Wert des Kontakts extrahieren. Durch Aktualisieren der E-Mail-Adresse des Kontakts wird der „secure_hash“-Wert des Kontakts in einem Cookie namens fc_hash_secure gespeichert. Mit diesem Cookie kann der Angreifer alle Kontaktinformationen anzeigen, die durch den Shortcode des Präferenzformulars von FluentCRM verfügbar gemacht werden.

Verwandtes geringfügiges Problem: ewige Hash-Werte

Der zuvor erwähnte „secure_hash“ ist ein Wert, auf den FluentCRM (in einigen Situationen) anstelle oder als Alternative zum MD5-E-Mail-Adress-Hash zurückgreift. Seit der Veröffentlichung von FluentCRM 2.8.0 verlässt sich die Abmeldeseite ausschließlich auf den secure_hash-Wert für die Autorisierung. Die Seite zum Verwalten von Präferenzen akzeptiert sowohl den neuen secure_hash-Wert als auch den alten MD5-E-Mail-Adress-Hash für die Autorisierung.

Während der secure_hash-Wert nicht aus der E-Mail-Adresse abgeleitet werden kann, entspricht die Verwendung durch FluentCRM nicht guten Sicherheitspraktiken. Der secure_hash-Wert wird einmal pro Kontakt generiert. Er wird nie aktualisiert und läuft nie ab. Dies ist problematisch, da der secure_hash-Wert in jedem Newsletter enthalten ist. Wenn ein Angreifer Zugriff auf das Postfach eines Kontakts erhält, kann der Angreifer die Einstellungen des Kontakts auf unbestimmte Zeit ändern. Wenn der betroffene Kontakt mit einem Benutzer mit Administratorrechten verknüpft ist und Änderungen der E-Mail-Adresse von FluentCRM zu WordPress synchronisiert werden, enthält jeder einzelne an diesen Kontakt gesendete Newsletter ein nie verfallendes Token zur Übernahme der Website.

Ich habe dieses verwandte Problem am 15.03.2023 an WPManageNinja gemeldet. Zwei Monate später (15.05.2023) antwortete WPManageNinja, dass ihre Sicherheitsberater das statische secure_hash-Problem nicht als Problem betrachteten. Die Sicherheitsberater von WPManageNinja sagten, es sei „in Ordnung, diese Art von einmalig generierten Token zur Identifizierung des Kontakts zu verwenden“ und dass es „API-Token von SaaS-Diensten ähnelt, die nicht an andere Kontakte übermittelt werden, sondern nur an den tatsächlichen Kontakt gesendet werden, der die E-Mail-Adresse besitzt“.

WPManageNinja war aufgeschlossen und sagte mir, ich solle Bescheid geben, wenn ich es immer noch für ein Sicherheitsproblem hielt, was ich tat. Ich erklärte, warum die secure_hash-Werte nicht mit API-Token verglichen werden können. (API-Token können nur über TLS-Verbindungen gesendet werden, und der Zugriff auf API-Token kann eingeschränkt werden. Dies ist bei Klartextwerten in E-Mails nicht der Fall. Vor allem können API-Token widerrufen werden, während es für einen Kontakt keine Möglichkeit gibt, einen secure_hash-Wert zu widerrufen.)

Später am selben Tag bedankte sich WPManageNinja bei mir und sagte, sie erwägen, die E-Mail-Datensatz-ID mit dem Hash zu kombinieren. Das wird das Problem lösen, wenn es in Verbindung mit der automatischen Widerrufung entweder alter (zeitbasierter Ablauf) oder vorheriger (zählerbasierter Ablauf) secure_hash-Werte implementiert wird. Diese Funktion wurde noch nicht implementiert, aber ich betrachte die Verwendung statischer Hash-Werte nicht als Teil dieser CVE.

Zeitplan

  • 2023-03-11 Ich meldete die Sicherheitslücke an WPManageNinja. Zu diesem Zeitpunkt hatte ich die Sicherheitslücke nur auf der Abmeldeseite gefunden.
  • 2023-03-13 WPManageNinja bestätigte den Erhalt meines Berichts.
  • 2023-03-14 Die Entwickler von WPManageNinja bestritten die Verwendung von MD5-Hashes von E-Mail-Adressen zur Autorisierung und erklärten, sie würden wp_generate_uuid4-Token verwenden.
  • 2023-03-14 Ich erklärte und bewies, dass sie sich auf MD5-Hashes von E-Mail-Adressen verlassen.
  • 2023-03-15 Aufgrund der ersten Antwort von WPManageNinja grub ich tiefer und fand dieselbe Sicherheitslücke auf der Seite zum Verwalten von Präferenzen. Ich meldete meine Ergebnisse an WPManageNinja und erklärte, warum dies die Sicherheitslücke schwerwiegender machte. Ich reichte auch einen Bericht bei Wordfence ein und beantragte eine CVE.
  • 2023-03-16 WPManageNinja bestätigte den Erhalt meines aktualisierten Berichts.
  • 2023-03-16 Wordfence bestätigte die Sicherheitslücke und vergab CVE-2023-1430.
  • 2023-04-10 Ich sandte eine 30-Tage-Erinnerung an WPManageNinja.
  • 2023-04-14 WPManageNinja veröffentlichte FluentCRM 2.8.0 ohne Erwähnung von Sicherheitspatches (nur „Verbesserungen und Fehlerbehebungen“).
  • 2023-04-22 Ich informierte WPManageNinja, dass das Update 2.8.0 nur die Sicherheitslücke auf der Abmeldeseite behoben hatte und dass sie auf der Seite zum Verwalten von Präferenzen bestehen blieb.
  • 2023-04-24 WPManageNinja bestätigte den Erhalt meines aktualisierten Berichts.
  • 2023-05-14 Ich sandte eine 60-Tage-Erinnerung an WPManageNinja.
  • 2023-05-15 WPManageNinja sagte, sie würden mir in der folgenden Woche eine gepatchte Beta-Version senden (was sie nie taten).
  • 2023-06-01 Ich fragte WPManageNinja, ob ich dem Entwickler von WP Fusion vor der öffentlichen Offenlegung Bescheid geben solle. WPManageNinja sagte mir, das sei nicht nötig, da sie in der folgenden Woche ein Update veröffentlichen würden (was sie nicht taten).
  • 2023-06-08 Ich teilte WPManageNinja mit, dass ich die öffentliche Offenlegung auf den 12.06.2023 verschieben würde, da das ursprüngliche Datum der öffentlichen Offenlegung nahe am Wochenende lag.
  • 2023-06-09 Ich informierte WPManageNinja, dass sie 90 Tage erreicht hatten und der nächste verantwortungsvolle Schritt darin bestehe, Informationen über die Sicherheitslücke zu veröffentlichen, damit jeder während des Wartens Minderungsmaßnahmen ergreifen könne. Ich bat die Entwickler von WP Fusion auch, die Synchronisationseinschränkung nicht zu beheben, bis WPManageNinja die Sicherheitslücke behoben hat.
  • 2023-06-09 Wordfence veröffentlichte erste Details zur Sicherheitslücke und gab fälschlicherweise an, dass die Sicherheitslücke gepatcht sei. Dies war auf eine Fehlkommunikation zwischen mir und Wordfence zurückzuführen.
  • 2023-06-12 Ich veröffentlichte diesen Bericht unter Auslassung der Ausbeutungsdetails.

Nikka Systems Academy (Project Opal) ist NICHT betroffen

Im ersten Quartal 2023 begannen wir mit der Migration von unserem vorherigen Newsletter-Tool (Sendy) zu FluentCRM. Ich fand die Sicherheitslücke während der Integration von FluentCRM in die Nikka Systems Academy (Project Opal). Da wir das Abonnementverwaltungssystem von FluentCRM durch unser eigenes benutzerdefiniertes Plugin ersetzt haben, haben die anfälligen Formulare von FluentCRM niemals unsere Website oder die Daten unserer Kunden beeinträchtigt.

Empfehlungen für WPManageNinja

FluentCRM ist ein großartiges Plugin, aber die Handhabung der Offenlegung der Sicherheitslücke durch WPManageNinja lässt viel Raum für Verbesserungen. Die folgende Liste ist mein Vorschlag, wie WPManageNinja die Situation verbessern könnte.

  • Sie sollten einen Drittanbieter-Prüfer beauftragen, die aktuelle Codebasis zu prüfen. Die Sicherheitslücke CVE-2023-1430 ist ein Paradebeispiel dafür, wie man Hashes nicht verwenden sollte. Zusammen mit der anfänglichen Leugnung von WPManageNinja, überhaupt MD5-E-Mail-Adress-Hashes zur Autorisierung zu verwenden, sagt mir dies, dass es wahrscheinlich an der Zeit für eine Drittanbieter-Prüfung der Codebasis ist.
  • Sie sollten eine security.txt-Datei (RFC 9116) veröffentlichen, damit Sicherheitsforscher ihre Entwickler direkt kontaktieren können. Sie haben wichtige Tage für Minderungsmaßnahmen verpasst, da ich die Sicherheitslücke über ihre Kundendienstabteilung melden musste, die den Sicherheitslückenbericht zunächst fälschlicherweise abgewiesen hat.
  • Sie sollten ein besseres Verfahren zum zeitnahen Patchen von Sicherheitslücken etablieren. Eine einfach zu patchende Sicherheitslücke wie diese sollte innerhalb von 30 Tagen behoben werden. Keinen Patch innerhalb des 90-tägigen Fensters für verantwortungsvolle Offenlegung bereitzuhaben, ist inakzeptabel.
  • Sie sollten immer behobene Sicherheitslücken und implementierte Sicherheitsverbesserungen in ihren Änderungsprotokollen offenlegen, damit ihre Kunden wissen, wie wichtig die Updates sind.

Trotzdem vertraue ich WPManageNinja immer noch. Es gibt Fehler in jeder Software, und ein einziger schlecht verwalteter Sicherheitslückenbericht ist kein Grund, die Nutzung ihrer Plugins einzustellen.

Update 2023-06-12: Die Tatsache, dass sie immer noch versuchten, die Sicherheitslücke in ihrem Änderungsprotokoll zu verstecken, macht mir ernsthafte Sorgen. (Sie haben die CVE jetzt hinzugefügt.)

Änderungsprotokoll

  • 2023-06-12 Erstveröffentlichung.
  • 2023-06-12 Aktualisiert mit Informationen zur Patch-Verfügbarkeit und zuvor zurückgehaltenen Ausbeutungsdetails.
  • 2023-06-12 Zum Zeitplan hinzugefügt: WPManageNinja fügt Informationen zur CVE im Änderungsprotokoll des Plugins hinzu.
  • 2023-06-12 Rechtschreibfehler korrigiert. CVSS von Wordfence auf 6.5 angehoben.
  • 2024-01-27 Informationen hinzugefügt, wie FluentCRM 2.8.40 und 2.8.41 das verwandte geringfügige Problem mit ewigen Hash-Werten behoben haben.
Tool herunterladen
  • 2023-06-12 WPManageNinja patchte die Sicherheitslücke zwei Stunden nach der öffentlichen Offenlegung (93 Tage nach der Meldung), ohne im Änderungsprotokoll etwas über die Sicherheitslücke zu erwähnen (nur „Secure Hash statt MD5 für die Abonnement-Präferenzseite verwenden“).
  • 2023-06-12 Ich aktualisierte diesen Bericht mit Informationen zum Patch und den zuvor zurückgehaltenen Details.
  • 2023-06-12 WPManageNinja fügte Informationen zur CVE im Änderungsprotokoll des Plugins hinzu.
  • 2024-01-17 WPManageNinja kontaktierte mich, um meine Meinung zu ihrer Lösung des Problems mit ewigen Hash-Werten einzuholen.
  • 2024-01-27 WPManageNinja veröffentlichte FluentCRM 2.8.40, das das Problem mit ewigen Hash-Werten mit meinen vorgeschlagenen Verbesserungen behob.
  • 2024-01-27 WPManageNinja veröffentlichte FluentCRM 2.8.41, um sicherzustellen, dass der alte Authentifizierungs-Hash eines Kontakts ungültig wird, wenn der verbundene WordPress-Benutzer sein Passwort ändert.
  • 2024-01-27 Ich betrachtete das verwandte geringfügige Problem mit ewigen Hash-Werten als behoben.