Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2023-1430 — الإفصاح المسؤول عن ثغرة أمنية غير مصححة في FluentCRM من WPManageNinja | Kitploit
أدوات/GitHubGitHub/karlemilnikka/cve-2023-1430
المصادقة والترخيصتحليل الثغرات الأمنيةأمن الويبالأوراق والأبحاثسوء التكوينالتعلم والتعليم
GitHubkarlemilnikka/cve-2023-1430

CVE-2023-1430

الإفصاح المسؤول عن ثغرة أمنية غير مصححة في FluentCRM من WPManageNinja

عرض المستودع
1منذ 2 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

تحديث 2023-06-12: لم تعد بحاجة إلى المقتطف. قامت WPManageNinja بتصحيح الثغرة بعد ساعتين من الإفصاح العام (93 يومًا بعد الإبلاغ).

تحديث 2024-01-27: تم الآن معالجة المشكلة ذات الصلة بقيم التجزئة الدائمة بشكل كامل.

الإفصاح المسؤول عن ثغرة غير مصححة CVE-2023-1430 في FluentCRM من WPManageNinja

tl;dr يمكن للمهاجمين عرض وتعديل تفاصيل جهات الاتصال في FluentCRM. لم تقم WPManageNinja بتصحيح الثغرة خلال فترة الإفصاح المسؤول البالغة 90 يومًا. أقدم مقتطف تخفيف لمنع استغلال الثغرة أثناء انتظار التصحيح الرسمي.

  • الثغرة: CVE-2023-1430 استخدام غير كافٍ للتجزئة كعنصر تحكم في التفويض
  • CVSS: 6.5 (متوسط)
  • البرنامج: FluentCRM
  • الإصدارات المتأثرة: تم اكتشاف الثغرة في 2.7.40
  • الإصدار المصحح: 2.8.02
  • المطور: WPManageNinja
  • الباحث: Karl Emil Nikka, Nikka Systems (تم الإبلاغ عبر Wordfence)
  • نُشر علنًا: 2023-06-12
  • آخر تحديث: 2023-06-12

نظرة عامة

اليوم، أنشر معلومات حول ثغرة وجدتها في الإضافة الشهيرة لووردبريس FluentCRM من WPManageNinja. الثغرة، CVE-2023-1430، ناتجة عن استخدام غير كافٍ من FluentCRM لتجزئة عنوان البريد الإلكتروني كعنصر تحكم في التفويض. لقد أفصحت عن الثغرة بمسؤولية وفقًا لسياسة الإفصاح عن الثغرات الخاصة بـ Google Zero. لم تقدم WPManageNinja تصحيحًا خلال فترة 90 يومًا، ولا طلبت تمديدًا للوقت.

في هذا التقرير، يشير contact إلى كائن جهة اتصال في FluentCRM، بينما يشير user إلى كائن مستخدم ووردبريس. يمكن ربط جهة اتصال بمستخدم، لكنه ليس شرطًا. تم حجب تفاصيل استغلال الثغرة حتى يتوفر تصحيح رسمي. يمكن لمحترفي الأمن التواصل معي للحصول على التقرير الكامل ([email protected]).

التأثير العام والإجراءات المطلوبة

على المواقع التي تشغل FluentCRM، يمكن للمهاجم عرض وتعديل اسم جهة الاتصال وعنوان بريدها الإلكتروني وإعداد القائمة بمجرد معرفة عنوان بريد جهة الاتصال. نظرًا لأن اسم جهة الاتصال غالبًا ما يتم تضمينه في النشرات الإخبارية عبر علامات الدمج، يمكن للمهاجم استبدال اسم جهة الاتصال بلغة بذيئة، مما يتسبب في إرسال مالك الموقع لنشرات إخبارية فظة. إذا قام مدير الموقع بتمكين الرمز القصير لإدارة التفضيلات في FluentCRM وأضافه إلى صفحة ويب عامة، يمكن للمهاجم عرض وتعديل جميع المعلومات الشخصية المكشوفة، أي اللقب ورقم الهاتف وتاريخ الميلاد والعنوان (اعتمادًا على تكوين FluentCRM).

تم تثبيت FluentCRM على أكثر من 30,000 موقع. يمكن لمديري المواقع التي تستخدم FluentCRM منع استغلال الثغرة عن طريق إضافة مقتطف التخفيف الخاص بي إلى ملف functions.php في القالب الفرعي.

