إساءة استخدام Forgot_password

لدي مستخدم يتعرض لهجوم من شخص أو سكريبت يقوم باستدعاء نقطة نهاية ‘نسيت كلمة المرور’ مرات عديدة يوميًا باستخدام بريده الإلكتروني. يحدث هذا منذ عدة أيام. وبما أن هذه العملية ترسل رسائل بريد إلكتروني، فقد تكون أيضًا إساءة استخدام للنظام. من خلال سجل الوصول في nginx، تمكنت من تتبع عنوان IP لبعض هذه الأوقات إلى مستخدم آخر على النظام، وأرسلت رسالة تحذير، لكن ذلك قد لا يكون مفيدًا. كما أضفت عنوان IP هذا إلى ‘الإدارة > السجلات > عناوين IP المحجوبة’؛ ومع ذلك، لست متأكدًا من تأثير ذلك سوى منع تسجيل الدخول مؤقتًا. يمكن لعنوان IP أن يتغير وقد تغير بالفعل، ومن المرجح أنه عنوان ديناميكي، لكن قد يقوم شخص ما أيضًا بتفعيل شبكة VPN والبدء من جديد.

هل لدى أي شخص اقتراح حول كيفية التعامل مع هذا الموقف؟

إعجابَين (2)

مرحبًا دان، إذا لم يكن ذلك يُزعجك، لديّ سؤالان أولاً:

  1. هل قمت بتعليق المستخدم؟
  2. هل تسمح لأي شخص بإنشاء حساب أم أنك توافق على جميع الحسابات الجديدة؟

يمكنك تعليق المستخدم بالانتقال إلى admin/users/list/active والنقر على اسم المستخدم المخالف. بمجرد الدخول إلى صفحة معلوماته/ها، انتقل لأسفل إلى الأذونات وانقر على تعليق. تأكد من أن المستخدم قد سجل الخروج، لأن التعليق قد لا يُفعّل إلا بعد تسجيل خروجه. وإذا كان لا يزال مسجّل الدخول، فهناك مربع أزرق في أعلى يمين هذه الصفحة نفسها يسمح لك بتسجيل خروجه بنفسك. بمجرد تسجيل خروجه، لن يتمكن من الدخول مرة أخرى باستخدام بيانات الدخول القديمة.

إذا كنت توافق على الحسابات الجديدة - واستمرّ “المذنب” في ارتكابه للمخالفة (و أنت متأكد من هويته) - فسيضطر المستخدم إلى الانتظار حتى أنت توافق على حسابه. ونظرًا لأنك تملك بالفعل عنوانًا واحدًا (أو أكثر؟) من عناوين IP التي استخدمها، فأي مستخدم جديد يظهر بنفس عنوان IP ستعرف ما يجب فعله. :wink:
يمكنك أيضًا زيارة تفضيلات المستخدم، ومن تحت الحساب، عرض الأجهزة التي استخدمها مؤخرًا، والتي يجب أن تُظهر أيضًا عنوان (عناوين) IP التي استخدمها لتسجيل الدخول. وقد يمنحك ذلك عناوين IP إضافية للتصفية.

هنا يأتي دور الحاجة إلى موافقة الحسابات كإجراء مفيد.

:thinking: كيف تمكّن هذا الشخص من الوصول إلى ملف المستخدم الآخر لطلب إعادة تعيين كلمة المرور في المقام الأول؟ هذا هو السؤال المهم.

إعجابَين (2)

من خلال زيارة صفحة “نسيت كلمة المرور” وإدخال عنوان البريد الإلكتروني الخاص بهم. يمكن لأي شخص فعل ذلك لأي مستخدم.

إعجابَين (2)

كم مرة بالضبط في اليوم؟

إعجابَين (2)

حسنًا، كلمة “كثير” نسبية.

root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log
214
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.1
147
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.2.gz
181
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.3.gz
140
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.4.gz
134
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.5.gz
251
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.6.gz
110
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.7.gz
100
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.8.gz
gzip: access.log.8.gz: لا يوجد ملف أو دليل
0
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.9.gz 
1
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.10.gz 
0
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.11.gz 
0
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.12.gz 
0
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.13.gz 
0
root@forum-app:/var/log/nginx# zgrep -c forgot_password access.log.14.gz 
0

من الواضح أن هذا البحث لا يستبعد الطلبات المشروعة. قمت بمراجعة يدوية ليوم أمس واليوم ورأيت بعض الطلبات المشروعة (ليست من عنوان IP مكرر). الغالبية العظمى من الطلبات تأتي من عنوان IP مكرر يتغير كل بضعة أيام. الوضع ليس سيئًا جدًا على النظام، لكنه مؤثر على المستخدم المستلم. أعتقد أن الشيء الوحيد الذي يمكنني فعله هو إعداد nginx لرفض الطلبات بناءً على عنوان IP، ولكن نظرًا لتغير العنوان… ربما إذا قمت بالتحقق منه وتحديثه يدويًا لمدة أسبوع أو أسبوعين سيتوقف الشخص عن المحاولة، ولكن ربما لفترة قصيرة فقط. يقول الضحية أن هذا حدث له لأول مرة منذ حوالي 1.5 سنة.