لا يقوم المقتطف بتصحيح الثغرة. يقوم باستبدال المحتوى الضعيف في صفحة إلغاء الاشتراك (unsubscribe.php) وصفحة إدارة التفضيلات (manage_subscription.php) في FluentCRM برسالة خطأ تطلب من جهة الاتصال التواصل عبر البريد الإلكتروني بدلاً من ذلك. عنوان البريد الإلكتروني في رسالة الخطأ هو عنوان بريد المسؤول (يمكن تغييره من المقتطف). يضمن مقتطف التخفيف أيضًا أن الزوار غير المسجلين لا يمكنهم عرض الرمز القصير الضعيف لإدارة التفضيلات (fluentcrm_pref). سيرى الزائر غير المسجل بدلاً من ذلك رسالة خطأ تطلب منه تسجيل الدخول. جميع النصوص قابلة للترجمة باستخدام ملف POT المقدم.

الإجراءات المطلوبة

أوصي مالكي المواقع بتنفيذ إما التخفيف الذي أقدمه أو التخفيف المناسب الخاص بهم. يجب على مالكي المواقع أيضًا التحقق من سلامة بيانات جهات الاتصال في FluentCRM، وإذا أمكن، فحص سجلاتهم بحثًا عن تسريبات محتملة للبيانات. يعد فحص السجلات مهمًا بشكل خاص للمواقع التالية:

  • المواقع التي يكون فيها اسم جهة الاتصال المسجل معلومات حساسة
  • المواقع التي يكون فيها الرمز القصير لإدارة التفضيلات في FluentCRM موجودًا أو كان موجودًا على صفحات عامة للزوار غير المسجلين
  • المواقع التي يتم فيها تمكين إدارة القوائم ويكون اسم القوائم التي تشترك فيها جهة الاتصال معلومات حساسة.

يجب على مراقب البيانات المعين للموقع التعامل مع أي تسريبات محتملة للبيانات الشخصية وفقًا للقوانين واللوائح في الولايات القضائية المتأثرة.

تأثير محتمل إضافي

إذا تم تكوين FluentCRM لمزامنة إعدادات جهة الاتصال مع المستخدم المقابل لها، يمكن للمهاجم تغيير اسم المستخدم. لحسن الحظ، لا يقوم FluentCRM بمزامنة عناوين البريد الإلكتروني من جهات الاتصال إلى المستخدمين. إذا كان FluentCRM يفعل ذلك، لكانت هذه الثغرة تمكن من السيطرة الكاملة على الموقع. كان بإمكان المهاجم الحصول على وصول مميز عن طريق تغيير عنوان البريد الإلكتروني لمسؤول الموقع ثم إعادة تعيين كلمة مرور المسؤول.

ومع ذلك، يمكن للحلول الأخرى مزامنة جميع البيانات الوصفية من جهات الاتصال إلى المستخدمين، مثل WP Fusion وواجهة برمجة تطبيقات FluentCRM. من المحتمل أن يكون WP Fusion هو الإضافة الأكثر شيوعًا من طرف ثالث لمزامنة بيانات جهات الاتصال الوصفية بين CRM (مثل FluentCRM) ووردبريس. لحسن الحظ، الإصدار الحالي من WP Fusion غير مرتبط بتغييرات البيانات الوصفية التي تم بدؤها من النماذج الضعيفة. لقد أبلغت مطوري WP Fusion، ولن يعالجوا هذا القيد حتى تقوم WPManageNinja بتصحيح الثغرة.

يمكن أيضًا استخدام واجهة برمجة تطبيقات FluentCRM لتحديث بيانات جهات الاتصال والمستخدمين. يجب على مالكي المواقع الذين يستخدمون واجهة برمجة تطبيقات FluentCRM لتحديث عناوين البريد الإلكتروني للمستخدمين تعطيل هذا التحديث عندما يتم البدء به من صفحة FluentCRM أو الرمز القصير لإدارة التفضيلات (أو إضافة مقتطف التخفيف الخاص بي لضمان عدم إمكانية تحديث أي إعدادات من النماذج الضعيفة).

استغلال الثغرة

يتيح FluentCRM لجهات الاتصال إلغاء الاشتراك وإدارة التفضيلات من صفحات ويب عامة. يتم تضمين روابط لهذه الصفحات في كل نشرة إخبارية. يتم تفويض التغييرات التي تتم على هذه الصفحات بواسطة تجزئات MD5 لعناوين البريد الإلكتروني لجهات الاتصال، ويتم تمريرها كمعلمات URL. تجزئة MD5 لعنوان البريد الإلكتروني ليست سرًا ويمكن لأي شخص حسابها. يمكن للمهاجم استغلال الاستخدام غير الصحيح للتجزئات لإلغاء اشتراك جهات اتصال محددة أو إلغاء اشتراك جهات اتصال بعناوين بريد إلكتروني معروفة بشكل جماعي.