3 إعجابات

من المؤكد أن الأمر مزعج إذا قرر شخص ما تفعيل خيار “نسيت كلمة المرور” مرارًا وتكرارًا نيابةً عنك .. لكننا لا نستطيع منع المستخدم من إعادة تعيين كلمة المرور بناءً على ذلك، لأن منع شخص ما من إعادة تعيين كلمة المرور يُعد أيضًا نوعًا من المضايقة. :thinking:

أعتقد أن لدينا حدًا للسرعة هنا بمعدل عدة مرات في الدقيقة، هل يمكنك مراجعة مسار هذا الكود @riking والتأكد من أنه لا يزال يعمل؟ يمكننا زيادته، لكن ذلك لا يمكن أن يغطي بأمان “بضع مرات في اليوم”.

أيضًا، حظر عنوان IP عبر لوحة الإدارة، والسجلات، وعناوين IP المحظورة يجب أن يمنع هذا العنوان من طلب إعادة تعيين كلمة المرور، أعتقد ذلك، وينبغي علينا أيضًا التحقق من أن هذا يعمل كما هو متوقع @riking.

10 إعجابات

أنا من يتعرض للرسائل الوهمية المتكررة.
يحدث ذلك عدة مرات في الساعة

لا توجد خيار لتجنب إرسال بريد إلكتروني إلي لإعادة تعيين كلمة المرور، رغم أنني أستخدم المصادقة الثنائية مع مفاتيح إعادة التعيين.

بعض المواقع التي زرتها تعرض عنوان IP الخاص بك حتى قبل أن تطلب إعادة تعيين كلمة المرور، موضحة أنه سيتم إرسالها إلى بريدك الإلكتروني.

كل هذا مجرد إزعاج طفيف لأنني نادرًا ما أتحقق من هذا البريد الإلكتروني لأي شيء. جميع الرسائل يتم تصفيتها وتعيينها على “تحديد الرسالة كمقروءة” حتى لا تظهر وكأنه يجب علي قراءتها. قمت بإعداد الفلتر في يناير، وفقط اليوم نظرت إلى المجلد (التسمية في Gmail).

3 إعجابات

الصورة التي لم أتمكن من تضمينها في الرد الأول.
عندما يستقبل Gmail أكثر من رسالة بنفس الموضوع، يقوم بتجميعها.
أظن أنه بعد 100 رسالة متطابقة، ينتقل ببساطة إلى الرسائل الـ 100 التالية.

5 إعجابات

معلومات جيدة. دعنا نجري بعض التقدم في هذا غدًا @riking

6 إعجابات

حلاً بسيطاً يمكنك اتخاذه هو تغيير بريدك الإلكتروني من test@gmail.com إلى test+SOMESECRETONLYYOUKNOW@gmail.com.

ستصل رسائل Discourse إلى حساب Gmail المعتاد لديك، لكن لن يتمكن أحد من طلب إعادة تعيين كلمة المرور لك، ولن يستطيع أحد تخمين تجزئة آمنة.

أعتقد أن هذا عملياً هو أفضل إجراء في هذه الحالة.

حتى لو قمنا بتقييد المعدل إلى مرة واحدة في الأسبوع، فسيظل ذلك مزعجاً. لكن باستخدام عناوين + ستقضي على مشكلتك تماماً.

12 إعجابًا

يمكننا تحديد معدل الطلبات لـ مستخدم معين بالإضافة إلى الطلبات من مكان معين (وهو حد نلاحظ أنه يعمل بشكل جيد للغاية في الوقت الحالي). هل يمكننا منح المستخدمين ما يصل إلى 2 رموز إعادة تعيين غير منتهية الصلاحية قبل أن نقول لهم: “يرجى مجرد الانتظار حتى تصلك الرسالة الإلكترونية”؟

6 إعجابات

يمكن أن تكون هناك طريقة أخرى تتمثل في تحديد مهلة لرسائل إعادة تعيين كلمة المرور، على سبيل المثال، 3 ساعات بين الرموز. في هذه الحالة، إذا طُلبت رسالة إعادة تعيين كلمة المرور قبل انتهاء فترة التبريد، يمكن عرض رسالة بسيطة: “لقد قمنا بالفعل بإرسال رسالة إعادة تعيين كلمة المرور، يرجى التحقق من صندوق الوارد الخاص بك. إذا لم تصل الرسالة خلال الساعتين التاليتين، اتصل بمسؤول الموقع للمساعدة عبر %contact_email%”.

إعجابَين (2)

لقد غيّرت البريد الإلكتروني في المنتدى إلى ‘email+something@gmail.com’، وقمت باختبار الأمر باستخدام وضع التصفح المتخفي في متصفح آخر. ومع ذلك، تمكنت من الدخول. ربما لأن الطلب يُرسل دائمًا باستخدام اسم المستخدم فقط، وليس عنوان البريد الإلكتروني الفعلي.

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