بينما تعتمد صفحة إلغاء الاشتراك فقط على تجزئة MD5 للتفويض، تتطلب صفحة إدارة التفضيلات معلمة URL إضافية تسمى ce_id. في هذه الحالة، يشير ce_id إلى معرف جهة الاتصال في جدول fc_subscribers. هذا المعرف هو عدد صحيح متزايد. لذلك يمكن بسهولة العثور على قيمة ce_id عن طريق اختبار جميع القيم الممكنة (مساحة البحث هي عدد جهات الاتصال المسجلة في الموقع). ربما يكون لدى المستخدمين المسؤولين قيم منخفضة.

من صفحة إدارة التفضيلات، يمكن للمهاجم أيضًا استخراج قيمة secure_hash لجهة الاتصال. عن طريق تحديث عنوان البريد الإلكتروني لجهة الاتصال، يتم تخزين قيمة "secure_hash" في ملف تعريف ارتباط يسمى fc_hash_secure. مع وجود ملف تعريف الارتباط هذا، يمكن للمهاجم عرض جميع معلومات جهة الاتصال المتاحة بواسطة الرمز القصير لنموذج التفضيلات في FluentCRM.

مشكلة ثانوية ذات صلة: قيم التجزئة الدائمة

"secure_hash" المذكورة سابقًا هي قيمة يعتمد عليها FluentCRM (في بعض الحالات) بدلاً من أو كبديل لتجزئة عنوان البريد الإلكتروني MD5. منذ إصدار FluentCRM 2.8.0، تعتمد صفحة إلغاء الاشتراك حصريًا على قيمة secure_hash للتفويض. تقبل صفحة إدارة التفضيلات كلًا من قيمة secure_hash الجديدة وتجزئة MD5 القديمة للتفويض.

بينما لا يمكن اشتقاق قيمة secure_hash من عنوان البريد الإلكتروني، فإن استخدام FluentCRM لا يتبع ممارسات الأمان الجيدة. يتم إنشاء قيمة secure_hash مرة واحدة لكل جهة اتصال. لا يتم تحديثها أبدًا، ولا تنتهي صلاحيتها أبدًا. هذا مشكلة لأن قيمة secure_hash يتم تضمينها في كل نشرة إخبارية. إذا حصل مهاجم على حق الوصول إلى صندوق الوارد لجهة الاتصال، يمكن للمهاجم تغيير إعدادات جهة الاتصال إلى أجل غير مسمى. إذا كانت جهة الاتصال المتأثرة مرتبطة بمستخدم بصلاحيات إدارية، وتمت مزامنة تغييرات عنوان البريد الإلكتروني من FluentCRM إلى ووردبريس، فإن كل نشرة إخبارية يتم إرسالها إلى جهة الاتصال هذه ستحتوي على رمز لا ينتهي أبدًا للسيطرة على الموقع.

أبلغت عن هذه المشكلة ذات الصلة إلى WPManageNinja في 2023-03-15. بعد شهرين (2023-05-15)، ردت WPManageNinja بأن مستشاريهم الأمنيين لم يعتبروا قيمة secure_hash الثابتة مشكلة. قال مستشارو الأمن في WPManageNinja أنه "من المقبول استخدام هذا النوع من الرموز المولدة لمرة واحدة لتحديد جهة الاتصال" وأنها "مشابهة لرموز API لخدمات SaaS التي لا يتم تسليمها إلى أي جهات اتصال أخرى ولكن يتم إرسالها فقط إلى جهة الاتصال الفعلية التي تملك عنوان البريد الإلكتروني".

كانت WPManageNinja منفتحة وأخبروني أن أخبرهم إذا كنت لا أزال أعتقد أنها مشكلة أمنية، وقد فعلت ذلك. شرحت لماذا لا يمكن مقارنة قيم secure_hash برموز API. (يمكن ضمان إرسال رموز API فقط عبر اتصالات TLS، ويمكن تقييد الوصول إلى رموز API. هذا ليس هو الحال مع القيم النصية الصريحة في رسائل البريد الإلكتروني. الأهم من ذلك، يمكن إلغاء رموز API بينما لا توجد طريقة لجهة الاتصال لإلغاء قيمة secure_hash.)

في وقت لاحق من نفس اليوم، شكرتني WPManageNinja وقالت إنهم يفكرون في الجمع بين معرف سجل البريد الإلكتروني والتجزئة. سيؤدي ذلك إلى حل المشكلة إذا تم تنفيذه بالتزامن مع الإلغاء التلقائي إما لقيم secure_hash القديمة (انتهاء صلاحية زمني) أو السابقة (انتهاء صلاحية قائم على العداد). لم يتم تنفيذ هذه الميزة بعد، لكنني لا أعتبر استخدام قيم التجزئة الثابتة جزءًا من CVE هذه.

الجدول الزمني

  • 2023-03-11 أبلغت عن الثغرة إلى WPManageNinja. في هذه المرحلة، كنت قد وجدت الثغرة فقط في صفحة إلغاء الاشتراك.
  • 2023-03-13 أقرت WPManageNinja باستلام تقريري.
  • 2023-03-14 نفى مطورو WPManageNinja استخدام تجزئات MD5 لعناوين البريد الإلكتروني للتفويض، مدعين أنهم يستخدمون رموز wp_generate_uuid4.
  • 2023-03-14 شرحت وأثبت أنهم يعتمدون على تجزئات MD5 لعناوين البريد الإلكتروني.
  • 2023-03-15 بسبب رد WPManageNinja الأولي، تعمقت أكثر ووجدت نفس الثغرة في صفحة إدارة التفضيلات. أبلغت بنتائجي إلى WPManageNinja وشرحت لماذا يجعل ذلك الثغرة أكثر خطورة. كما أبلغت Wordfence وطلبت CVE.
  • 2023-03-16 أقرت WPManageNinja باستلام تقريري المحدث.
  • 2023-03-16 أكدت Wordfence الثغرة وخصصت لها CVE-2023-1430.
  • 2023-04-10 أرسلت تذكيرًا لمدة 30 يومًا إلى WPManageNinja.
  • 2023-04-14 أصدرت WPManageNinja FluentCRM 2.8.0 دون ذكر أي تصحيحات أمنية (فقط "تحسينات وإصلاحات للأخطاء").
  • 2023-04-22 أبلغت WPManageNinja أن التحديث 2.8.0 أصلح الثغرة فقط في صفحة إلغاء الاشتراك وأنها ما زالت مستمرة في صفحة إدارة التفضيلات.
  • 2023-04-24 أقرت WPManageNinja باستلام تقريري المحدث.
  • 2023-05-14 أرسلت تذكيرًا لمدة 60 يومًا إلى WPManageNinja.
  • 2023-05-15 قالت WPManageNinja إنهم سيرسلون لي نسخة بيتا مصححة في الأسبوع التالي (وهو ما لم يفعلوه أبدًا).
  • 2023-06-01 سألت WPManageNinja إذا كان يجب أن أعطي مطور WP Fusion إشعارًا مسبقًا قبل الإفصاح العام. أخبرتني WPManageNinja أنني لست مضطرًا لأنهم سيصدرون تحديثًا في الأسبوع التالي (وهو ما لم يفعلوه).
  • 2023-06-08 أخبرت WPManageNinja أنني سأؤجل الإفصاح العام إلى 2023-06-12 لأن تاريخ الإفصاح العام الأصلي كان بالقرب من عطلة نهاية الأسبوع.
  • 2023-06-09 أبلغت WPManageNinja أنهم قد وصلوا إلى 90 يومًا وأن الخطوة المسؤولة التالية ستكون نشر معلومات حول الثغرة حتى يتمكن الجميع من تنفيذ التخفيفات أثناء الانتظار. كما طلبت من مطوري WP Fusion عدم معالجة قيد المزامنة حتى تقوم WPManageNinja بتصحيح الثغرة.
  • 2023-06-09 نشرت Wordfence تفاصيل أولية حول الثغرة، مدعية بشكل غير صحيح أن الثغرة قد تم تصحيحها. كان ذلك بسبب سوء التواصل بيني وبين Wordfence.
  • 2023-06-12 نشرت هذا التقرير مع حجب تفاصيل الاستغلال.
  • 2023-06-12 قامت WPManageNinja بتصحيح الثغرة بعد ساعتين من الإفصاح العام (93 يومًا بعد الإبلاغ) دون ذكر أي شيء عن الثغرة في سجل التغييرات الخاص بهم (فقط "استخدم Secure Hash بدلاً من MD5 لصفحة تفضيلات الاشتراك").
  • 2023-06-12 قمت بتحديث هذا التقرير بمعلومات حول التصحيح والتفاصيل المحجوبة سابقًا.
  • 2023-06-12 أضافت WPManageNinja معلومات حول CVE إلى سجل تغييرات الإضافة.
  • 2024-01-17 تواصلت WPManageNinja معي للحصول على رأيي حول حلهم لمشكلة قيم التجزئة الدائمة.
  • 2024-01-27 أصدرت WPManageNinja FluentCRM 2.8.40، لمعالجة مشكلة قيم التجزئة الدائمة مع تنفيذ التحسينات التي اقترحتها.
  • 2024-01-27 أصدرت WPManageNinja FluentCRM 2.8.41، لضمان إبطال تجزئة المصادقة القديمة لجهة الاتصال عندما يغير مستخدم ووردبريس المتصل كلمة المرور.