لو كان هناك خيار لسؤال أمني (يمكن تفعيله على مستوى المستخدم)، فأنا متأكد من أنه سيقلل من جميع الطلبات، لأن المتصيّن لن يعرف الإجابة ببساطة. مثل: “ما هو فيلمك المفضل؟” أو “ما هو مطعمك المفضل؟”.

شكرًا لكم جميعًا على ردودكم السريعة في محاولة حل هذه المشكلة، والتي للأسف تبدو أنها الأولى، ونأمل أن تكون الأخيرة.

3 إعجابات

أظن أن المشكلة تكمن في إمكانية استكشاف المنتدى لجلب أسماء المستخدمين ثم شن هجوم “نسيت كلمة المرور” بشكل متكرر.

ربما نضيف وضعًا يتطلب إدخال البريد الإلكتروني بدقة للحصول على وظيفة “نسيت كلمة المرور”، ونجعل هذا الوضع صارمًا ومفعلًا افتراضيًا؟

أشعر أن حتى التعرض لهذا النوع من الهجمات مرة واحدة أسبوعيًا هو أمر مفرط، ولا يمكننا الاعتماد على تحديد المعدل لحل هذه المشكلة.

11 إعجابًا

هل توجد طريقة لتقديم إعادة تعيين “مجانية” واحدة أو اثنتين أولاً، قبل فرض الإدخال الدقيق، ضمن فترة زمنية محددة؟ أم ربما إضافة شرط الإدخال الدقيق لحساب معين فقط بعد عدد معين من عمليات إعادة التعيين، ولكن بشكل تلقائي وعالمي؟ :thinking:

بعضنا فعليًا لا يعرف حتى ما هو اليوم، ناهيك عن تذكر بريدنا الإلكتروني الدقيق بسهولة ودون فشل.

:crossed_fingers: @Chinaski، آمل أن يتم حل مشكلتك بسرعة وفي النهاية.

8 إعجابات

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

إعجابَين (2)

مع وجود آلاف المستخدمين النشطين (ما زلنا في عملية الترحيل إلى Discourse)، أشعر بألمك. يحدث هذا الأمر بشكل متكرر، حيث ينسى الناس البريد الإلكتروني الذي استخدموه وما إلى ذلك، وقد كان هذا أحد أعلى طلبات الدعم لدينا على مر السنين، الأمر جنوني.

إعجابَين (2)

إن اشتراط إدخال البريد الإلكتروني لاستعادة كلمة المرور لن يكون مطلقًا خيارًا افتراضيًا من هذا القبيل.

ولكن إذا كان المنتدى تحت حصار كما في حالة الموضوع الأصلي، فقد يكون ذلك مجرد تبديل يمكنك تفعيله لبضعة أسابيع للقضاء على هذه القرصنة المزعجة.

5 إعجابات

بناءً على

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

كما اتبعت نصيحة @riking هنا، ونحن نحترم عناوين البريد الإلكتروني المحجوبة، لذا إذا قمت بحظر عنوان IP كمسؤول، فلن يتمكن هذا العنوان من المشاركة في هذه اللعبة بعد الآن.

إغفال كبير هنا @riking يمكن أن يساعد في العلاج الذاتي إلى حد ما وهو أن رسالة البريد الإلكتروني الخاصة بـ “إعادة تعيين كلمة المرور” لا تتضمن عنوان IP للشخص الذي بدأ العملية:

@codinghorror ما رأيك في إضافة عنوان IP للمبادر في رسائل البريد الإلكتروني الخاصة بإعادة تعيين كلمة المرور (يمكننا حتى إخفائه قليلاً)، فهذا سيسمح بعلاج ذاتي أفضل بكثير.

تتعرض جين للهجوم
تبلغ جين مسؤول الموقع بأن عنوان 12.12.12.12 يقوم بإعادة تعيين كلمات المرور باستمرار
يقوم المسؤول بحظر عنوان 12.12.12.12

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

تستخدم فيسبوك هذه الحيلة، وأنا أؤيد إلى حد ما تطبيقها:

هذا يسمح لهم بتجنب تضمين عناوين IP في البريد الإلكتروني، حيث يتتبعونها فقط من جانب الخادم، والرابط يحتوي على معرف في قاعدة البيانات. وهذا يعني أنه يمكن أن يصبح عملية بنقرة واحدة لحظر المسيء.

للتوضيح، تتطلب فيسبوك البريد الإلكتروني لإعادة تعيين كلمة المرور (حتى لا يكون لديهم إعادة تعيين كلمة المرور بالمعنى التقليدي، بل هو ببساطة تسجيل الدخول عبر البريد الإلكتروني)

10 إعجابات

لقد راجعت 100 طلب وهمي ووجدت نمطًا محتملًا لاستخدام سكريبت. هذا النمط متسق عبر الـ 100 طلب وهمي في مجموعة واحدة ضمن Gmail.

3 إعجابات