أكاديمية Nikka Systems (مشروع Opal) غير متأثرة

في الربع الأول من 2023، بدأنا الهجرة من أداة النشرة الإخبارية السابقة (Sendy) إلى FluentCRM. وجدت الثغرة أثناء دمج FluentCRM مع أكاديمية Nikka Systems (مشروع Opal). نظرًا لأننا استبدلنا نظام إدارة الاشتراكات في FluentCRM بإضافتنا المخصصة، فإن النماذج الضعيفة في FluentCRM لم تؤثر أبدًا على موقعنا أو بيانات عملائنا.

توصيات لـ WPManageNinja

FluentCRM هي إضافة رائعة، لكن تعامل WPManageNinja مع الإفصاح عن الثغرة يترك مجالًا كبيرًا للتحسين. القائمة التالية هي اقتراحي لكيفية تحسين WPManageNinja للوضع.

  • يجب عليهم استشارة مدقق خارجي لتدقيق قاعدة الكود الحالية. ثغرة CVE-2023-1430 هي مثال نموذجي لكيفية عدم استخدام التجزئات. إلى جانب إنكار WPManageNinja الأولي لاستخدام تجزئات عنوان البريد الإلكتروني MD5 للتفويض، يخبرني هذا أنه ربما حان الوقت لتدقيق خارجي لقاعدة الكود.
  • يجب عليهم نشر ملف security.txt (RFC 9116) حتى يتمكن باحثو الأمن من الاتصال بمطوريهم مباشرة. لقد فاتتهم أيام تخفيف مهمة حيث اضطررت للإبلاغ عن الثغرة عبر قسم دعم العملاء، والذي رفض تقرير الثغرة بشكل غير صحيح في البداية.
  • يجب عليهم إنشاء إجراء أفضل لتصحيح الثغرات في الوقت المناسب. يجب معالجة ثغرة سهلة التصحيح مثل هذه في غضون 30 يومًا. عدم وجود تصحيح جاهز خلال فترة الإفصاح المسؤول البالغة 90 يومًا أمر غير مقبول.
  • يجب عليهم دائمًا الإفصاح عن الثغرات التي تمت معالجتها وتحسينات الأمان المنفذة في سجلات التغييرات الخاصة بهم حتى يعرف عملاؤهم مدى أهمية التحديثات.

ومع ذلك، لا يزال لدي ثقة في WPManageNinja. هناك أخطاء في جميع البرامج، وتقرير ثغرة واحد سيئ الإدارة ليس سببًا للتوقف عن استخدام إضافاتهم.

تحديث 2023-06-12: حقيقة أنهم ما زالوا يحاولون إخفاء الثغرة في سجل التغييرات يجعلني قلقًا حقًا. (لقد أضافوا الآن CVE.)

سجل التغييرات

  • 2023-06-12 النشر الأولي.
  • 2023-06-12 تم التحديث بمعلومات حول توفر التصحيح وتفاصيل الاستغلال المحجوبة سابقًا.
  • 2023-06-12 تمت الإضافة إلى الجدول الزمني: WPManageNinja تضيف معلومات حول CVE إلى سجل تغييرات الإضافة.
  • 2023-06-12 تم إصلاح الأخطاء الإملائية. تم رفع CVSS إلى 6.5 بواسطة Wordfence.
  • 2024-01-27 تمت إضافة معلومات حول كيفية معالجة FluentCRM 2.8.40 و 2.8.41 للمشكلة الثانوية ذات الصلة بقيم التجزئة الدائمة.
تنزيل الأداة
  • 2024-01-27 اعتبرت المشكلة الثانوية ذات الصلة بقيم التجزئة الدائمة قد تمت معالجتها.